当前位置: 代码迷 >> Sql Server >> SQL 可以并行计算不?解决方法
  详细解决方案

SQL 可以并行计算不?解决方法

热度:18   发布时间:2016-04-24 10:41:55.0
SQL 可以并行计算不?
不是指对表记录的并行操作(插入、更新等),而是指:多核同时计算。

我在4核CPU的服务器上测试一个计算任务,CPU使用率只在20-35%,10分钟才出结果,这说明SQL也能自己对CPU各核分配任务,但是没有达到最大化。如果能设法让CPU的使用率接近100%,那么运行时间应该只在4分钟以内。

所以我想知道,SQL有没有专门针对并行计算的设计方法?
谢谢!
------解决方案--------------------
SQLServer,特别是高版本的SQLServer,其实会自己管理是否并行操作,慢通常不是没有并行,而是由于不够优化,甚至有时候并行反而会成为一个瓶颈。
------解决方案--------------------
你的SQL语句是什么?
------解决方案--------------------
瓶颈应该在磁盘I/O上,CPU使用率只在20-35%,在等待I/O读出数据才能进行计算..

建议分析一下SQL执行计划.
------解决方案--------------------
数据库里就是并行计算的层次设置。 
------解决方案--------------------
引用:
谢谢各位的热心回答。

我的计算,数据量很小很小,都在临时表里,最多百十条记录,主要是针对整数的算术运算。所以,应该不是磁盘I/O的原因。

奇怪的是,单机,CPU使用率就能达到100%。


看看你的数据库设置的计算的允许同时计算的层次,如果设置最大CPU的话,可能会不够用。 
------解决方案--------------------
如果数据全部在内存中,CPU是可以快速处理,但如果不是呢,还要从磁盘取数据,CPU只好等。
------解决方案--------------------
一般sql语句的运行,得看执行计划,是否采用了并行,你可以看看是否在执行时用了多个线程,如果只用一个线程,那肯定不是并行执行。

之前公司服务器多cpu,cpu使用率接近100%,他的执行计划就是并行的,把一个任务分解成多个子任务,每个子任务使用了一个cpu,这样才有可能达到100%。
------解决方案--------------------
引用:
谢谢各位的热心回答。

我的计算,数据量很小很小,都在临时表里,最多百十条记录,主要是针对整数的算术运算。所以,应该不是磁盘I/O的原因。

奇怪的是,单机,CPU使用率就能达到100%。

你的单机是单核的cpu吧?
一般是sql只能占一个核
如果是分区表,索引恰当,是可以多个核一起工作
  相关解决方案