文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手冊頁 (TGZ) - 258.5Kb
手冊頁 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  InnoDB 表的最佳實務

17.1.2 InnoDB 表的最佳實務

本節說明使用 InnoDB 表的最佳實務。

  • 為每個表指定主鍵,使用最常查詢的欄或欄位,如果沒有明顯的主鍵,則使用自動遞增值。

  • 只要資料是根據來自這些表中的相同 ID 值從多個表提取時,請使用聯結。為了快速聯結效能,請在聯結欄上定義外部鍵,並在每個表中以相同的資料類型宣告這些欄。新增外部鍵可確保參考的欄已建立索引,這可以改善效能。外部鍵也會將刪除和更新傳播到所有受影響的表,並防止在父表中不存在對應 ID 時,在子表中插入資料。

  • 關閉自動提交。每秒提交數百次會限制效能(受限於您的儲存裝置的寫入速度)。

  • 使用 START TRANSACTIONCOMMIT 陳述式將相關 DML 操作組群到交易中。雖然您不想太頻繁地提交,但您也不希望發出在沒有提交的情況下執行數小時的大量 INSERTUPDATEDELETE 陳述式。

  • 請勿使用 LOCK TABLES 陳述式。InnoDB 可以處理多個工作階段,同時讀取和寫入同一個表,而不會犧牲可靠性或高效能。若要取得一組列的獨佔寫入存取權,請使用 SELECT ... FOR UPDATE 語法來僅鎖定您打算更新的列。

  • 啟用 innodb_file_per_table 變數或使用一般表空間,將表的資料和索引放入單獨的檔案中,而不是系統表空間。innodb_file_per_table 變數預設為啟用。

  • 評估您的資料和存取模式是否受益於 InnoDB 表或頁面壓縮功能。您可以在不犧牲讀/寫功能的情況下壓縮 InnoDB 表。

  • 使用 --sql_mode=NO_ENGINE_SUBSTITUTION 選項執行伺服器,以防止使用您不想使用的儲存引擎建立表。