SQL Server 2005是否为每个连接创建一个线程?或者它如何管理连接?
答案 0 :(得分:4)
不,它有一个线程池,可根据需要创建或终止。连接与执行实际查询的工作线程分开管理。查询还可能导致多个线程用于并行执行计划。
一些较旧的基于unix的数据库,例如Informix SE或旧版本的Postgres,每个连接会分叉一个进程,通过附加到共享内存池来维护共享数据结构。 Oracle也可以在“共享服务器”模式下工作,(IIRC)也可以这种方式工作。
'Guru's Guide'系列的第三本书详细介绍了SQL Server 2000的内部架构;在大多数方面,SQL Server 2005没有显着差异。除此之外,还讨论了线程管理。作为奖励,本书的前半部分对Win32系统编程的关键方面进行了很好的概述,作为数据库服务器架构审查的背景资料。