其實,我不是專業的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秒的事務。