2009年2月25日星期三

Sybase ASE12.5内存配置(2)

ASE如何分配内存

1. logic page size
所有的数据库及数据库中的对象都采用同样的logic page size,logic page size在安装ASE时指定,可选项有2,4,8和16K。allocation page,object allocation map(OAM) page,data page,index page,text page等都建立在logic page之上。更大的logic page size值可以使你能创建更大的row,同时也可以使数据库读取数据时的效率更高,因为每一页更大,所包含的数据也更多。
logic page size是一个服务设定值,你无法对单个数据库进行单独设置,同时数据库中的每一行也不能存在于多个页之上。
extent: 数据库为对象分配空间时使用extent,每一个extent相当于8个logic page size大小。
更大的logic page size值也使得一些小的表的空间的最后一页所剩余的空间也更大。
数据库根据logic page size 不同,需要的最小磁盘空间数也不同,见下表:
2K 2MB
4K 4MB
8K 8MB
16K 16MB
内存分配的配置参数与logic page size不尽相同,无论logic page size设置多大,绝大多数内存分配参数采用2K,其中包括一下几个重要的内存配置参数:

2. 磁盘空间分配
磁盘空间分配以2K为单位。
3. logic page size不是默认时的处理
当logic page size设置为2K时,default data cache默认是8M大小,等于2048 buffers,而logic page size是16k时,如果仍然采用8M的default data cache,则只有256 buffers。如果buffer数量过小,在一个忙碌的系统中,buffers总是处于重写过程中,会导致系统整个运行速度变慢。所以当logic page size是默认的4倍时,你也需要将default data cache也设为默认的4倍。
4. Heap memory
Heap memory
是在启动时即已确定,用于当用户任务所耗堆内存过大时动态分配heap memory给用户任务使用,用户任务完成后将归还给heap memory。这样,可以减少预先设定给用户任务(user connections, worker processes)的堆内存,同时提高效率。
配置参数是heap memory per user, sp_configure 'heap memory per user',***(amount_of_memory),单位是byte,默认是4096bytes。
sp_configure 'heap memory per user', 10 给10个用户连接分配默认heap memory。
sp_configure 'heap memory per user', 0, "4K" 给每个用户分配4k的heap memory。
ASE初始化分配给heap memory总量是1M,不包括在刚才指定分配的内存中。初始的heap memory将会用于所有的user connections和worker processes。所以,以下两个参数与heap memory的分配密切相关:
number of user connections
number of worker processes
查看现有heap memory size使用命令:select @@heapmemsize
4.1. 计算ASE设置的heap memory size
((1024 * 1024) + (heap memory in bytes)* (number of user connections + number of worker processes) )
For example, if your server is configured for:
* heap memory per user : 4K
* number of user connectins : 25 (the default)
* number of worker processes : 25 (the default)
@@heapmemsize reports 1378304 bytes.
And the estimated value using the formula above, is:
((1024 X 1024) + (4 * 1024 * 50)) = 1253376
Now, if you increase the number of user connections, the size of the heap memory pool increases accordingly:
sp_configure 'user connections', 100
@@heapmemsize reports 1716224 bytes.
The estimated value in this case comes out to be:
((1024 * 1024) + (4 * 1024 * (100 + 25) ) = 1560576



5.

没有评论:

发表评论