五.内存使用
充裕的内存可以减少磁盘IO,在数据库系统中磁盘IO是极其昂贵的开销。当用户访问资料时如果在缓存中能够找到的话称之为“逻辑IO“,否则从磁盘读取称之为“物理IO“....
五.内存使用
充裕的内存可以减少磁盘IO,在数据库系统中磁盘IO是极其昂贵的开销。当用户访问资料时如果在缓存中能够找到的话称之为“逻辑IO“,否则从磁盘读取称之为“物理IO“
内存问题大致是以下几个方面:
1.总的数据高速缓存太小。
2.过程高速缓存太小。
3.在SMP系统中只配置了缺省高速缓存,导致对高速缓存的争用。
4.高速缓存大小不适用于特殊的应用。
5.IO大小不适用于特定的应用。
高速缓存分类:
1. 数据高速缓存。用于数据,索引和日志页
2. 过程高速缓存。用于存储过程和触发器以满足短期内存需求。
确定过程高速缓存的大小可用以下办法实现:
过程高速缓存大小=最大用户并发数目*最大的计划大小*1.25
具体如下:在使用一段时间的服务器上用dbcctraceon(3604)将信息写到屏幕,然后运行dbcc memusage确定最大的查询计划的大小,然后根据应用确定并发用户数量就可以大约得到高速缓存的大小了。其实在我们的ERP应用中最大的计划所需内存在450K左右,所以,一般来说,过程高速缓存的大小到100M肯定是够用的,并且当过程高速缓存不够时会有701的错误发生。
Sybasedefault只有”default data cache”,并且只有一个2K的缓冲池,对于大多数的情况这都是不适合的,我们需要建立命名高速缓存并将对象绑定到高速缓存。
Sybase支持的缓冲池大小有2K,4K,8K,16K。给tempdb建立单独的命名高速缓存,并合理分配缓冲池,一般4K的logIO的大小能够得到比较好的性能。在SMP的环境中还有一个问题就是螺旋锁的竞争,当用sp_sysmon观察到资料缓存螺旋锁争夺超过10%时就需要分区。sp_cacheconfig‘cache name’,’cache_partition=X’就可以对缓存进行分区了。
六.sp_sysmon 的使用
sp_sysmon是ASE用来监控服务器在特定采样期间内的数据库的活动。在典型负载情况下能够提供服务器运行状况的描述,是性能调整的重要工具。以下的一些信息不是同sp_sysmon的输出顺序一样,但需要重点注意,这些信息来自Sybase的性能调整手册,仔细看了后觉得说的很是简洁明白,也就没有加入设么自己的东西了。其用法很简单,sp_sysmon“HH:MM:SS”即可,但sp_sysmon在运行时对性能有影响,特别是在SMP环境下。还有有时sp_sysmon并不能提供完全正确的资料,例如采样时间太长或者太短。
DataCache Management
Cache Statistics Summary (all caches)
Cache Turnover (缓存周转)
Buffers Grabbed (缓存抢夺。所有缓存中替换的缓冲区数量)
Buffers Grabbed Dirty (缓存抢夺脏页。如果此值不为0代表严重性能问题)
Large I/O Effectiveness (大I/O效率)
Page by LRG I/O cached
Page by LRG I/O used (此两条信息报告由大I/O引入到高速缓存中及使用的页)
Asynchronous Prefecth Activity (异步预取活动)
APF issued (APF成功应用的次数)
APF Denied due to (不被大I/O的原因)
APF I/O overloads (缺少磁盘I/O结构或者由于磁盘信号争用而被拒绝的次数。如果因磁盘信号争用而引起检查高I/O发生处的对象物理放置)
APF Limit overloads (超出可用于异步预取的缓冲池的百分比。此值由global async prefetchlimit所影响)
APF Reused overloads (由于页链扭结或因APF引入的缓冲区在被使用前换出而使APF被拒绝)
APF buffers found incache (报告在资料高速缓存中找到的来自APF预先设置的缓冲区数量。异步预取使用快速扫描在资料高速缓存中尝试查找其需要的页,而不持有高速缓存螺旋锁。如果此操作不成功,则持有螺旋锁全面扫描)
Other asynchronousprefetch statistics
APF used (报告由异步预取引入高速缓存并在采样期间使用的页数)
APF wait for I/O (一个进程被迫等待异步预取完成的次数。这表示欲取未能及时发生,从而使页未能在查询前位于高速缓存中。此值有一定百分比是合理的,原因如下:
1. 第一个预取请求肯定需要等待
2. 顺序扫描到新的分配单元并发出预取请求是,查询需要等待直到第一个I/O完成
3. 每次费集群索引扫描找到一组限定行并发出预取请求时,需等待第一页返回。其它可能的影响包括每页上需要完成的处理数量及I/O系统速度。
APF Discard (异步预取读入并在使用他们之前放弃的页数。如果此值较大可能表示增加缓冲池大小能有助于提升性能。也可能表示APF正将页引入到查询不需要的高速缓存中)
Cache Management by Cache
Cache search , hitand miss information (缓存命中次数基本等于statistics io的逻辑读次数,未命中次数等于物理读次数。但sp_sysmon输出的值总是大于statisticsio的次数,因为其包含系统表io,日志页和OAM页同其它系统开销。如果命中率很高添加内存可能对性能提升没有太大作用)
Found in wash (在高速缓存中的清洗部分找到所需要的页的次数。如果清洗部分高速缓存命中百分比很高,可能意味着清洗区过大。对于只读或写操作次数较低的高速缓存并不是问题)
(较大的清洗部分会导致物理IO的增加,因为在他们通过清洗标记时ASE启动所有脏页中的写操作。如果清洗区中的页写到磁盘并进行第二次更新则是浪费io。如果必要,可更改清洗区大小。如果减小清洗区大小,可在完全负载的情况下再次sp_sysmon并检查值大于0的”Grabbeddirty“的输出。)