由于只是虚拟机测试,只有一个磁盘,(如果数据并非全部放在同一物理磁盘上,数据库性能会提高)本文将主要从缓存的配置提高性能
使用mysql自带压力测试工具并发200,2W个读写请求
默认配置下;
并发200,2W个读请求
/usr/bin/mysqlslap –concurrency=200 –auto-generate-sql-load-type=read – number-char-cols=15 –number-int-cols=5 –number-of-queries=20000 –engine=innodb –iterations=2 -uroot -proot
CPU/IO图
内存空闲
并发200,2W个写请求
/usr/bin/mysqlslap –concurrency=200 –auto-generate-sql-load-type=write – number-char-cols=15 –number-int-cols=5 –number-of-queries=20000 –engine=innodb –iterations=2 -uroot -proot
CPU/IO
内存图
开始优化
使用 tuning-primer.sh查看 当前内存使用情况。
这里分配系统内存的70%给mysql。
3.84G*70%-388M = 2364M
修改如下配置
查看系统内存使用情况
并发200,2W个读请求
CPU/IO 图
内存图
并发200,2W个写请求
CPU/IO
内存图
综上
使用缓存配置后数据库的读效率提升的比较明显。平均快了5S多。
而写请求并没有明显的提升。从cpu/io图中可以看出是IO限制了写的效率。将数据文件,日志文件分开放可以进一步提升性能。
继续优化写性能
添加配置
innodb_write_io_threads = 8
InnoDB使用后台线程来处理各种类型的I / O请求。默认4
并发200,2W个写请求
平均处理时间又得到了优化
看看CPU/io及内存
innodb的优化就到这里了。