MySQL的索引、事务、锁、调优

参考的文章链接

目录

MySQL的索引、事务、锁

MySQL调优

数据库查询数据的注意点

使用了索引,线上查询还是很慢,怎么解决?

MySQL读写遇到瓶颈,怎么解决?

总结:


MySQL的索引、事务、锁

MySQL调优

数据库查询数据的注意点

  • 尽量使用索引覆盖,减少回表所消耗的时间。即查询时知名对应的列,而不是select *
  • 如果组建联合索引,尽量将区分度最高的放最左边,考虑最左匹配原则
  • 对索引进行函数操作或表达式计算会导致索引失效
  • 利用子查询优化超多分页场景
  • 在开启事务后,在事务内尽可能只操作数据库,并有意识地减少锁的持有时间

使用了索引,线上查询还是很慢,怎么解决?

这种情况,一般是表的数据量太大了。

首先,考虑能不能把旧的数据删掉(但一般不会删)。然后,考虑在查询数据库之前,直接走一层缓存(redis),但这个需要考虑业务能不能忍受读取非真正实时的数据。其次,看是不是有字符串检索场景导致查询低效,若有,可以考虑将表的数据导入Elastic search类的搜索引擎。最后,可以考虑根据查询条件的维度,做相应的聚合表,线上的请求就查询聚合表的数据,不走原表。

MySQL读写遇到瓶颈,怎么解决?

  • 若是单库,考虑升级至主从架构,实现读写分离
  • 若是主从架构,考虑分库分表

总结:

  • 数据库表存在一定数据量,就需要有对应的索引发现慢查询时,检查是否走对索引,是否能用更好的索引进行优化查询速度
  • 当索引解决不了慢查询时,一般由于业务表的数据量太大导致,利用空间换时间的思想(NOSQL、聚合、冗余...)
  • 当读写性能均遇到瓶颈时,先考虑能否升级数据库架构即可解决问题,若不能则需要考虑分库分表

相关推荐

  1. mysql事务索引关系

    2024-07-14 05:34:02       27 阅读
  2. 【OceanBase诊断 】—— 索引

    2024-07-14 05:34:02       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 05:34:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 05:34:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 05:34:02       58 阅读
  4. Python语言-面向对象

    2024-07-14 05:34:02       69 阅读

热门阅读

  1. Qt/QML学习-BusyIndicator

    2024-07-14 05:34:02       22 阅读
  2. 算法热门面试题二

    2024-07-14 05:34:02       29 阅读
  3. pyinstaller系列教程(一)-基础介绍

    2024-07-14 05:34:02       20 阅读
  4. 大语言模型系列-Transformer

    2024-07-14 05:34:02       25 阅读
  5. Layer2是什么?为什么需要Layer2?

    2024-07-14 05:34:02       25 阅读
  6. SpinalHDL之实用工具(上篇)

    2024-07-14 05:34:02       22 阅读
  7. 自监督学习和对比学习举例讲解(附代码)

    2024-07-14 05:34:02       20 阅读