文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式 Letter) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  資料表大小限制

10.4.6 資料表大小限制

MySQL 資料庫的有效最大資料表大小通常取決於作業系統對檔案大小的限制,而不是 MySQL 的內部限制。如需有關作業系統檔案大小限制的最新資訊,請參閱特定於您作業系統的文件。

Windows 使用者請注意,FAT 和 VFAT (FAT32) 不適合在 MySQL 生產環境中使用。請改用 NTFS。

如果您遇到資料表已滿錯誤,可能有幾個原因導致此錯誤

  • 磁碟可能已滿。

  • 您正在使用 InnoDB 資料表,且 InnoDB 表格空間檔案中的空間已用完。最大表格空間大小也是資料表的最大大小。有關表格空間大小限制,請參閱第 17.21 節「InnoDB 限制」

    一般而言,建議將大於 1TB 的資料表分割為多個表格空間檔案。

  • 您已達到作業系統的檔案大小限制。例如,您正在使用支援最大 2GB 檔案的作業系統上的 MyISAM 資料表,並且資料檔案或索引檔案已達到此限制。

  • 您正在使用 MyISAM 資料表,且資料表所需的空間超過內部指標大小允許的大小。MyISAM 預設允許資料和索引檔案成長到 256TB,但此限制可以變更為最大允許大小 65,536TB (2567 − 1 位元組)。

    如果您需要的 MyISAM 資料表大於預設限制,且您的作業系統支援大型檔案,則 CREATE TABLE 陳述式支援 AVG_ROW_LENGTHMAX_ROWS 選項。請參閱第 15.1.20 節「CREATE TABLE 陳述式」。伺服器會使用這些選項來判斷允許的資料表大小。

    如果指標大小對於現有資料表而言太小,您可以使用 ALTER TABLE 變更選項以增加資料表的最大允許大小。請參閱第 15.1.9 節「ALTER TABLE 陳述式」

    ALTER TABLE tbl_name MAX_ROWS=1000000000 AVG_ROW_LENGTH=nnn;

    只有當表格中包含 BLOBTEXT 欄位時,才需要指定 AVG_ROW_LENGTH;在這種情況下,MySQL 無法僅根據列數來最佳化所需的空間。

    若要變更 MyISAM 表格的預設大小限制,請設定 myisam_data_pointer_size,此設定會決定內部列指標所使用的位元組數。如果您沒有指定 MAX_ROWS 選項,則會使用此值來設定新表格的指標大小。myisam_data_pointer_size 的值介於 2 到 7 之間。例如,對於使用動態儲存格式的表格,值為 4 可允許表格的最大大小為 4GB;值為 6 可允許表格的最大大小為 256TB。使用固定儲存格式的表格則具有更大的最大資料長度。有關儲存格式的特性,請參閱第 18.2.3 節,「MyISAM 表格儲存格式」

    您可以使用此語句來檢查最大資料和索引大小

    SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';

    您也可以使用 myisamchk -dv /路徑/到/表格索引檔案。請參閱第 15.7.7 節,「SHOW 語句」,或第 6.6.4 節,「myisamchk — MyISAM 表格維護公用程式」

    以下是解決 MyISAM 表格檔案大小限制的其他方法

  • 您正在使用 MEMORYHEAP)儲存引擎;在這種情況下,您需要增加 max_heap_table_size 系統變數的值。請參閱第 7.1.8 節,「伺服器系統變數」