Я использовал MySQL версии 5.1.52 для своего приложения, но недавно я обновил его до версии 5.6.26, но теперь у меня очень высокий дисковый ввод-вывод.
Ниже приводится конфигурация системы:
Моя ОС такая же, только версия MySQL изменена. Я провел наблюдение ввода-вывода в MySQL версий 5.1.52 и 5.6.26 с помощью утилиты iotop, в обеих версиях выполняются одни и те же запросы, чтение - это количество записей на диск. Ниже приведены наблюдения:
5.1.52 Версия MySQL:
Number of Queries All Innodb Tables All MyISAM Tables
900 12.45M 192K
1800 23.76M 424K
2700 36.02M 680K
3600 46.33M 924K
5.6.26 Версия MySQL:
Number of Queries All Innodb Tables All MyISAM Tables
900 75.04M 212K
1800 158.03M 472K
2700 245.93M 756K
3600 346.66M 1016K
Я могу пойти на компромисс со свойствами ACID, но не с IO.
Почему IO увеличен в MySQl 5.6.26?
Как я могу уменьшить дисковый ввод-вывод?
Можно ли использовать движок MyISAM вместо движка InnoDB с MySQL 5.6.26?
my.cnf для MySQL 5.6.26:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
default-storage-engine=MyISAM
general_log=on
general_log_file=/dev/shm/mysql.logs
thread_cache_size=9
table_open_cache=2000
table_definition_cache=1400
sort_buffer_size=2097152
query_cache_size=1048576
max_allowed_packet=4194304
key_buffer_size=8388608
join_buffer_size=262144
back_log=80
query_cache_type=OFF
open_files_limit=5000
event_scheduler=OFF
innodb_thread_concurrency=0
innodb_sync_spin_loops=30
innodb_stats_on_metadata=OFF
innodb_max_dirty_pages_pct=90
innodb_file_per_table=ON
innodb_concurrency_tickets=5000
innodb_autoextend_increment=8
innodb_open_files=2000
innodb_log_file_size=67108864
innodb_log_buffer_size=67108864
innodb_additional_mem_pool_size=1048576
innodb_log_buffer_size=1048576
innodb_max_dirty_pages_pct=90
innodb_max_dirty_pages_pct_lwm=90
innodb_adaptive_flushing_lwm=70
innodb_adaptive_flushing=0
innodb_io_capacity=2000
innodb_io_capacity_max=6000
innodb_lru_scan_depth=2000
innodb_write_io_threads=1
innodb_read_io_threads=1
innodb_buffer_pool_instances=1
innodb_buffer_pool_size=20971520
innodb_flush_method=O_DIRECT
innodb_flush_log_at_trx_commit=2
[mysqld_safe]
pid-file=/var/run/mysqld/mysqld.pid
заранее спасибо