本文共 1386 字,大约阅读时间需要 4 分钟。
show status
了解各种sql的执行频率 可以sql在使用中 show status like 'Com_%'; 结果 com_selelct 执行select的操作次数 一次查询只累加一次 com_insert 执行insert的操作次数 对于批量插入操作,只累加一次 com_update 执行update的操作次数 com_delete 执行delete的操作次数 下面几个参数只针对innodb存储引擎 innodb_rows_read select查询返回的行数 innodb_rows_inserted 执行插入的行数 innodb_rows_updated 执行更新的行数 innodb_rows_deleted 执行删除的行数事务型的 com_commit和com_rollback 可以了解事务提交和回滚的情况
了解数据库的基本情况
connections 试图连接mysql服务器的次数 uptime 服务器工作时间 slow_queries 慢查询的次数定位执行效率较低的sql语句
1.通过查询日志定位 用 --log-slow_queries[=file_name],mysqld写一个包含执行时间超过long_query_time秒skq语句的日志文件 2.慢查询日志在查询结束后才记录,所以在应用反映执行效率出行的时候查询慢查询日志并不能定位问题,可以使用show processlist 命令查看当前mysqk在进行的线程,包括线程的状态,是否锁表等,可以实时查看ssql的执行情况,同时对一下锁表操作进行优化explain(desc)分析低效的sql的执行计划
结果分析: selelct_type:表示select的类型,常见的取值有simple(简单表,即不使用表连接或者子查询).primary(主查询,即外层查询), union(union中的第二个或者后面的查询语句),subquery(子查询中的第一个select) table:输出结果集的表 type: 表示mysql在表中招到所需行的方式,或者叫访问类型,常见类型如下: all 全表扫描 index 索引全扫描 range 索引范围扫描 常见于< <= > >= between等 ref 使用非唯一索引扫描或唯一索引的前缀扫描,返回匹配某个单独值得记录行 idx_fk_customer_id 是非唯一索引,查询条件为等值查询条件customer=35,所以扫描索引的类型为ref.ref还经常出现在join操作中 eq_ref 类似ref,区别就在使用索引是唯一索引,对每个索引键值,表中只有一条记录匹配 简单来说 就是多表连接中使用primary key 或者unique index作为关联条件 const/System单表中最多有一个匹配行,查询起来非常迅速,所以这个匹配航中的其他列值可以被优化器在当前查询中当作常量来处理 null mysql不用访问表或者所以,直接就能得到结果explain extended 加上show warnings可以看到sql真正被执行之前优化器做了哪些sql改写
show profile
分析sql,可以看到执行过程中每个状态和消耗的时间 在sql语句执行后输入命令 show profile; 即可返回转载地址:http://whtnn.baihongyu.com/