之前介绍了相关mysql的性能调优,针对innodb存储引擎的使用进行性能调优的方法,Jason也留下点Memory。
首先当然要提到的是innodb的关键特性:插入缓冲,两次写。
我们可以使用show engine innodb status来查看相关信息,我们可以看到Insert,merged recs,merges,我们关注总量及非聚集索引页的IO请求比。
不过性能方面插入缓冲会占用过多的缓冲池,这样我们得密切关注缓冲池的大小。默认的情况下最大可以占用一般的缓冲池内存。不过在加入patch的 innodb引擎我们可以修改IBUF_POOL_SIZE_PER_MAX_SIZE来修改占用缓冲池的比例(N代表1/N)。
两次写的话在分布式服务器集群来说是性能的一个小瓶颈,如果您有完备的存储架构,容灾、恢复都非常好的话,可以考略关闭两次写,单一服务器用户一定需要开启这样有效的提高了服务器的数据可靠性。
在多核服务器中我们可以开启innodb_read_io_threads及innodb_write_io_threads来增加读写IO的线程。调优的范围取决于CPU的处理能力。
另一方面缓冲池命中率是我们关注的重点:使用show global status like ‘innodb%read%’\G
innodb_buffer_pool_reads
innodb_buffer_pool_read_ahead
innodb_buffer_pool_read_ahead_evicted
innodb_buffer_pool_read_requests
innodb_data_read
innodb_data_reads
缓冲池命中率
innodb_buffer_pool_read_requests/
(innodb_buffer_pool_read_requests+innodb_buffer_pool_read_ahead+innodb_buffer_pool_reads)
平均读取字节数=innodb_data_read/innodb_data_reads
主要是监控方面的,留下点memory,为以后的工作服务