首席DBA用SQL洪荒之力,造一把通向数据库的钥匙(3)
这里来自阿里-叶正盛的一篇博客里的一张图,相信很多人都看过.这里提出了经典的漏斗优化法则,高度是指我们投入的资源,宽度是指可能实现的收益.从图中可见,“减少数据访问”是投入资源最少,而收益较多的方式;“增加硬件资源”是相对投入资源最多,而收益较少的一种方式.受时间所限,这里不展开说明了. 这是我总结的一个优化法则,简称为“DoDo”法则.
怎么样来理解少做工作呢?比如创建索引往往可以提高访问效率,其原理就是将原来的表扫描转换为索引扫描,通过一个有序的结构,只需要少量的IO访问就可以得到相应的数据,因此效率才比较高.这就可以归纳为少做工作. 怎么样来理解不做工作呢?比如在系统设计中常见的缓存设计,很多是将原来需要访问数据库的情况,改为访问缓存即可.这样既提高了访问效率,又减少了数据库的压力.从数据库角度来说,这就是典型的不做工作.
怎么样来理解这句话呢?比如数据库里常见的并行操作,就是通过引入多进程来加速原来的执行过程.加速处理过程,可以少占用相关资源,提高系统整体吞吐量. 六、SQL 执行过程SQL的执行过程比较复杂,不同数据库有一定差异.下面介绍以两种主流的数据库(Oracle、MySQL)介绍一下.
七、SQL优化器在上面的执行过程描述中,多次提高了优化器.它也是数据库中最核心的组件.下面我们来介绍一下优化器. 上面是我对优化器的一些认识.优化器是数据库的精华所在,值得DBA去认真研究.但是遗憾的是,数据库对这方面的开放程度并不够.(相对来说,Oracle还是做的不错的) 这里我们看到的MySQL的优化器的工作过程,大致经历了如下处理:
此图是DBAplus社群MySQL原创专家李海翔对比不同数据库优化器技术所总结的.从这里可以看出:
八、SQL 执行计划看懂执行计划是DBA优化的前提之一,它为我们开启一扇通往数据库内部的窗口.但是很遗憾,从没有一本书叫做“如何看懂执行计划”,这里的情况非常复杂,很多是需要DBA常年积累而成. (编辑:ASP站长网) |