【发布时间】:2017-11-11 09:18:37
【问题描述】:
我正在阅读一篇关于数据库管理如何工作的文章。在那篇文章中,作者提到一些现代数据库使用自己的线程而不是操作系统线程。 这是真的吗?如果是的话怎么可能?
【问题讨论】:
标签: database multithreading operating-system rdbms
我正在阅读一篇关于数据库管理如何工作的文章。在那篇文章中,作者提到一些现代数据库使用自己的线程而不是操作系统线程。 这是真的吗?如果是的话怎么可能?
【问题讨论】:
标签: database multithreading operating-system rdbms
我认为不可能完全替换操作系统线程,但数据库可以使用其他“类似线程”的工具,例如 Fibers 或异步调用。
例如,Microsoft SQL Server 有一个名为 SQL Server Operating System (SQLOS) 的核心组件。 SQLOS 负责数据库的低级操作,如调度或资源管理。
SQLOS 改进了核心操作系统线程管理,以最大限度地减少代价高昂的上下文更改和代价高昂的用户内核模式切换。它还使用协作调度而不是抢占式 Windows 调度程序。
数据库操作由 worker 线程之一执行,这些线程由 scheduler 之一管理。
尽管如此,SQLOS 在非常低级别使用 Windows 线程就像任何其他应用程序一样,不同之处在于线程管理和调度。
有关自定义线程调度的更多信息,您可以查看 Windows 的用户模式调度(UMS) 文档。
【讨论】: