mysql優化重要參數整理(初級篇)

dmah2966 8年前發布 | 7K 次閱讀 MySQL 數據庫服務器

來自: http://my.oschina.net/u/2460176/blog/607841


innodb_flush_log_at_trx_commit:

默認值1的意思是每一次事務提交或事務外的指令都需要把日志寫入(flush)硬盤,這是很費時的。特別是使用電 池供電緩存(Battery backed up cache)時。設成2對于很多運用,特別是從MyISAM表轉過來的是可以的,它的意思是不寫入硬盤而是寫入系統緩存。日志仍然會每秒flush到硬 盤,所以你一般不會丟失超過1-2秒的更新。設成0會更快一點,但安全方面比較差,即使MySQL掛了也可能會丟失事務的數據。而值2只會在整個操作系統 掛了時才可能丟數據。
innodb_write(read)_io_threads:

MySQL5.5.x中用2個innodb_read_io_threads和Innodb_write_io_threads取代此版本之前參數,該參數值之和=2*cpu個數*cpu核數;如果你的系統讀>寫,可以設置innodb_read_io_threads值相對大點;反之,也可以.

log-slave-updates:

用于open on m--->s--->s or open on slave backup,開啟備庫的binlog。

log_bin_trust_function_creators:

參數缺省0,是不允許function的同步的。一般我們在配置repliaction的時候,都忘記關注這個參數,這樣在master更新funtion后,slave就會報告錯誤,然后slave 同步報錯。

sync_binlog:

 默認情況下,并不是每次寫入時都將binlog與硬盤同步。因此如果操作系統或機器(不僅僅是MySQL服務器)崩潰,有可能binlog中最后的語句丟 失了。要想防止這種情況,你可以使用sync_binlog全局變量(1是最安全的值,但也是最慢的),使binlog在每N次binlog寫入后與硬盤同步。

 innodb_thread_concurrency :

并發線程數量結合innodb _thread_sleep_delaynnodb_concurrency_tickets。innodb用自己的線程調度機制來控制線程如何進入innodb  內核工作,并執行相關的操作。  innodb_thread_concurrency變量就控制了進入內核的線程數量。0表示不限制進入內核的數量。如果innodb內核中已經有很多線程進入,達到一定數量后就不能再進入了。innodb使用了一種兩階段的方式控制線程進入內核,這種機制減少了操作系統因為線程之間的上下文切換帶來的開銷。

slow_query_log:

慢查詢日志,通過long_query_time設置慢查詢的時間。

thread_concurrency

thread_concurrency的值的正確與否mysql的性能影響很大在多個cpu(或多核)的情況下,錯誤設置了thread_concurrency的值會導致mysql不能充分利用多cpu(或多核), 出現同一時刻只能一個cpu(或核)在工作的情況。thread_concurrency應設為CPU核數的2

innodb_buffer_pool_size:
這個參數主要緩存innodb表的索引,數據,插入數據時的緩沖。為Innodb加速優化首要參數。
最重要的參數,設為內存的70%-80%。

max_connections:

max_connections是指MySql的最大連接數,如果服務器的并發連接請求量比較大,建議調高此值,以增加并行連接數量,當然這建立在機器能支撐的情況下,因為如果連接數越多,介于MySql會為每個連接提供連接緩沖區,就會開銷越多的內存,所以要適當調整該值,不能盲目提高設值。可以過'conn%'通配符查看當前狀態的連接數量,以定奪該值的大小。MySQL服務器允許的最大連接數16384查看系統當前最大連接數:show variables like 'max_connections';

 

 本文由用戶 dmah2966 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!