从ASE 15.7开始,其包括两个内核(kernels):threaded kernel和process kernel。本文将对ASE 15.7这两个内核模式做一基本的介绍,使得大家能够对其有一基本了解。
一、 两种内核模式
可以通过“kernel mode”server参数进行设置(sp_configure "kernel mode", 0, "process" 或sp_configure "kernel mode", 0, "threaded" ),如果查看当前ASE的核心模式,可以访问@@kernelmode全局变量。
设置ASE使用哪种内核就确定了ASE Server运行在如下哪种模式下:
1. Threaded mode
(1) ASE Server作为一个独立的多线索化操作系统进程(不管有多少个引擎,从操作系统层面看都只有一个进程),它使用运行在线程池(thread pools)中线程(threads)上的引擎(engines)处理SQL查询语句。在这种模式下,ASE使用一些线程(threads,又叫做engine threads)作为引擎(engines)。
(2) Threaded mode使用单独/额外的线程(syb_system_pool线程池中的线程,又叫做非引擎线程nonengine threads/RTC threads)而不是由引擎(引擎线程)来管理I/O。
2. Process mode
(1)对于进程模式下的ASE Server来说,如果设置了多个引擎,那么从操作系统层面看会有多个操作系统进程(有几个运行时引擎就有几个操作系统进程),它们之间互相协同作为一个单一的Server为客户端提供服务。
(2)对于进程模式下的ASE Server来说,引擎除了处理用户提交的SQL查询语句之外,还要管理I/O处理。
(3)数据库管理员能够设置引擎组来管理工作负载(workload)。 Process mode在Windows平台上不可用,即在Windows平台上ASE Server只有Threaded mode。
二、 两种内核模式的相同点
不管是哪种内核模式,ASE都使用引擎作为“处理器”以执行SQL查询(处理用户请求)。在“Process mode”下,引擎是每个进程的主线程(main thread);在“Threaded mode”下,引擎是线程池中的线程(这里的线程池又叫做engine thread pools)。不管采用哪种模式,ASE的多个引擎之间使用共享内存进行通讯。不管哪种内核模式,ASE对于基本的任务、引擎调度方式是相同的:
(1)ASE Server(而不是操作系统)动态地调度“client tasks/user connections”到可用的引擎(又叫做engine thread);ASE引擎负责执行所有的数据库功能,包括SQL查询语句处理和日志处理等。
(2)操作系统(而不是ASE Server)调度ASE threads(engine threads和nonengines threads)到CPU资源上运行,也就是说操作系统调度ASE 引擎(Threads)到物理CPU资源上,物理CPU资源可以是processors、cores或subcore threads。ASE不会区分是物理的cpu处理器、处理器核心(cores),还是硬件线程(subcore threads)。
三、Thread mode的优势
1. 提高混合负载情况下CPU资源的使用效率
对于很多工作来说,“Threaded mode”要比“Process mode”使用显著少的CPU资源,但却能交付相同或更好的性能。“Threaded mode”没有“task-to-engine”的密切关系(affinity),因此它能够在I/O密集和CPU密集混合负载情况下减少相互之间的干扰,具有更好、更一致、更可预知的性能。
2. 充分发挥最新硬件系统的优势,具有更好的扩展能力
“Threaded mode”可以使ASE Server比先前版本的内核更好地发挥最新硬件系统的优势,比如:有更多的处理器(processors)、处理器核心(processor cores)和硬件线程(hardware threads)。
虽然ASE 15.7改变了内核,但是查询处理器(query processor)保持相同。
3. 已有应用基本不需修改
ASE运行在“Threaded mode”时,大部分程序都不需要修改,只有少量的命令和存储过程需要改变。
对于这一点还需要在实战中进行检验!
从SAP Sybase的官方资料来看,建议使用Threaded mode,它代表了未来的方向;而原先的Process mode只是为了兼容先前版本。
阅读(3251) | 评论(4) | 转发(1) |