MySQL - Windows 10 上的 InnoDB 寫入速度慢
我有 Windows 10 訓練營。我已經安裝了最新版本的 MySQL 社區伺服器。我還在 IIS 上安裝了 WordPress。MacBook 有 16Gb 的記憶體。這是我的配置文件
[client] no-beep # pipe # socket=0.0 port=3306 [mysql] default-character-set=utf8 [mysqld] port=3306 datadir=C:/ProgramData/MySQL/MySQL Server 5.6/Data character-set-server=utf8 ]default-storage-engine=INNODB sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" log-output=FILE general-log=0 general_log_file="DESKTOP-F1OO1LC.log" slow-query-log=1 slow_query_log_file="DESKTOP-F1OO1LC-slow.log" long_query_time=10 log-error="DESKTOP-F1OO1LC.err" server-id=1 max_connections=151 query_cache_size=0 table_open_cache=2000 tmp_table_size=90M thread_cache_size=10 myisam_max_sort_file_size=100G myisam_sort_buffer_size=171M key_buffer_size=8M read_buffer_size=64K read_rnd_buffer_size=256K innodb_additional_mem_pool_size=13M innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size=7M innodb_buffer_pool_size = 4G innodb_log_file_size=48M innodb_thread_concurrency=17 innodb_autoextend_increment=64 innodb_buffer_pool_instances=8 innodb_concurrency_tickets=5000 innodb_old_blocks_time=1000 innodb_open_files=300 innodb_stats_on_metadata=0 innodb_file_per_table=1 innodb_checksum_algorithm=0 back_log=80 flush_time=0 join_buffer_size=256K max_allowed_packet=4M max_connect_errors=100 open_files_limit=4161 query_cache_type=0 sort_buffer_size=256K table_definition_cache=1400 binlog_row_event_max_size=8K sync_master_info=10000 sync_relay_log=10000 sync_relay_log_info=10000
有什麼明顯的我做錯了還是你需要更多資訊?我嘗試過遵循各種指南,但對所有可用的選項都迷失了方向。
目前正在查看每秒最多 20 次寫入!
謝謝
建議 #1
您的innodb_thread_concurrency為 17。它確實需要為零(0)。為什麼 ?
不要重複我過去寫的東西,請閱讀我寫的關於 innodb_thread_concurrency 是 0 的最佳選擇的 7 篇文章。
建議 #2
寫入重做日誌時,使用小日誌緩衝區可能會成為瓶頸。
請閱讀我 3 歲的文章MySQL 事務大小 - 多大才算太大?為什麼它應該更大
我建議將innodb_log_buffer_size設置為 128M
建議#3
重做日誌也需要更大。你有
MySQL 5.6 的預設大小為innodb_log_file_size:48M
我建議設置innodb_log_file_size = 1G。
建議 #4
您已將flush_time設置為 0。恕我直言,對於任何 Windows 作業系統,這是一個很大的 NO-NO。
對於 Windows,預設值為 1800。我不相信 MySQL 在 Windows 中每 30 分鐘刷新一次磁碟。
我建議將 flush_time 設置為 300(每五 (5) 分鐘)
建議 #5
你應該增加 IO 執行緒
預設值為
innodb_read_io_threads = 4 innodb_write_io_threads = 4
Percona 伺服器的預設設置是
innodb_read_io_threads = 8 innodb_write_io_threads = 8
對於innodb_read_io_threads和innodb_write_io_threads,您應該從 8 開始。
試一試 !!!
關於每個連接的緩衝區,我還有很多要推薦的:打開和關閉數據庫連接的成本是多少?
將多個查詢收集到單個
BEGIN
…COMMIT
事務中。這將減少成本和磁碟命中。不要盲目地這樣做——單個事務中的一百萬個查詢還有其他問題。並且錯誤檢查需要以不同的方式處理;想
ROLLBACK
。