数据库优化

数据库优化系列

通过性能分析工具可以让我们了解执行慢的 SQL 都有哪些,查看具体的 SQL 执行计划,甚至是 SQL 执行中的每一步的成本代价,这样才能定位问题所在,找到了问题,再采取相应的行动。

优化 SQL 语句的步骤

  1. 通过开启慢查询日志来收集慢查询

    1. 开启慢查询日志set global slow_query_log='ON';

    2. 设置慢查询时间set global long_query_time=2;

    3. 设置慢查询日志的文件位置set global slow_query_log_file='/var/lib/mysql/instance-1-slow.log';

  2. 通过慢查询日志我们就知道是哪些SQL慢了,然后我们就针对性地用 EXPLAIN 查看这条语句的执行计划,我们于是知道了数据表的访问类型,用到的索引,扫描的行数,一目了然!

    1. type:数据表的访问类型,比如all就是全表扫描;possible_keys:可以使用的索引;key:实际使用的索引;rows:扫描行数

  3. 使用 SHOW PROFILE 可以查看语句的具体执行成本

    1. PROFILE默认关闭,开启她set profiling = 'ON';

    2. 然后show profile;查看有哪些查询,用show profile for query ID可以查看某个查询每一步的执行时间

慢 SQL 语句的几种常见诱因

  1. 索引设计的不好,我们要好好的重新设计,比如说我们设计一个联合索引以索引覆盖的形式避免回表

  2. MySQL语句写的不好,慢查询日志查一下哪条语句出问题,想办法把它改好,比如说没遵守最左前缀原则导致索引失效,再比如说InnoDB的count()傻傻的一行行数实在太慢了那我们可以建一个表专门存各个表的count()

  3. 锁等待时间太长,我们一般把容易产生资源竞争的锁往后放,减少一个事务占用这把锁的时间

  4. MySQL选错索引了,我们可以用force index强制MySQL选择某个索引,比如说强制MySQL使用id这个索引select * from id force index(id) where id between 10000 and 20000;

#Java开发##MySQL##学习路径#
全部评论
接触过一点点的数据库,后来就再没深入看了
点赞 回复 分享
发布于 2022-03-11 19:07

相关推荐

02-01 12:05
复旦大学 Java
腾讯的提前批大概率应该是没有笔试的,但是这个时候有相当部分的同学简历估计都没有准备好,没准备好的同学也不用急,大部分都是3月之后开,这个时候开的绝大多数都是神仙打架,问的东西也比较难,打算投递的同学也多看下计算机网络和操作系统,腾讯对这部分的知识问的比较多。另外多刷下牛客的热门题库,刷题注意刷ACM模式,和牛客的周赛题,腾讯有的部门会从这里面出原题。我是@程序员花海关注我,带你了解更多校招资讯!
程序员花海:还没有来得及准备的同学可以看下学习路线:https://www.nowcoder.com/discuss/824693499982315520?sourceSSR=users算法题:https://www.nowcoder.com/feed/main/detail/20e7a999fa04485b88340a274411ca0d?sourceSSR=users八股文:https://www.nowcoder.com/discuss/833102362771251200?sourceSSR=users简历书写方式:https://www.nowcoder.com/discuss/839907820706205696?sourceSSR=users都是以前在牛客发的文章~
软开人,秋招你打算投哪些...
点赞 评论 收藏
分享
评论
3
19
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务