MySQL 9.0 版本注意事項
本節說明使用 InnoDB
表時的最佳實務。
使用最常查詢的欄或欄位為每個表格指定主鍵,如果沒有明顯的主鍵,則使用自動遞增值。
在根據這些表格中相同的 ID 值從多個表格提取資料時,請盡可能使用聯結。為了獲得快速的聯結效能,請在聯結欄位上定義外鍵,並在每個表格中宣告這些欄位使用相同的資料類型。新增外鍵可確保參考的欄位已建立索引,這可以提高效能。外鍵還會將刪除和更新傳播到所有受影響的表格,並防止在子表格中插入資料,如果父表格中不存在對應的 ID。
關閉自動提交。每秒提交數百次會限制效能(受限於儲存裝置的寫入速度)。
透過用
START TRANSACTION
和COMMIT
陳述式將相關的 DML 操作組括起來,將這些 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
選項執行伺服器,以防止使用您不想使用的儲存引擎建立表格。