Java层面
1. 连接数量控制
2. 事务控制
# 大小控制
事务越小,速度越快,反之则慢。事务中,Insert语句上面不要加Select等其他语句。事务 本质就是加锁,故越轻量越好。
# 提交控制
事务提交的行为交割Spring, 不要自己手动提交。
3. 连接的长短
硬盘层面
监控IO是否打满
SQL层面
1. 连接池的使用
2. 字段设计长度不要过大。如避免使用blob, 过分依赖varchar等
3. 配置文件是关键
MySql可塑性很强,投入使用很快就遇到瓶颈很大原因是配置过于粗糙,本身的性能没有发挥出来
# 安装方式的原则
尽可能使用二进制包方式而避免使用源码包方式。原因是二进制包安装默认配置进行了优化,源码包方式没有优化,这是如果配置文件抒写过于简单,很多配置项会采用默认配置。
# MySql状态的监控
使用自带 workbench 或 第三方监控软件
# 常用命令
查看参数值。即my.cnf里设置的参数在variables变量中显示
show variables like '%...%';
查看数据库参数当前的状态值
show status like '%...%';
显示用户正在运行的线程
show processlist;
设置系统参数
set global innodb-buffer-pool-size=409600; 全局有效
set session innodb-buffer-pool-size=409600; 当前会话有效
# 重要参数
慢sql阈值,调小提成1s
long-query-time
开启慢日志,阈值设置在500ms
slow-query-log
影响增删改的速率,查不走binlog
binlog-cache-size
缓冲池大小,数据从硬盘加载到这里,所有操作在这里进行,直接影响到整体性能,参数值通常设置为分配mysql内存的50%
innodb-buffer-pool-size
监控状态
1. 硬件设备状态的监控,如cpu, 硬盘,内存等
2. mysql状态的监控