数据库优化

数据库优化系列

通过性能分析工具可以让我们了解执行慢的 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

相关推荐

2025-12-28 16:32
重庆邮电大学 Java
程序员花海:1.技能放最后,来面试默认你都会,技能没啥用 2.实习写的看起来没啥含金量,多读读部门文档,包装下 接LLM这个没含金量 也不要用重构这种 不会给实习生做的 3.抽奖这个还是Demo项目,实际在公司里面要考虑策略,满减,触发点,触发规则 库存 之类的,不是这个项目这么简单 4.教育背景提前,格式为 教育背景 实习 项目 技能 自我评价
简历被挂麻了,求建议
点赞 评论 收藏
分享
评论
3
19
分享

创作者周榜

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