如何在MySQL 5.6.26中减less磁盘IO?

我为我的应用程序使用MySQL版本5.1.52,但最近我已经更新到5.6.26,但现在我面临非常高的磁盘IO。

以下是系统configuration:

  • 操作系统:Linux 2.6.39.4
  • 内存:2GB
  • 磁盘:30GB的Compact Flash。

我的操作系统是相同的只是版本的MySQL被改变。 我已经使用iotop实用程序对MySQL版本5.1.52和5.6.26进行了IO观察,两个版本都执行相同的查询,读取次数是磁盘上的写入次数。 以下是观察:

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 

我可以妥协与酸性质,但不与IO。

为什么在MySQl 5.6.26中IO增加了?

我如何减less磁盘IO?

使用MyISAM引擎而不是MySQL 5.6.26的InnoDB引擎是好的吗?

my.cnf for 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 

提前致谢