如何优化并行SQL性能(上)

日期: 2010-11-24 作者:Guy Harrison翻译:冯昀晖 来源:TechTarget中国 英文

要在你客户的SQL环境实现并行执行,你需要知道SQL是否准备好并行执行了。在判断SQL适合程度之后,你需要确保你有合理的实施计划,以及知道如何优化并行执行性能。   优化并行执行的性能   现在,我们已经掌握了并行执行理论的基础,现在可以指定一些准则来优化并行执行。下面是从大部分并行执行中提取出来的一些准则:   从优化串行执行的SQL开始。

  确保该SQL是合适的并行执行SQL。  确保数据库服务器主机适合配置为并行执行。  确保执行计划的所有部分都并行化了。  确保请求的DOP是可实现的。

  监视请求的DOP与实际情况比较。  检查数据问题和进程间负载问题。   &nb……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

要在你客户的SQL环境实现并行执行,你需要知道SQL是否准备好并行执行了。在判断SQL适合程度之后,你需要确保你有合理的实施计划,以及知道如何优化并行执行性能。

  优化并行执行的性能

  现在,我们已经掌握了并行执行理论的基础,现在可以指定一些准则来优化并行执行。下面是从大部分并行执行中提取出来的一些准则:

  •   从优化串行执行的SQL开始。
  •   确保该SQL是合适的并行执行SQL。
  •   确保数据库服务器主机适合配置为并行执行。
  •   确保执行计划的所有部分都并行化了。
  •   确保请求的DOP是可实现的。
  •   监视请求的DOP与实际情况比较。
  •   检查数据问题和进程间负载问题。

    我们现在来详细看看这些准则。

  从优化串行执行的SQL开始

  一个最理想的并行计划与最佳的串行计划可能是有区别的。例如,并行处理通常从表或索引的扫描开始,而最佳串行计划可能是基于索引查找开始。然而,你应该确保你的查询在进行并行优化之前先对串行执行进行优化,原因如下:

  串行调试的结构和方法主要针对索引和统计集合,而这些经常对好的并行调试也非常关键。

  如果请求并行执行的资源不可用,你的查询可能被串行化(这取决于“PARALLEL_DEGREE_ POLICY”和“PARALLEL_MIN_PERCENT”的设置)。在这种情况下,你要确保你并行查询的串行计划足够好。

  缺少调优的SQL甚至可能变成更差的SQL,至少考虑到对其他用户的影响时是这样,这使它被允许消耗数据库服务器更多的CPU和IO资源。

  在为并行执行优化SQL语句时,要从未串行执行SQL优化开始。

  确保该SQL是合适的并行执行SQL

  不是每个SQL都能从并行执行中获益的。下面是一些例子,这些情况的SQL语句可能不应该被并行化。

  •   串行执行时,执行时间很短的SQL语句。
  •   可能在多个会话中高并发率运行的SQL语句。
  •   基于索引查找的SQL语句。非并行的索引查找或者范围扫描不能被并行化。然而,索引全扫描可以被并行化。在分区索引上的索引查找也可以被并行化。

  确保要并行化的SQL是适合并行执行的。OLTP类型的查询通常不适合并行化处理。

  确保系统适合配置为并行执行

  不是所有的SQL都适合并行执行,也不是所有的数据库服务器主机适合配置并行处理。在当今世界,大部分物理服务器主机都满足如下最小需求:多块CPU和跨多个物理驱动器的数据带。然而,一些虚拟主机可能不满足这些最小需求,而桌面计算机通常只有唯一的磁盘设备,因此通常不适合调整为并行执行。

  不要尝试在那些不满足最小需求(多块CPU和跨多个磁盘驱动器的数据带)的计算机系统上使用并行执行。

相关推荐