mysql DB server端,如何讓讀寫更快

其實,我不是專業的DB管理同窗,甚至算不上會了解。只是在最近的工做中,遇到了DB server端優化的契機,因此把這些手段記錄下來:mysql

 

經過調整這個參數的值,能夠讓DB更給力:sql

 

這兩個參數的含義:緩存

1. sync_binlog安全

    設置爲1,this makes MySQL synchronize the binary log's contents to disk each time it commits a transaction。性能

    設置爲1000,那麼意味着緩存裏緩存了1000條數據,若是此時server宕機或OS crash,那麼緩存裏的數據就會丟失。這可能就是「速度」的代價。優化

    具體設置成多少,要看應用上的「承受」能力及mysql server的「靠譜」程度,折衷進行考慮。
2. innodb_flush_log_at_trx_committhis

   設置爲1,每次事務提交,都把日誌寫入硬盤(真的flush磁盤),這是很費時的。特別是使用電池供電緩存(Battery backed up cache)時。spa

 

 設置爲2,每次事務提交,不是直接flush寫磁盤,而是先寫入緩存。日誌仍會持續flush進磁盤,只是這個頻率和節奏由OS負責,通常是1-2s一刷。操作系統

 

   設置爲0,log buffer每秒就會被刷寫日誌文件到磁盤,提交事務的時候不作任何操做。話說會更快一點,但安全方面較差。日誌

 

   總的來講,

 

   設爲1,保證了完整的ACID性。設置成更高的值,能夠

換取更高的性能,可是在系統崩潰的時候,將會丟失大約1秒的數據。

 

   設爲2,只有在操做系統崩潰或者斷電的時候纔會丟失最後1秒的數據。InnoDB在作恢復的時候會忽略這個值。

 

   設爲0,mysqld進程崩潰的時候,就會丟失最後1秒的事務。

相關文章
相關標籤/搜索