mysql参数优化篇

https://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html

非innodb参数设置:

1.key_buffer_size=16M  这个参数针对myisam作用很大,主要用来缓存myi索引文件,一般设置16M,myisqm可以开大点, 但同时也会带来一个问题, 就是一但crash,导致索引坏掉的话, 所带来的修复索引的时间也会较长。  通常用个myisamchk 命令可以用来批量修复,例如:myisamchk  -r /data/mysql/*.MYI

2.sort_buffer_size=4*1024*1024    这个参数不分myisam还是innodb , 当每个连接来order by操作时会分配的大小,  一般设为4~8M比较合适

3.query_cache_size =32M  全myisam表 考虑设置的大点比如128/512M  全innodb表设置的小一些16/32M,特殊情况:如果在show processlist/show profile看到状态waiting query for lock 导致全局锁时, 应考虑把这个参考设置更小或为0关闭 query_cache_size=0

4.auto_increment_increment  设置自增的步长(自增时,每次增加几)

  auto_increment_offset        在数据为空的表开始入数据时,自增列初始的基数值是多少,  auto_increment_offset一般要小于auto_increment_incremet ,才能生效, 不然系统会忽略auto_increment_offset只生效auto_increment_increment的设置, 这两参数和auto_increment是不一样的, auto_increment是设置下一个自增值从哪个数开始例如:alter table test AUTO_INCREMENT = 1000;

5.expire_logs_days  设置保留多少天的binlog,防止binog把盘占满, 如果手动在mysql里删除可以用purge master logs to 'binlogfilename' 或 purge master logs before ‘date’

6.init_connect='auto_commit=0'  对每个连接设置一个初始操作用, 自己实验过用这个结合binlog来记录mysql审核,思路:在这里设置每次连接进来的进程id 和对应的用户名入到一张定义好的表, 然后可以去binlog文件里找出相应具体操作所对应的进程id 反过来回查这个表所记录的用户是谁,缺陷是这参数无法对super用户的操作生效。

7.interactive_timeout

wait_timeout           这两个参数通常要一起设置, 单设一个不会生效,  如果是短连接 如php, 可以设置的时间短一些, 比如都等于30  而如果是长连接,如java 就设置的长一些28800

还有一个参数max_connections,  例如有时候我们会看到应用端会报many connection就是因为这个参数没有规划好,  如果是php  3000  如果是java 8092,   这个数据还有一个相关联的参数max_user_connections  这个是分给每个用户所允许的最大连接数, 注意:max_connections>max_user_connections*用户数, 最好max_connections要多出来几个供管理mysql用

8.log_slave_updates 级连复制时,用在中继服务器上生成binlog所用

9.log_slow_queries

   long_query_time       这两参数设置慢查询

10.max_allowed_packet=64M    在同步的数据量比较大时, 这个值要考虑一下, 如果设置过小,同步可能会停掉

11.max_connection_error=999999  由于应用和数据库之间的网络不稳定,导致连接错误,如果错误数达到这个阀值, 可能会报错

12.skip_networking 这个参数在apache,nginx和mysql在一台机器上提高安全性只允许本机连的时候有用, 同时在skip-grant-tables和其它的维护数据库防止用户访问场景时会用到

 

设置global profiling=1  然后可以用show frofile/show profile [All.....] for query N来看语句的性能开销在哪里,从而做相应的优化

slave stop;set global sql_slave_skip_counter=1;slave start  主从复制时可以用来跳过出错的一条事务, 让复制继续

show engine innodb status; 看引擎在干些啥   show global status;看系统的运行表现

mysqladmin -uroot -p -i 1 -r exten | grep -E '(Com_select|Com_update|Com_delete)'   查看数据库当前每秒多少select

gdb -p $(pidof mysqld) -ex "set opt_log_slave_updates=1"  此方式可在不重启情况下设置静态变量并生效

转载于:https://www.cnblogs.com/ericzh/p/6622517.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值