sql server学习基础之内存初探

2020-07-06 05:54:54易采站长站整理

                            General :一组大杂烩: 语句,语句编译,范式化,锁数据结构,事务上下文,表格,索引的元数据等。

                            Query paln:语句和存储过程的执行计划。

                            Optimizer:sql server在生成执行计划的过程中需要消耗的内存。

                            Utilities:像BCP, Log Manager,Parallel Queries,Backup

                 1.3    线程内存

                             为每个线程分配0.5MB的内存

                 1.4    第三方代码申请的内存

        如用户定义的CLR,Linked Server分布式查询从远程数据库取回大量数据。

  2. 按申请方式分类

      申请方式是指要先预先Reserve一块大的内存,然后再一小块一小块的commit。对Database Cache是会先Reserve,再commit。

    其他所有内存使用,基本都是直接commit,都叫Stolen。

  3. 按申请大小分类(上面的内存图就是这种分类)

    有二种内存申请单位:  一种是小于或等于8KB的,称为Buffer Pool,一次一个页面的这种分配,被称为single page allocation.

      一种是大于8kb的,称为Multi-page(以前叫MemToLeave),这种分配,被称为 Multiple Page Allocation.

    注意这里的很大一部分内存不受 sql server本身控制.因为第三方代码申请的内存都放在Multi-page里.

  内存分类方法之间的关系

类型

Database cache

数据页面缓冲区

Consumer

功能组件

3 Party code

第三方代码

Threads

线程

Reserved/Commit

一般不是

一般不是

不是

Stolen

不是

Buffer Pool

(single- page)

相关文章 大家在看