日常运维
一些通用操作
1 | -- 查看mysql版本 |
mysql中的常用工具
1 | # 查找my.cnf的文件地址 |
mybatis
1 | # mybatis批量修改 |
查询建表语句
1 | show create table film |
创建索引
SQL优化
查看各种SQL执行频率
1
show status;
两种方式定位执行效率比较低的SQL语句:
A. 慢查询日志:
1
2
3
4
5
6
7
8
9
10
11
12--查询默认慢查询
show variables like ”%long%”
--设置慢查询时间
set global long_query_time=2
--启动满查询
set global slow_query_log=’ON’;
--查看满查询相关,是否开启、日志存储位置慢查询日志分析工具
show variables like "%slow%";
--slow记录最多的10个语句
mysqldumpslow -s r -t 10 /slowquery.log
--按照时间排序前10中含有"left join"的
mysqldumpslow -s t -t 10 -g "left join" /slowquery.logB. 当前mysql在进行的线程,包括线程的状态、是否锁表
1
show processlist
通过explain分析效率低SQL的执行计划
1 | SHOW STATUS LIKE "%Handler_read%"; //查看索引使用情况 |
两个简单实用的优化方法:
A. 定期分析表和检查表
- 分析表
1
analyze table store;
- 检查表
B. 定期优化表
1
optimize table store;
常用的SQL优化
优化数据库对象:
- SELECT * from combo_item PROCEDURE ANALYSE() //优化表的数据类型,最适合大表优化
- 使用中间表提高统计查询速度
- 逆规范化
- 通过拆分提高表的访问效率
锁问题
MyISAM1
2
3show status like ‘table_locks_%’;
# Table_locks_waited 的值比较高的情况下,说明存在着较严重的表级锁争用情况获取Innodb 行锁争用情况
1
show status like “innodb_row_lock_%%”;