none
sqlserver2008通过什么技术支持多核cpu RRS feed

  • 问题

  • 听说oracle可以通过网格计算支持多核cpu下的编程,不知道sqlserver的最新产品2008有没有这方面的特性,请各位大佬讲解下啊。
    2010年11月17日 14:46

答案

  • 你可以看看查询计划

    如果你查询的结果是2个子查询的内连接,sql server 就可以分别用2个cpu去计算2个子查询,然后在一起合并做inner join。(这个是我想象的一种情况)


    family as water
    2010年11月22日 10:56
  • 谢谢,stswordman<abbr class="affil">MVP</abbr><abbr class="affil">, 版主</abbr>用户奖牌用户奖牌用户奖牌用户奖牌,你这里说的是如何设置sql server 来实现支持多核cpu的。

    当 SQL Server 在具有多个微处理器或 CPU 的计算机上运行时,它将为每个并行计划执行检测最佳并行度(即运行一个语句所使用的处理器数)。

    我想再问问sql server 到底做了什么,根据什么检测最佳并行度的??

    Optimizer makes decision based on server config option 'cost threshold for parallelism', 'max degree of parallelism' and query hint maxdop. 
    2010年11月22日 14:53
  • 对于执行计划来说:

    如果你的计算机是多核的,默认情况下cpu会根据成本估算来生成执行计划,如果估算一个batch的执行超过5(这个值由cost threshold for parallelism来决定)秒钟,sqlserver就会考虑使用生成一个并行计划.

     

    对于整体的运行来说,就和windows类似,一个cpu对应一个workthread.


    有dba的职位吗(北京的),请联系我 stswordman#hotmail.com
    2010年11月23日 4:13
    版主

全部回复

  • 你好

    或者你可以參考以下URL

    http://msdn.microsoft.com/zh-cn/library/ms143760.aspx

    Please correct me if I mis-understood your questions.


    Chi
    2010年11月17日 16:41
  • SQL Server uses the operating system's thread services by keeping a pool of workers (threads or fibers) that take requests off the queue. It attempts to evenly divide the worker threads among the SQLOS schedulers so that the number of threads available to each scheduler is the Max Worker Threads setting divided by the number of CPUs. With 100 or fewer users, there are usually as many worker threads as active users (not just connected users who are idle). With more users, it often makes sense to have fewer worker threads than active users. Although some user requests have to wait for a worker thread to become available, total throughput increases because less context switching occurs.

    The Max Worker Threads default value of 0 means that the number of workers will be configured by SQL Server, based on the number of processors and machine architecture. For example, for a SQL Server running on a four-way 32-bit machine, the default is 256 workers. This does not mean that 256 workers are created on startup. It means that if a connection is waiting to be serviced and no worker is available, a new worker is created if the total is currently below 256. If this setting is configured to 256 and the highest number of simultaneously executing commands is, say, 125, the actual number of workers will not exceed 125. It might be even less than that because SQL Server destroys and trims away workers that are no longer being used. You should probably leave this setting alone if your system is handling 100 or fewer simultaneous connections. In that case, the worker thread pool will not be greater than 100.

     

    当 SQL Server 在具有多个微处理器或 CPU 的计算机上运行时,它将为每个并行计划执行检测最佳并行度(即运行一个语句所使用的处理器数)。您可以使用 max degree of parallelism 选项来限制并行计划执行时所用的处理器数。若要使服务器能够确定最大并行度,请将此选项设置为默认值 0。若要取消生成并行计划,请将 max degree of parallelism 设置为 1。将该值设置为大于 1 的数值来限制执行单个并行查询时所使用的最大处理器数。并行度设置的最大值由 SQL Server 的版本、CPU 类型和操作系统控制。如果指定的值比可用的处理器数大,则使用实际可用数量的处理器。如果计算机只有一个处理器,则将忽略 max degree of parallelism 值。

    http://technet.microsoft.com/zh-cn/library/ms181007.aspx


    有dba的职位吗(北京的),请联系我 stswordman#hotmail.com
    2010年11月18日 7:36
    版主
  • Chiyau:

    SQL Server 支持将处理器套接字的指定数量与每个套接字中的逻辑 CPU 数量相乘来支持多核cpu的么?

    例如,在下表中,下面的处理器将被视为单处理器:

    • 每个套接字层中有 2 个逻辑 CPU 的单核超线程处理器。
    • 具有 2 个逻辑 CPU 的双核处理器。
    • 具有 4 个逻辑 CPU 的四核处理器。
      把多核视为单核进行处理??麻烦讲解详细下,小弟新学。。
    2010年11月22日 8:38
  • 谢谢,stswordman<abbr class="affil">MVP</abbr><abbr class="affil">, 版主</abbr>用户奖牌用户奖牌用户奖牌用户奖牌,你这里说的是如何设置sql server 来实现支持多核cpu的。

    当 SQL Server 在具有多个微处理器或 CPU 的计算机上运行时,它将为每个并行计划执行检测最佳并行度(即运行一个语句所使用的处理器数)。

    我想再问问sql server 到底做了什么,根据什么检测最佳并行度的??

    2010年11月22日 8:49
  • 你可以看看查询计划

    如果你查询的结果是2个子查询的内连接,sql server 就可以分别用2个cpu去计算2个子查询,然后在一起合并做inner join。(这个是我想象的一种情况)


    family as water
    2010年11月22日 10:56
  • 谢谢,stswordman<abbr class="affil">MVP</abbr><abbr class="affil">, 版主</abbr>用户奖牌用户奖牌用户奖牌用户奖牌,你这里说的是如何设置sql server 来实现支持多核cpu的。

    当 SQL Server 在具有多个微处理器或 CPU 的计算机上运行时,它将为每个并行计划执行检测最佳并行度(即运行一个语句所使用的处理器数)。

    我想再问问sql server 到底做了什么,根据什么检测最佳并行度的??

    Optimizer makes decision based on server config option 'cost threshold for parallelism', 'max degree of parallelism' and query hint maxdop. 
    2010年11月22日 14:53
  • 对于执行计划来说:

    如果你的计算机是多核的,默认情况下cpu会根据成本估算来生成执行计划,如果估算一个batch的执行超过5(这个值由cost threshold for parallelism来决定)秒钟,sqlserver就会考虑使用生成一个并行计划.

     

    对于整体的运行来说,就和windows类似,一个cpu对应一个workthread.


    有dba的职位吗(北京的),请联系我 stswordman#hotmail.com
    2010年11月23日 4:13
    版主