通往性能优化的天堂

通往性能优化的天堂

ID:20584947

大小:68.50 KB

页数:8页

时间:2018-10-13

通往性能优化的天堂_第1页
通往性能优化的天堂_第2页
通往性能优化的天堂_第3页
通往性能优化的天堂_第4页
通往性能优化的天堂_第5页
资源描述:

《通往性能优化的天堂》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、通往性能优化的天堂  前言  不管是博客园还是CSDN,看到很多朋友对数据库的理解、认识还是没有突破一个瓶颈,而这个瓶颈往往只是一层窗纸,越过了你将看到一个新世界。  04、05年做项目的时候,用SQLServer2000,核心表(大部分使用频繁的关键功能每次都要用到)达到了800万数据量,很早以前查过一些相关表,有的达到了3000多万,磁盘使用的光纤盘,100G空间,每周必须备份转移数据,否则100G空间一周会满掉,这个系统几年来,目前仍然保持非常良好的性能。还听说过朋友的SQLServer2000数据库工作在几十TB的环境下,高并发量,对这种级别的驾驭能力我还是

2、差的很遥远。  想当年,也是一提SQLServer,就觉得它的性能没法跟Oracle相比,一提到大数据处理就想到Oracle。自己一路走来,在本地blog上记录了很多优化方面的post,对的错的都有,没有时间系列的整理出来,这篇文章将join方法的概念稍微整理在一起,给大家个参考。通过查资料了解里面提到的各种概念,在实际中不断验证总结,完全可以对数据库一步步深入理解下去的。  我只对SQLServer2000比较了解,但这并不阻碍我在Oracle、MySql进行SQL调优、产品架构,因为在数据库理论原理上,各大数据库基本出入不大,对数据库的深入理解,也不会影响你架构

3、设计思想变坏,相反给你带来的是更深层次的思考。  RicCC:2007.06.26  关于执行计划的说明  在SQLServer查询分析器的Query菜单中选择Shoent)。鼠标移动到连接箭头上,会显示箭头起始端的操作输出结果集的记录数、记录的大小,一般情况下可以将这个输出结果集理解为箭头结束端的输入。  另外关于执行计划的一些补充说明:1.执行计划中显示的信息,都是一个评估的结果,不是100%准确的信息,例如记录数量是取自统计信息,I/O成本、CPU成本来自执行计划生成过程中基于统计信息等得出的评估结果。2.执行计划不一定准确,一方面受SQLServer维护的统

4、计信息准确性的影响,另一方面SQL语句编译时刻与执行时刻的环境(内存使用状况、CPU状况等)可能会不一样。  关于统计信息、I/O成本和CPU成本的评估、SQL语句的编译和执行过程,这里不再深入。另外尽管执行计划不一定准确,但它仍是SQL语句分析最重要的依据,因为你可以理解为,绝大部分情况下,SQLServer是以这种方式来执行的。  JOIN方法说明  数据库中,象tableAinnerjointableB、tableAleftoutjointableB这样的SQL语句是如何执行join操作的?就是说SQLServer使用什么算法实现两个表数据的join操作?  

5、SQLServer2000有三种方式:nestedloop、merge、hash。Oracle也是使用这三种方式,不过Oracle选择使用nestedloop的条件跟SQLServer有点差别,内存管理机制跟SQLServer不一样,因此查看执行计划,Oracle中nestedloop运用非常多,而merge和hash方式相对较少,SQLServer中,merge跟hash方式则是非常普遍。  以SQLServer2000为例对这三种方式进行说明,穿插在里面讲解执行计划的一些初级使用。  1.nestedloopjoin  1.1示例SQL  select...fr

6、omtableAinnerjointableBontableA.col1=tableB.col1tableBwheretableB.col1=rowA.col1andtableB.col2=?;  if(rowsB.Count<=0)    discardrowA;  else    outputrowAandrowsB;  }  join操作有两个输入,上面例子中tableA是outerinput,用于外层循环;tableB是innerinput,用于循环内部。下面针对执行计划描述一下SQLServer完成这个操作的具体步骤。  1.3查看执行计划方法  移

7、到文章最前面。  1.4执行步骤  下面是示例SQL的执行计划图。nestedloop操作的右边,位于上面的是outerinput,位于下面的是innerinput。你不能够根据join中哪个表出现在前面来确定outerinput和innerinput关系,而必须从执行计划中来确定,因为SQLServer会自动选择哪个作为innerinput。    a)对tableA执行TableScan操作。这个操作的输入是tableA表中的数据,这些数据位于磁盘上,操作过程中被加载到内存;输出是符合条件的记录集,将作为b)的outerinput。在这个操作中,tableA

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。