重构查询的方式
来源:互联网 发布:淘宝中的查询热度 编辑:程序博客网 时间:2024/06/06 02:47
这两天被领导安排了优化SQL的任务,因为应用在线上多次出现了查询超时的异常。在这做下总结。
一个复杂查询还是多个简单查询
我们总是认为网络通信,查询解析和优化是一件代价高昂的事情,总是强调需要数据库层完成尽可能多的工作,但是这样的想法对于MySQL并不适用,MySQL内部每秒能够扫描内存中上百万行数据,相比之下,MySQL把响应数据传输给客户端就慢很多了。MySQL从设计上让连接和断开连接都很轻量级,在返回一个小的查询结果方面很高效。别害怕将一个大查询分解为多个小查询,好好衡量一下这样做是不是能提高性能,减少工作量。
切分查询
把一个大查询切分成小查询,每个查询功能完全一样,只完成任务的一部分。比如一次清理大量数据时,用切分查询就很有效。因为一个大的语句一次性完成的话,则可能需要一次锁住很多数据,占满整个事务日志,耗尽系统资源,阻塞很多小的但重要的查询。
一个需要删除大量数据的DELETE语句完全可以分批次完成,每次DELETE一部分数据,然后暂停一会儿再做下一次删除,这样做不仅可以缓解上面的问题,同时能将服务器上原本一次性的压力分散到一个很长的时间段中,就可以大大降低对服务器的影响,大大减少删除时锁的持有时间。
分解关联查询
高性能的应用都会对关联查询进行分解。用分解关联查询的方式重构查询有如下优势:
- 让缓存的效率更高。很多应用程序可以方便地缓存单表查询对应的数据。
- 单个查询获取的数量更少,可以减少锁的竞争。
- 在应用层做关联,更容易做到高性能和可扩展。
- 查询本身效率也有提升。比如可以IN()代替关联查询,更有效的利用索引,
- 可以减少冗余记录的查询。
很多场景下,通过重构查询将关联放到应用程序中将会更加高效。
阅读全文
0 0
- 重构查询的方式
- 6.3重构查询的方式
- 【MySQL】重构查询方式
- sql去重查询的另一种方式
- 【学习笔记】查询性能优化:重构查询方式
- ORACLE 数据去重查询的几种常见方式
- 重构-编程的本原方式
- MySQL到NoSQL:数据的重思和查询方式的转换
- MySQL到NoSQL:数据的重思和查询方式的转换
- MySQL到NoSQL:数据的重思和查询方式的转换
- 数据的去重查询
- 服务器端的重定向方式
- Hibernate的查询方式
- hibernate的查询方式
- hibernate的查询方式
- Hibernate的查询方式
- Hibernate的查询方式
- Hibernate的查询方式
- 记一次服务器故障处理
- Quartz框架从入门到实战
- input 选取文件夹及多个文件 识别内部文件
- ubantu怎么配置静态ip
- 开发工具集
- 重构查询的方式
- 拓扑排序---(poj 1094)
- 4用于cifar10的卷积神经网络-4.12优化器MomentumOptimizer的汇总结果分析
- FZU
- Android软键盘总结(笔记)
- Weblogic (一 /安装)
- Tablayout实现导航栏
- 怎样预防开车引起的腰痛?
- 用鼠标选择模型表面两点并连线