本文介紹innodb和myisam兩種儲存引擎的i/o相關引數配置。
1.innodb i/o相關配置
innodb是一種事務型的儲存引擎,為了減少提交事務時產生的io開銷,innodb採用了寫日誌的方式,也就是在事務提交的時候會先寫入事務日誌中 ,而不是每次都把修改或者資料重新整理到資料檔案中,這樣做是為了提高io的效能,因為事務的修改,使資料和索引檔案通常都會對映到表空間隨機的位置,所以重新整理資料變更到資料檔案會產生大量隨機io,而記錄日誌是順序io,一旦事務日誌安全的寫到磁碟中,資料就算是持久化了,即使變更還沒有寫入到資料檔案,如果這時候伺服器宕機了,這樣的情況我們還是可以使用事務日誌來恢復已經提交的事務。以下是一些innodb儲存引擎相關的配置引數:
innodb_log_file_size : 控制單個事務日誌檔案的大小(如果業務繁忙可以設定大一些,一般可以記錄業務乙個小時產生事務的日誌);
innodb_log_files_in_group : 控制事務日誌檔案的個數 ;
事務日誌並不是每次提交都直接寫入日誌檔案中的,而是先寫入到事務日誌的緩衝區,然後再重新整理到磁碟中。innodb_log_buffer_size控制事務日誌緩衝區的大小,通常不需要把日誌緩衝區設定得非常大,因為一般情況下至少一秒鐘,就會進行一次事務日誌快取的重新整理,所以這個緩衝區只要可以儲存至少一秒鐘的事務就足夠了,當然稍微大一些也沒有什麼壞處,通常來說32m~128m這樣的配置就可以了。
所以 , 事務日誌的總大小 = innodb_log_files_in_group * innodb_log_file_size 。
innodb_flush_log_at_trx_commit 將log重新整理到磁碟的配置,有三種選項 :
(1)0:每秒鐘進行一次log寫入作業系統cache,並flush log到磁碟(在事務提交時候並不會做任何事情,這個設定在mysql崩潰時會至少丟失一秒鐘的事務);
(2)1[預設]:在每次事務提交執行log寫入cache,並fulsh log到磁碟(這是最安全的設定,不會丟失任何事務,但是效能並不理想) ;
(3)2[建議]:每次事務提交,執行log資料寫入到cache,每秒鐘執行一次flush log到磁碟。(完成事務持久化分為兩步 :首先從mysql日誌緩衝區重新整理到作業系統的cache,然後從作業系統的cache重新整理到磁碟);
2.myisam i/o相關配置
delay_key_write : off 每次寫操作後重新整理鍵緩衝中的髒塊到磁碟;
on 只對在鍵表時指定了delay_key_write選項的表使用延遲重新整理;
all 對所有的myisam表都使用延遲鍵寫入;
mysql配置優化 MySQL配置效能優化
下面配置的優化,可能影響比較大,可能可以顯著提高讀寫效能。1 mysql一些主要配置項介紹 innodb buffer pool size 這是你安裝完innodb後第乙個應該設定的選項。緩衝池是資料和索引快取的地方 這個值越大越好,這能保證你在大多數的讀取操作時使用的是記憶體而不是硬碟。如果是純資...
IO效能相關
網絡卡效能優化方案 繫結中斷 至特定cpu 減少介面屬性設定 資料報打入cpu標籤,提公升快取命中 磁碟隨機讀寫優化方案 批量讀寫 尋道更快 轉速更高的硬碟 記憶體作為快取 ssdraid 磁碟順序讀寫優化方案 raid ssdiops 每秒執行的io次數 bw 頻寬,每秒的吞吐量 lat 每次io...
效能優化CPU 記憶體 磁碟I O 網路效能相關命令
系統優化是一項複雜 繁瑣 長期的工作,優化前需要監測 採集 測試 評估,優化後也需要測試 採集 評估 監測,而且是乙個長期和持續的過程,不 是說現在優化了,測試了,以後就可以一勞永逸了,也不是說書本上的優化就適合眼下正在執行的系統,不同的系統 不同的硬體 不同的應用優化的重點也不同 優化的方法也不同...