|
用响应时间和吞吐量对Sybase数据库性能调优Recovery Recovery Management Diskio DiskI/OManagement,磁盘I/O管理 Netio NetworkI/OManagement 1.5 用sp_sysmon可以得到数据库系统的性能基准报告,但要在比较稳定的状态下产生,方可作为参考和对照的依据。 1.6 理解存储方法 只有清楚数据库存储数据的底层细节,如数据页、索引页的物理结构,每一行的大小计算,不同类型列占用的宽度等等问题,才能对各种调优措施有个深入领会。关于这个问题,比较复杂和细致,请自行参阅有关书籍。 一般地,对于更改数据的操作,要尽量促进数据库进行直接更新( Direct Updates ),所以要遵守以下几条原则: 1)除非必要,避免使用允许null值的列和可变长度的列。 2)如果varchar 和 varbinary 列填充得比较满,毫不犹豫转成_char 和 binary 列。对于建表时指定的页填充率(page fillfactor)参数,要权衡确定数值大小。一般:小值,适合于有许多随机插入的表,该表的数据经常被删除,又经常被增加;大值,适合于大多数的数据被增加到表末尾,如客票系统的售票存根和退票存根表。 2 SQL Server级的调优 2.1 管理共享内存 数据库性能优化的首要方面是最优管理内存。数据库占用的共享内存分成数据缓冲(data cache)、存储过程缓冲(Procedure cache)等几块。在isql 下使用 sp_configure 'cache' 可以看到存储过程缓冲所占百分比(procedure cache percent),整个数据缓冲大小(total data cache size) 等参数。 2.1.1 存储过程缓冲(Procedure cache) 存储过程缓冲保持以下对象的查询计划: Procedures :存储过程 Triggers :触发器 Views :视图 Rules :规则 Defaults :缺省 Cursors :游标 存储过程不可重入,意即每个并发用户调用都会在内存中产生一个拷贝。 Procedure, triggers, and views 当它们被装载到procedure cache中时,被查询优化器优化,建立查询计划。如果存储过程在缓冲中,被调用时就不需要重新编译。如果procedure cache太小,存储过程就会经常被其他调入内存的存储过程冲洗掉,当再次被调用时,存储过程又被调入内存,再重新编译,用户请求因此不得不等待。最严重的情况,如果procedure cache不够,存储过程甚至都不能运行。所以在内存足够的情况下,procedure cache percent 参数尽可能大一些。 2.1.2 数据缓冲(Data Cache) 数据缓冲用来缓存数据页和索引页,是除去存储过程缓冲,系统其他占用的缓冲外的剩余内存空间。通过给服务器增加物理内存扩大数据缓冲,是最有效的方法。当然,如果不能加内存,就只能通过减少存储过程缓冲的比例等方法来扩大数据缓冲了。通过 sp_configure "extentI/Obuffers", 20(可调) 命令,在Data Cache中保留一些页专用于创建索引时使用,可以显著提高创建索引的性能。但要注意每开辟一个缓冲占用16K 字节的系统内存。 2.1.3 命名缓冲 通过如下的命令: 1> sp_helpcache 2> go 查看某客票数据库中命名缓冲,得到的结果如下: Cache Name Config Size Run Size Overhead DS30_Tran_Log 20.00 Mb 20.00 Mb 2.05 Mb Systemtable 20.00 Mb 20.00 Mb 2.05 Mb default data cache 0.00 Mb 4462.86 Mb 464.97 Mb left_base_center 16.00 Mb 16.00 Mb 1.57 Mb price_cache 8.00 Mb 8.00 Mb 0.85 Mb 可以看出有4个命名缓冲,分别绑定客票系统的应用日志表、一些重要且常用的系统表、余票表、票价系列表,另外1个是缺省数据缓冲。这种配置还不是最合理,应该进一步把Systemtable这个命名缓冲细分成很多个,每一个单独存放一张系统表。 责编:张欢 微信扫一扫实时了解行业动态 微信扫一扫分享本文给好友 著作权声明:畅享网文章著作权分属畅享网、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。 |
最新专题 推荐圈子 |
|