开发应对mysql性能基本技能

本文探讨了数据库性能问题的排查方法,如通过show full process list检查SQL执行情况,并详细介绍了索引管理的最佳实践,包括如何创建有效的索引、避免重复索引以及对现有表进行索引优化的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当前数据库运行有问题

  • 运行show full processlist:查看当前正在运行的sql的执行情况,看是什么原因导致的,通常情况下,会有slow-sql存在

创建索引时需要注意

  • 通过两种方式来查看已有索引:

    • show index from table_name:查看table_name已有的索引
    • show create table table_name:查看建表语句,里边有索引创建语句
  • 联合索引的最左原则:创建 a,b,c三个字段的联合索引意味着有a,a,b,a,b,c三个索引(看看mysql所有的算法就明白了),这个时候看下创建的索引是否被包含在内

  • 对于一些区分性很差的字段不要添加所有,比如性别,年龄,添加所有效果不大,而且浪费存储空间
  • 对于已有表,特别是大表(数据量比较大的表),添加多个所有,最好在一条语句中执行;对一个表添加2个索引时,如果分开执行2条DDL语句会比一条耗时很多;对于可用性很高的场景,通过备库来做(这个工作主要是DBA来执行);开发主要关心对sql进行合并,因为很多时候DBA只是帮你执行提交的sql
  • 一定要注意不用重复创建索引(索引会增加存储,而且会影响插入及更新语句的执行速度)

查询优化

  • 如果需要对一个添加所有的字段进行左模糊查询,可以考虑将此字段倒叙存放,通过reverse()方法来将需要查询的条件倒叙
  • 对于慢查询,通过explain查询QEP,分析QEP(query execute plan),看索引是否合理
  • 对于NULL值要谨慎对待,尽量不用NULL的使用,mysql不对null值索引
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值