萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> Mysql服務器安裝後my.ini配置優化

Mysql服務器安裝後my.ini配置優化

本文章來給各位同學介紹關於Mysql服務器安裝後my.ini配置優化,希望有需要了解的同不進入參考。

Mysql服務器安裝完後的參數調整以及如何優化Mysql性能,直接使用默認的my.cnf參數,當然在大多數情況下是沒有問題的。想要通過調整參數獲得性能上的提升以及資源的合理利用,請關注下面這幾個參數:

key_buffer_size
這個參數對於MyISAM引擎來說是非常重要的,如果你的服務器主要是用MyISAM引擎的,建議將該值設置為內存的30%-40%.很多優化工具是把系統當前的索引總大小計算得出的一個值,需要注意的是該值只緩存索引數據,而MyISAM使用操作系統頁面緩存來緩存元數據,所以你要預留出足夠的內存空間給OS級緩存,當然這個指不是越大越好,一般如果索引將近1G的時候可以分配4G左右的key_buffer_size,再多就浪費了,如果你的數據庫只是少量的表使用到MyISAM可以將該值保持在16-32M,看情況增加該值,一旦索引數據超出你的設定值Mysql將會在磁盤上創建臨時表來滿足它的需求。

innodb_buffer_pool_size
這個參數對於InnoDB引擎是相當重要的,跟MyISAM引擎的key_buffer_size相比InnoDB對這個參數可謂敏感的多,即便key_buffer_size設置錯了也無傷大雅,MyISAM還是能正常工作,InnoDB可比它難伺候多了,主要是因為InnoDB把數據和索引緩存都放在了Buffer Pool,可以盡可能的大,比如總空余內存的70-80%。Mysql會自動將滿足條件的髒頁合並寫入磁盤,tps會有些許波動。

innodb_additional_mem_pool_size
這玩意對性能提升不是那麼明顯,內存實在寬裕的話給個20MB的吧。

innodb_log_file_size
很重要,redo log文件的大小,建議設置為innodb_buffer_pool_size的1/4,並非越大越好,太大了會導致Mysql崩潰重啟的時候恢復時間超級長…我一般設置為64-512M。

innodb_log_buffer_size
默認是8M,不建議將該值調整的過大,一般數據在這裡停留頂多就是1秒鐘就被刷到磁盤了,如果事務普遍涉及的數據塊較大,可以適當增加該值,一般8-16M。

innodb_flush_log_at_trx_commit
有三個值0、1、2,默認是1,0是指在事務提交的時候不刷數據到log buffer,1是指強制刷到log buffer同時調用OS的fsync()強制刷到磁盤,2是指只調用write()不調用fsync(),0是不可取的,除非這個表不重要,1和2相當於魚和熊掌,1能夠確保數據庫在崩潰的時候事務的完整性,因為log buffer是在內存中的,1是強制fsync()到磁盤上,2只推送到內存由系統自行選擇什麼時候寫入磁盤;所以1對磁盤造成的壓力可想而知,在木有SSD或者Raid10的系統上還是磁盤IO和數據完整二者選其一吧。

table_cache
打開一個表的系統開銷是很龐大的,例如MyISAM表需要頻繁打開MYI文件並在其頭部標識該表正在被使用中,當你的系統有大量的表被同時訪問的時候,你一定不希望每次都從磁盤中打開這個表吧?設置table_cache的意義在於盡可能的把表緩存,減少磁盤壓力的同時提高系統性能,這個值一般設置為1024或更高,如果設置成1024更高的值時要注意系統的最大打開文件描述符的數量,設置open_files_limit以及系統的ulimit -SHn 65535。

thread_cache
不多說,一般是一個邏輯CPU讓他負責兩個線程,cores * 2

innodb_doublewrite
doublewrite buffer,是innodb表空間在物理磁盤上的一塊區域,InnoDB每次同步dirty pages是先從內存同步到doublewrite buffer,再同步到物理磁盤的實際位置,不建議關閉,對系統性能損失不大。

其他諸如query_cache_size,sync_binlog等按默認來就好了。

copyright © 萬盛學電腦網 all rights reserved