文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 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 參考手冊  /  InnoDB 儲存引擎  /  InnoDB 限制

17.21 InnoDB 限制

本節說明 InnoDB 資料表、索引、資料表空間以及 InnoDB 儲存引擎其他方面的限制。

  • 一個資料表最多可以包含 1017 個欄位。虛擬產生的欄位也包含在此限制中。

  • 一個資料表最多可以包含 64 個次要索引

  • 對於使用 DYNAMICCOMPRESSED 列格式的 InnoDB 資料表,索引鍵首碼長度限制為 3072 位元組。

    對於使用 REDUNDANTCOMPACT 列格式的 InnoDB 資料表,索引鍵首碼長度限制為 767 位元組。例如,假設 utf8mb4 字元集和每個字元最大 4 個位元組,則您可能會在 TEXTVARCHAR 欄位上超過 191 個字元的欄位首碼索引中達到此限制。

    嘗試使用超過限制的索引鍵首碼長度會傳回錯誤。

    如果您在建立 MySQL 實例時,透過指定 innodb_page_size 選項將 InnoDB 頁面大小縮減為 8KB 或 4KB,則索引鍵的最大長度會根據 16KB 頁面大小的 3072 位元組限制成比例地降低。也就是說,當頁面大小為 8KB 時,索引鍵的最大長度為 1536 位元組,而當頁面大小為 4KB 時,索引鍵的最大長度為 768 位元組。

    適用於索引鍵首碼的限制也適用於完整欄位索引鍵。

  • 多欄位索引最多允許 16 個欄位。超出限制會傳回錯誤。

    ERROR 1070 (42000): Too many key parts specified; max 16 parts allowed
  • 最大資料列大小(不包括任何儲存在頁面外的可變長度欄位)對於 4KB、8KB、16KB 和 32KB 的頁面大小略小於頁面的一半。例如,預設 innodb_page_size 為 16KB 的最大資料列大小約為 8000 位元組。但是,對於 64KB 的 InnoDB 頁面大小,最大資料列大小約為 16000 位元組。LONGBLOBLONGTEXT 欄位必須小於 4GB,並且包括 BLOBTEXT 欄位的總資料列大小必須小於 4GB。

    如果一列的長度小於半頁,則會將整列資料儲存在頁面內。如果超過半頁,則會選擇可變長度的欄位進行外部頁外儲存,直到該列符合半頁大小,如第 17.11.2 節「檔案空間管理」所述。

  • 儘管 InnoDB 內部支援大於 65,535 位元組的列大小,MySQL 本身對所有欄位的組合大小施加了 65,535 的列大小限制。請參閱第 10.4.7 節「資料表欄位計數和列大小限制」

  • 最大資料表或資料表空間大小會受到伺服器檔案系統的影響,檔案系統可能會施加小於 InnoDB 所定義的內部 64 TiB 大小限制的最大檔案大小。例如,Linux 上的 ext4 檔案系統的最大檔案大小為 16 TiB,因此最大資料表或資料表空間大小會變成 16 TiB 而非 64 TiB。另一個範例是 FAT32 檔案系統,其最大檔案大小為 4 GB。

    如果您需要更大的系統資料表空間,請使用數個較小的資料檔案而非一個大型資料檔案來設定,或將資料表資料分散到每個資料表的檔案和一般資料表空間資料檔案中。

  • InnoDB 日誌檔的組合最大大小為 512GB。

  • 最小資料表空間大小略大於 10MB。最大資料表空間大小取決於 InnoDB 頁面大小。

    表 17.26 InnoDB 最大資料表空間大小

    InnoDB 頁面大小 最大資料表空間大小
    4KB 16TB
    8KB 32TB
    16KB 64TB
    32KB 128TB
    64KB 256TB

    最大資料表空間大小也是資料表的最大大小。

  • 一個 InnoDB 執行個體最多支援 2^32 (4294967296) 個資料表空間,其中少量資料表空間會保留給還原和暫存資料表。

  • 共用資料表空間最多支援 2^32 (4294967296) 個資料表。

  • 資料表空間檔案的路徑(包括檔案名稱)不得超過 Windows 上的 MAX_PATH 限制。在 Windows 10 之前,MAX_PATH 限制為 260 個字元。自 Windows 10 版本 1607 起,常見 Win32 檔案和目錄函式移除了 MAX_PATH 限制,但您必須啟用新的行為。

  • 如需與並行讀寫交易相關的限制,請參閱第 17.6.6 節「還原日誌」