如何减少 MySQL 5.6.26 中的磁盘 IO?

如何减少 MySQL 5.6.26 中的磁盘 IO?

我的应用程序之前使用的是 MySQL 5.1.52 版本,但是最近我将其更新到了 5.6.26,但现在我面临着非常高的磁盘 IO 问题。

以下是系统配置:

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

我的操作系统是一样的,只是 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

我可以在 ACID 属性上妥协,但不能在 IO 上妥协。

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

我怎样才能减少磁盘 IO?

在 MySQL 5.6.26 中,使用 MyISAM 引擎代替 InnoDB 引擎可以吗?

MySQL 5.6.26的my.cnf:

[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

提前致谢

相关内容