3.5.4-SYBASE数据库系统内存分配(参考模板)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.5.4 SYBASE数据库系统
1. 系统内存的整体管理
在SYBASE系统中,可以使用下列配置参数,对整个数据库系统的内存空间使用进行设置:
(1)MAX MEMORY(最大内存):设定整个数据库系统实例可以使用的最大内存数量,包括缓冲数据、程序代码的内存空间。
(2)TOTAL LOGICAL MEMORY(总逻辑内存):显示整个数据库系统所需内存空间的总和。该参数是一个只读的配置参数,用户无法更改。它是数据库系统根据所有和内存分配有关的配置参数的设置,进行计算而得出的系统所需内存空间的总和。这个配置参数的值必须小于或者等于最大内存,否则数据库系统无法启动。
(3)TOTAL PHYSICAL MEMORY(总物理内存):显示整个数据库系统在特定时刻使用的内存空间总和。该参数是一个只读的配置参数,用户无法更改。它显示数据库系统所有内存空间的总和,也即数据库系统实例在某个特定时刻所分配的内存空间总和。(4)ALLOCATE MAX SHARED MEMORY:设定数据库系统启动时,是否立即为系统分配所要求的最大内存。如果该参数被设置,在数据库系统启动时,将按照最大内存配置参数的设置,为数据库系统分配内存空间。在这种情况下,总物理内存就等于最大内存,如果数据库系统需要的总逻辑内存小于最大内存,则为数据库系统分配的部分内存空间不会被使用。(5)DYNAMIC ALLOCATION ON DEMAND:设定数据库系统启动时或者系统正常运行过程中改变了配置参数之后,是否立即按照配置参数,为系统的各个内存段分配所要求的空间。如果该参数被设置,将根据配置参数的设置,进行内存空间的分配,不管这些内存是否被用到。如果该参数没有被设置,将根据数据库系统的需要,为各个内存段分配空间。
在主机内存空间足够的情况下,为避免系统正常运行时动态的内存空间分配,导致内存空间不连续,影响到数据库系统的性能,可以设置配置参数ALLOCATE MAX SHARED MEMORY,从而在数据库系统启动时就为其分配连续的、可使用的最大内存空间。
需要说明的是,由于SYBASE系统在估计内存需求的方式和实际获取内存以供使用的方式上有一些差异,因此理论上在最大内存、总逻辑内存、总物理内存之间应当具有相等关系时,使用系统命令查看,这三个配置参数在数值上会有一些差别。
2. 系统内存的空间结构
整个SYBASE系统的内存结构大体上可以分为四个部分:数据高速缓存(data cache)、过程高速缓存(procedure cache)、内核和服务器结构(kernel and server structure)、可执行代码,具体的结构见图1-6。
(1)数据高速缓存
数据高速缓存用来存放用户数据、索引和事务日志,就是第3.2.3和第3.2.5两节中讲
到的用户数据缓冲区和日志缓冲区
。
在缺省情况下,日志缓冲区并没有被设置。代理线程生成的事务日志存放在自己的私有内存空间中,由代理线程写入磁盘。为提高数据库系统的性能,可以在数据高速缓存中配置日志缓冲区。这样代理线程将事务日志写入日志缓冲区,最后由日志写线程统一写入磁盘,可以减少磁盘的I/O操作。
下列配置参数和数据高速缓存有关:
TOTAL DATA CACHE SIZE:显示数据高速缓存的大小,是一个只读参数。用户可以使用命令sp_cacheconfig、sp_poolconfig,配置和管理数据高速缓存。
(2)过程高速缓存
过程高速缓存用来存放存储过程、触发器、SQL语句等已编译的执行计划,就是第3.2.4一节中讲到的SQL语句缓冲区。下列配置参数和过程高速缓存有关:
procedure cache size:设定过程高速缓存的空间大小。
(3)可执行代码内存区域
可执行代码内存区域用来存放数据库各种线程的执行代码,这部分加上后面的线程控制信息及堆栈缓冲,就是第3.2.1一节中讲到的进程缓冲区。
这部分内存空间的分配,由用户连接数(也即代理线程数)和工作线程决定,有以下相关配置参数:
NUMBER OF USER CONNECTIONS:设定数据库系统可以建立的用户连接数目。该参数也同时决定了数据库系统可以启动的代理线程的数目。
NUMBER OF WORKER PROCESSES:设定数据库系统可以启动的工作线程数目。
(4)内核和服务器结构内存区域
内核和服务器结构内存区域是SYBASE系统既关键又复杂的内存空间,除数据高速缓存、过程高速缓存、可执行代码内存区域所存放信息之外,所有其它系统信息都存放在这一内存空间。
SYBASE系统的技术资料中,没有对这部分内存的使用进行详细的描述。大体上来说,这部分内存空间包括以下的内容:
①线程的控制信息及堆栈缓冲
线程的控制信息及堆栈缓冲用来存放线程的堆栈、控制信息等,这部分加上前面的可执
行代码内存区域,
就是第3.2.1一节中讲到的进程缓冲区。这部分内存空间的分配,由用户连接数(也即代理线程数)和工作线程决定,有以下相关配置参数:
NUMBER OF USER CONNECTIONS:设定数据库系统可以建立的用户连接数目。该参数也同时决定了数据库系统可以启动的代理线程的数目。
NUMBER OF WORKER PROCESSES:设定数据库系统可以启动的工作线程数目。
STACK SIZE:设定每个线程使用的堆栈空间。线程使用此区域存放线程环境及本地数据。
HEAP MEMORY PER USER:设定每个用户的堆内存量。需要更多堆栈中内存的任务,可以从这里获取所需内存。
USER LOG CACHE SIZE:设定每个线程的日志高速缓存空间。
②数据字典(元数据)高速缓存数据字典高速缓存用来存放数据库以及表、索引、视图等信息,就是第3.2.2一节中讲到的数据字典缓冲区。用户可以通过间接的方式,来配置该部分的内存空间。下列配置参数和数据字典高速缓存有关:NUMBER OF OPEN DATABASES:设置能够同时打开的数据库的最大数量。
NUMBER OF OPEN INDEXES:设置能够同时使用的索引的最大数量。
NUMBER OF OPEN OBJECTS:设置能够同时打开的数据库对象的最大数量。
③锁表高速缓存
锁表高速缓存用来存放数据库系统中的所有锁信息,就是第3.2.6一节中讲到的锁表缓冲区。下列配置参数和锁表缓冲区有关:
NUMBER OF LOCKS:设定数据库系统中所有用户可用锁的总数。
3. 用户数据缓冲区的管理
在SYBASE系统中,数据高速缓存就是第3.2.3一节中讲到的用户数据缓冲区。SYBASE 系统采用多缓冲区技术。在最初的安装、配置完成后,系统中只有一个缺省的数据高速缓存。随后用户可以根据自己的需要,创建多个数据高速缓存。可以将经常需要访问的数据库对象绑定到特定的数据高速缓存中,在做了这样的绑定操作之后,该数据高速缓存就只供被绑定的数据库对象使用,从而避免和其它数据库对象的内存竞争。没有明确进行绑定的数据库对象,就使用系统缺省的数据高速缓存。
用户可以使用以下两种方式,进一步深化对数据高速缓存的管理:
(1)分区。可以将数据高速缓存分区,相当于在系统中建立了多个数据高速缓存,每一个分区都具有相同的内存空间,并独立地进行管理和维护。