MySQL 8.4 版本資訊
本節說明使用 InnoDB
表的最佳實務。
為每個表指定主鍵,使用最常查詢的欄或欄位,如果沒有明顯的主鍵,則使用自動遞增值。
只要資料是根據來自這些表中的相同 ID 值從多個表提取時,請使用聯結。為了快速聯結效能,請在聯結欄上定義外部鍵,並在每個表中以相同的資料類型宣告這些欄。新增外部鍵可確保參考的欄已建立索引,這可以改善效能。外部鍵也會將刪除和更新傳播到所有受影響的表,並防止在父表中不存在對應 ID 時,在子表中插入資料。
關閉自動提交。每秒提交數百次會限制效能(受限於您的儲存裝置的寫入速度)。
使用
START TRANSACTION
和COMMIT
陳述式將相關 DML 操作組群到交易中。雖然您不想太頻繁地提交,但您也不希望發出在沒有提交的情況下執行數小時的大量INSERT
、UPDATE
或DELETE
陳述式。請勿使用
LOCK TABLES
陳述式。InnoDB
可以處理多個工作階段,同時讀取和寫入同一個表,而不會犧牲可靠性或高效能。若要取得一組列的獨佔寫入存取權,請使用SELECT ... FOR UPDATE
語法來僅鎖定您打算更新的列。啟用
innodb_file_per_table
變數或使用一般表空間,將表的資料和索引放入單獨的檔案中,而不是系統表空間。innodb_file_per_table
變數預設為啟用。評估您的資料和存取模式是否受益於
InnoDB
表或頁面壓縮功能。您可以在不犧牲讀/寫功能的情況下壓縮InnoDB
表。使用
--sql_mode=NO_ENGINE_SUBSTITUTION
選項執行伺服器,以防止使用您不想使用的儲存引擎建立表。