博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库之Query优化
阅读量:6517 次
发布时间:2019-06-24

本文共 833 字,大约阅读时间需要 2 分钟。

hot3.png

Query 语句的优化思路和原则主要提现在以下几个方面:

1. 优化更需要优化的 Query;
2. 定位优化对象的性能瓶颈;
3. 明确的优化目标;
4. 从 Explain 入手;
5. 多使用 profile
6. 永远用小结果集驱动大的结果集;
7. 尽可能在索引中完成排序;
8. 只取出自己需要的 Columns;
9. 仅仅使用最有效的过滤条件;
10. 尽可能避免复杂的 Join 和子查询;
   

    我们从对整个系统的影响来分析。一个频繁执行的高并发 Query 的危险性比一个低并发的Query 要大很多。当一个低并发的 Query 走错执行计划,所带来的影响主要只是该 Query 的请求者的体验会变差,对整体系统的影响并不会特别的突出,之少还属于可控范围。但是,如果我们一个高并发的 Query 走错了执行计划,那所带来的后可很可能就是灾难性的,很多时候可能连自救的机会都不给你就会让整个系统 Crash 掉。

将复杂 Join 语句分拆成多个简单的 Query 语句之后,那不是我们的网络交互就会更多了吗?网络延时方面的总体消耗也就更大了啊,完成整个查询的时间不是反而更长了吗?是的,这种情况是可能存在,但也并不是肯定就会如此。我们可以再分析一下,一个复杂的 Join Query语句在执行的时候,所需要锁定的资源比较多,可能被别人阻塞的概率也就更大,如果是一个简单的Query,由于需要锁定的资源较少,被阻塞的概率也会小很多。所以 较为复杂的 Join Query 也有可能在执行之前被阻塞而浪费更多的时间。而且,我们的数据库所服务的并不是单单这一个 Query 请求,还有很多很多其他的请求,在高并发的系统中,牺牲单个 Query 的短暂响应时间而提高整体处理能力也是非常值得的。优化本身就是一门平衡与取舍的艺术,只有懂得取舍,平衡整体,才能让系统更优

转载于:https://my.oschina.net/xwinie/blog/208998

你可能感兴趣的文章
[deviceone开发]-纳豆项目源码开源
查看>>
Javascript加载执行方法总结
查看>>
温故知新之JS基础
查看>>
关于js高级程序设计第三版中关于arguments论述的一个错误
查看>>
Linux Namespace系列(01):Namespace概述
查看>>
正则表达式小结
查看>>
使用CSS处理标题过长,自动截断,兼容响应式布局
查看>>
php 调试利器debug_backtrace()
查看>>
Hexo-Neat介绍
查看>>
细说C#:委托的简化语法,聊聊匿名方法和闭包(上)
查看>>
Elixir Ecto: 使用 ExMachina 批量生成测试数据
查看>>
虚拟机类加载机制(读书笔记)
查看>>
PHP学习计划
查看>>
[稀土掘金日报] JavaScript 开发者必备的资源合集
查看>>
Win软件私家珍藏-常用软件工具使用总结
查看>>
iToolkit,推荐我们自己做的一套前端组件
查看>>
Junit源码阅读(一)
查看>>
首席信息安全官的未来将何去何从?
查看>>
JS中的二叉树遍历
查看>>
JavaScript设计模式与开发实践 | 01 - 面向对象的JavaScript
查看>>