优化选择:
优化成本:硬件升级
>
系统配置
>
表结构设计
>SQL
语句及索引。
优化效果:硬件升级
<
系统配置
<
表结构设计
<SQL
语句及索引。
1.
保证从内存中读取数据
MySQL
会在内存中保存一定的数据,通过
LRU
算法将不常访问的数据保存在硬盘文件中。
尽可能的扩大内存中的数据量,将数据保存在内存中,从内存中读取数据,可以提升
MySQL
性能。 扩大innodb_buffer_pool_size
,能够全然从内存中读取数据。最大限度降低磁盘操作。 确定innodb_buffer_pool_size
足够大的方法:
mysql> show global status
like
'innodb_buffer_pool_pages_%'
;
innodb_buffer_pool_size
默认为
128M
,理论上可以扩大到内存的
3/4
或
4/5
。
修改
my.cnf
innodb_buffer_pool_size = 750M
2.降低磁盘写入次数
增大
redolog
,减少落盘次数
innodb_log_file_size
设置为
0.25 * innodb_buffer_pool_size
通用查询日志、慢查询日志可以不开 ,
bin-log
开
生产中不开通用查询日志,遇到性能问题开慢查询日志
写
redolog
策略
innodb_flush_log_at_trx_commit
设置为
0
或
2
如果不涉及非常高的安全性
(
金融系统
)
,或者基础架构足够安全,或者事务都非常小,都能够用
0
或者
2
来减少磁盘操作。
3.
提高磁盘读写性能
使用
SSD
或者内存磁盘