本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
支援的執行個體類型 (含支援的磁碟區) 預設啟用預防未完成的寫入。您不需要啟用任何其他設定,即可啟用磁碟區或執行個體,進而預防未完成的寫入。
注意
不會對不支援預防未完成的寫入的工作負載造成效能影響。您不需要為這些工作負載進行任何變更。
確實支援預防未完成的寫入,但未設定為使用它的工作負載,會繼續使用雙寫緩衝區,而且不會獲得任何效能優勢。
若要設定 MySQL 或 MariaDB 軟體堆疊以停用雙寫緩衝區,並使用預防未完成的寫入,請完成以下步驟:
-
將磁碟區設定為搭配 BigAlloc 選項使用 ext4 檔案系統,並將叢集大小設定為 4 KiB、8 KiB 或 16 KiB。搭配使用 BigAlloc 與大小為 4 KiB、8 KiB 或 16 KiB 的叢集,可確保檔案系統分配檔案與各自邊界相符。
$
mkfs.ext4 -O bigalloc -C4096|8192|16384
device_name
注意
對於 MySQL 和 MariaDB,您必須使用
-C 16384
來比對資料庫頁面大小。將分配精密度設定為頁面大小倍數以外的值,可能會導致分配與儲存裝置的預防未完成的寫入邊界不符。例如:
$
mkfs.ext4 -O bigalloc -C 16384 /dev/nvme1n1 -
將 InnoDB 設定為使用
0_DIRECT
排清方法並關閉 InnoDB 雙寫。使用您偏好的文字編輯器開啟/etc/my.cnf
,並更新innodb_flush_method
和innodb_doublewrite
參數,如下所示:innodb_flush_method=O_DIRECT innodb_doublewrite=0
重要
如果您使用的是邏輯磁碟區管理工具 (LVM) 或其他儲存虛擬化層,請確定磁碟區的起始位移與 16 KiB 倍數相符。這與基礎 NVMe 儲存體相關,可用來說明儲存虛擬化層所使用的中繼資料標題和超級區塊。如果您新增 LVM 實體磁碟區的位移,可能會導致檔案系統分配與 NVMe 裝置的位移不相符,而這會使預防未完成的寫入失效。如需詳細資訊,請參閱 Linux 手冊頁面--dataalignmentoffset
。