国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

my.cnf參數配置實現InnoDB引擎性能優化

2024-07-24 13:13:27
字體:
來源:轉載
供稿:網友

在網上看了無數的my.cnf的配置,大多數提到的配置無外乎這幾個:

1. innodb_buffer_pool_size
2. innodb_log_file_size
3. innodb_log_buffer_size
4. innodb_flush_log_at_trx_commit

然后自己寫了兩個例子,一個單線程的,一個多線程的來通過改變配置參數來測試是否提高了性能。結果是只有innodb_flush_log_at_trx_commit可以提高性能,對于1,2,3參數無論是開其中某一個,還是三個同時調節都沒有影響到測試性能。我想了下,可能是我的測試數據量還不夠大造成的,后續有條件了再更大的數據量測試一下這3個參數。

這里詳細說一下innodb_flush_log_at_trx_commit:

如果innodb_flush_log_at_trx_commit設置為0,log buffer將每秒一次地寫入log file中,并且log file的flush(刷到磁盤)操作同時進行。該模式下,在事務提交的時候,不會主動觸發寫入磁盤的操作。
如果innodb_flush_log_at_trx_commit設置為1,每次事務提交時MySQL都會把log buffer的數據寫入log file,并且flush(刷到磁盤)中去。
如果innodb_flush_log_at_trx_commit設置為2,每次事務提交時MySQL都會把log buffer的數據寫入log file。但是flush(刷到磁盤)操作并不會同時進行。該模式下,MySQL會每秒執行一次 flush(刷到磁盤)操作。

結果

當設置為0,該模式速度最快,但不太安全,mysqld進程的崩潰會導致上一秒鐘所有事務數據的丟失。
當設置為1,該模式是最安全的,但也是最慢的一種方式。在mysqld 服務崩潰或者服務器主機crash的情況下,binary log 只有可能丟失最多一個語句或者一個事務。
當設置為2,該模式速度較快,也比0安全,只有在操作系統崩潰或者系統斷電的情況下,上一秒鐘所有事務數據才可能丟失。

注意:由于進程調度策略問題,這個“每秒執行一次 flush(刷到磁盤)操作”并不是保證100%的“每秒”。

結論:innodb_flush_log_at_trx_commit設置為0或者2的時候速度差不多,兩者都比設置為1的時候快很多。

這里又讓我想到了InnoDB和MyISAM引擎的區別,InnoDB的優勢在于并發處理情況下比MyISAM快。而我的線程池數量是根據cpu的線程數來設定的,然后我把線程池的數量設置比cpu線程數大,更大,再大,結果我的測試程序性能又提高了,我醉了,原來是我對線程池的理解太淺薄了。線程池的最優大小


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 常熟市| 凤山县| 安吉县| 读书| 天气| 获嘉县| 喀喇沁旗| 柳林县| 体育| 奉新县| 长阳| 婺源县| 卫辉市| 浮梁县| 威宁| 延安市| 麻阳| 彭泽县| 澄城县| 高淳县| 玛曲县| 安义县| 洛扎县| 临城县| 宁德市| 龙州县| 竹溪县| 香格里拉县| 永修县| 夏津县| 汤原县| 仙居县| 通许县| 静安区| 台南市| 武汉市| 宜君县| 宁晋县| 香港 | 灌南县| 乡城县|