mysql优化之参数精彩介绍

对性能影响非常大的是数据库结构设计和mysql语句的优化,优先从这两点开始优化,一般情况下,我们对mysql结构和语句优化做到非常好了情况下,可以考虑如下对mysql参数进行配置优化。

innodb I/O相关配置

若出现宕机,可以通过事务日志恢复数据
Innodb_log_file_size控制了单个事务日志的大小
Innodb_log_filesin_group控制着事务日志的个数
事务日志总大小=Innodb_log_files_in_group*Innodb_log_file_size
一般情况下,我们只需要修改单个事务日志的大小(32M-128M)。
Innodb_flush_log_at_trx_commit,可以设置以下几个参数
0:每秒进行一次log写入cache,并flush log到磁盘(mysql崩溃时至少丢失1秒钟事务)
1[默认]:在每次事务提交执行到log写入cache,并flush log到磁盘(非常安全。性能是最差)
2[建议]:每次事务提交,执行log数据写入到cache,每秒执行一次flush log到磁盘
0与2的区别在于mysql服务器宕机,2是不会丢失数据,非常是服务器宕机才有可能丢失。

Innodb_flush_method=O_DIRECT
Inodb刷新方式,决定了文件和文件系统如何交互,这个参数不仅影响innodb写数据,还影响读数据,对于linux系统,建议把Innodb_flush_method设置为O_DIRECT方式,会通知操作系统不要缓存数据,也不要预读数据,关闭了操作系统的缓存,意味着所有的读和写都通过存储设备来完成,避免了操作系统和innodb双重缓存。

Innodb_file_per_table=1
mysql存储表空间的设置,若不设置会存储系统表空间,建议启动这一参数。

Innodb_doublewrite=1
控制Innodb是否使用双写缓存(避免表没有写完整而导致的数据损坏),增加数据的安全性,对性能的影响并不大,建议启动这一参数。

MyISAM I/O相关配置

delay_key_write
off:每次写操作后刷新键缓冲中的脏兮块到磁盘(最安全,性能比较差)
on:只对在建表时指定了delay_key_write选项的表使用延迟刷新
all:对所有MYISAM表都是有延迟键写入

mysql安全性配置

expire_logs_days指定自动清理binlog的天数
max_allowed_packet控制mysql可以接收的包的大小
skip_name_resolve禁用DNS查找
sysdate_is_now确保sysdate()返回确定性日期
read_only禁止非super权限的用户写权限
skip_slave_start禁用Slave自动恢复
sql_mode设置mysql所使用的SQL模式

其他常用配置参数

sync_binlog 控制Mysql如何向磁盘刷新binlog
tmp_table_size和max_heap_table_size控制内存临时表大小
nax_connections控制允许的最大连接数(默认100,一般情况下太小了)

发布了57 篇原创文章 · 获赞 76 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/zhang5207892/article/details/79168123