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


MySQL 8.4 參考手冊  /  ...  /  並行插入

10.11.3 並行插入

MyISAM 儲存引擎支援並行插入,以減少讀取器和寫入器針對給定資料表的競爭:如果 MyISAM 資料表的資料檔中沒有空洞(中間有已刪除的列),則可以執行 INSERT 語句,同時在 SELECT 語句從資料表讀取列時,將列新增到資料表的末尾。如果有多個 INSERT 語句,它們會排隊並依序執行,同時與 SELECT 語句並行執行。並行 INSERT 的結果可能不會立即顯示。

可以設定 concurrent_insert 系統變數來修改並行插入處理。預設情況下,變數設定為 AUTO (或 1),並且並行插入會按照剛才描述的方式處理。如果 concurrent_insert 設定為 NEVER (或 0),則會停用並行插入。如果變數設定為 ALWAYS (或 2),則即使對於具有已刪除列的資料表,也允許在資料表末尾進行並行插入。另請參閱 concurrent_insert 系統變數的說明。

如果您正在使用二進位記錄檔,則對於 CREATE ... SELECTINSERT ... SELECT 語句,並行插入會轉換為正常插入。這樣做是為了確保您可以在備份操作期間,透過套用記錄檔來重新建立資料表的精確複本。請參閱 第 7.4.4 節,「二進位記錄檔」。此外,對於這些語句,會在選取的資料表上放置讀取鎖定,以便封鎖對該資料表的插入。這樣做的效果是,該資料表的並行插入也必須等待。

使用 LOAD DATA 時,如果您為符合並行插入條件 (亦即,中間沒有空閒區塊) 的 MyISAM 表格指定 CONCURRENT,則其他工作階段可以在 LOAD DATA 執行時從該表格擷取資料。即使沒有其他工作階段同時使用該表格,使用 CONCURRENT 選項也會稍微影響 LOAD DATA 的效能。

如果您指定 HIGH_PRIORITY,它會覆寫伺服器啟動時所使用的 --low-priority-updates 選項的效果。它也會導致不使用並行插入。

對於 LOCK TABLEREAD LOCALREAD 之間的差異在於,READ LOCAL 允許在鎖定保持時執行不衝突的 INSERT 陳述式 (並行插入)。然而,如果您在持有鎖定的同時要使用伺服器外部的程序來操作資料庫,則無法使用此選項。