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


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

17.1.2 InnoDB 表的最佳實務

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

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

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

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

  • 透過用 START TRANSACTIONCOMMIT 陳述式將相關的 DML 操作組括起來,將這些 DML 操作分組到交易中。雖然您不希望提交頻率過高,但您也不希望發出大量 INSERTUPDATEDELETE 陳述式,這些陳述式執行數小時而未提交。

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

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

  • 評估您的資料和存取模式是否會從 InnoDB 表格或頁面壓縮功能中受益。您可以壓縮 InnoDB 表格,而不會犧牲讀/寫能力。

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