数据库⾯试题:数据库查询慢的原因可能有哪些
⽂章⽬录html中filter
⼀.设计或编码问题
eureka和dubbo区别1. 数据库表设计是否合理,是否正确添加索引
2. sql语句编写是否合理,查询的时候没有加索引php框架延伸性好的有哪些
3. sql语句编写不规范导致索引失效,改⽤全表扫描
4. 数据库表的数据是否太⼤?是否需要分库分表?
5. 程序设计缺陷导致死锁
索引失效的⼏种常见原因:
1)查询条件中出现or,!=,或<>
2)复合索引未⽤左列字段(最左匹配原则)
3)模糊查询 like以%开头;
4)where的判断条件对字段进⾏了null值判断。因为索引⽆法存储null
5)where中索引列使⽤了函数
6)where中索引列有运算
⼆. 机器资源问题原码反码补码转换图
1. 连接池资源不够⽤了,参数优化
mysql面试题sql优化2. 数据库所在的硬件资源情况:当查询慢的时候,内存占了多少?mysql磁盘IO是不是被其它应⽤共享且占⽤⾼?cpu是不是有负载?
1) 硬件资源本⾝不够>加资源
2)硬件资源因为和其它进程共享,导致资源不够,可以考虑做资源隔离
3)硬件资源性能不⾜,⽐如磁盘可以考虑换成SSD
3. ⽹络资源
1)应⽤连接数据库的⽹络是不是抖动,延时较⾼
三. ⾼并发量导致
二郎山隧道全长1. 如果数据量真的炒鸡⼤,分库分表已经不能满⾜查询了,考虑将热点数据在redis做缓存。应⽤架构调整,把缓存模块加进去。
2. 如果已经加了缓存还是慢,会不会是缓存雪崩了?击穿了?缓存命中率低?
3. 缓存任然不能满⾜查询要求,⽐如很多字段的查询,可以将查询字段放到ES等⼤数据组件中,先查ES,ES拿到数据主键id再到
MySQL中查询⽤户请求突然增加,导致查询变慢上有系统出现bug,导致循环调⽤接⼝做查询,这个时候是不是考虑异常情况限流
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论