ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQL-OS介绍

SQL-OS介绍

原创 Linux操作系统 作者:hwtong 时间:2011-12-07 21:51:55 0 删除 编辑
SQLOS是一个单独的应用层,它位于SQLServer数据库引擎的最低层;SQLServer和SQL Reporting Services都是在顶层运行.SQLServer的早期版本在存储引擎和实际操作系统之间使用瘦接口层,通过该接口层,SQLServer可以调用操作系统来执行内存分配,计划资源,线程和工作管理,以及同步对象.不过,SQLServer中需要访问这些接口的服务可以位于引擎的任何部分.SQLServer需要管理内存,计划程序,同步对象等,因此任务变得越来越复杂,于是,Microsoft公司设计了单独的应用层来管理所有特定于SQLServer的操作系统资源,而不是让引擎的每个部分支持增加的功能.
SQLOS两个主要函数是计划和内存管理,SQLOS包括的其他函数如下.
1.同步化.同步化对象包括spinlocks,mutexes和系统资源上的特殊读/写锁.
2.内存broker.内存broker用于在SQLServer中的各种组之间分发内存分配,但是不执行任何分配,分配由你存管理器处理
3.SQLServer异常处理.异常处理涉及处理用户错误和系统产生的错误.
4.死锁检测.死锁检测机制不仅包括锁定,还包括检测任何占用资源的任务,这些任务相互阻塞.
5.扩展事件.跟踪扩展事件类似于SQL跟踪(SQL Trace)功能,但是它更有效.因为与SQL跟踪相比,跟踪过程在更低级别运行.另外,因为扩展事件层的级别非常低,因此可以跟踪更多事件类型.SQLServer2008资源调控器使用扩展事件管理资源使用率.
6.异步IO.异步和同步的区别在于,系统的那个部分实际用于等待不可用资源.SQLServer请求同步IO时,如果资源不可用,Windows内核将把西安曾放入等待队列中,知道资源可用为止;对异步IO而言,SQLServer首先请求Windows初始化IO,接着Windows启动IO操作,但是不阻止运行线程,然后SQLServer把服务器线程放在IO请求队列中,直到它从Windows获取资源可用的信号为止.
NUMA架构
SQLServer2008采用均衡负载的非一致性内存访问(NUMA)机制,默认情况下,计划和内存管理都可以使用NUMA硬件.使用NUMA时,可以使用某些特殊的配置.
NUMA的主要优势是可伸缩性,当你使用对称多处理(SMP)架构时,可伸缩性有明确的限制.使用SMP时,所有内存访问都发往相同的共享内存总线.当CPU数量相对较少时,SMP架构能正常工作;但是使用多个CPU竞争访问共享内存总线时,就会出现问题.硬件发展的趋势是拥有多个系统总线,每个处理器都有自己的内存,并且可能拥有自己的IO通道.不过每个CPU可以按照统一的访问方式访问与其他组有关的内存.每个组名为NUMA节点,并且节点通过高速互联方式想换链接.NUMA节点中的CPU树木取决于硬件生产商.和访问与其他NUMA节点相关的内存的比较,访问本地内存速度更快一些.这是使用非一致性内存访问明明的原因.
SQLServer2008允许你将一个或多个物理NUMA节点细分成更小的NUMA节点,该过程名为软件NUMA或软NUMA.使用多个CPU,但是没有硬件NUMA时,通常使用软NUMA,因为软件NUMA仅适用于细分CPU,所以无法细分内存.与硬件NUMA相比,你可以用软NUMA将硬件NUMA节点细分成更小的CPU组.另外,还可以将软件NUMA节点进行配置,以侦听他们自身的端口.
只有SQLServer计划程序和SNI是均衡负载的软件NUMA.内存节点是基于硬件NUMA而创建的,因此不受软件NUMA的影响.
TCP/IP,VIA,Named Pipes和共享内存可以利用NUMA的轮循计划机制,但是只有TCP和VIA可以绑定到特的NUMA节点集中.
下图展示了含有4个CPU的NUMA节点.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16754036/viewspace-712900/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 存储引擎
请登录后发表评论 登录
全部评论

注册时间:2009-07-06

  • 博文量
    116
  • 访问量
    281967