sybase性能诊断
- 格式:docx
- 大小:22.73 KB
- 文档页数:13
sybase数据库慢的请留意数据库系统在当今的信息技术领域中发挥着重要作用,为各种应用程序的数据存储和管理提供支持。
然而,有时候我们可能会遇到Sybase数据库运行缓慢的问题。
本文将讨论一些可能导致Sybase数据库变慢的原因,并提供一些解决方案和优化策略。
一、索引设计不合理索引在数据库中起到加速查询操作的作用。
然而,当索引设计不合理时,可能会导致数据库查询变慢。
比如,过多的索引会增加数据库维护的负担,而过少的索引则会导致查询性能下降。
解决方案:对数据库进行分析,评估每个表的查询模式和频率,并根据这些信息,合理地设计索引。
避免创建过多冗余的索引,以免影响数据库性能。
二、存储空间不足Sybase数据库的存储空间管理对数据库的性能和稳定运行至关重要。
当存储空间不足时,数据库的读写操作会变慢。
此外,如果没有进行定期的空间清理,数据库中存储的日志文件会不断增长,进一步导致数据库性能下降。
解决方案:定期监控数据库的存储空间使用情况,合理规划并扩展存储空间。
同时,设置定期的空间清理任务,删除过期的日志文件等。
三、查询语句不优化编写高效的查询语句是提高数据库性能的关键。
当查询语句没有经过充分优化时,可能会导致数据库响应变慢。
解决方案:对于复杂的查询语句,使用Sybase提供的查询优化工具(如Explain Plan)进行分析,找出影响查询性能的因素,并进行优化。
避免使用不必要的子查询或者多次嵌套的查询操作。
四、硬件性能问题数据库的性能受到硬件的限制。
如果数据库运行在低配置的硬件环境下,可能会导致数据库响应变慢。
解决方案:评估数据库运行所在的硬件环境,确保硬件配置满足数据库的需要。
如果硬件配置有限,可以考虑升级硬件或者将数据库迁移到更高配置的服务器上。
五、数据库统计信息不准确数据库需要根据统计信息来优化查询执行计划。
如果数据库的统计信息不准确或者过期,会导致数据库查询慢。
解决方案:定期更新数据库的统计信息,以提高查询的准确性和效率。
ASE性能调优简易实验手册1,实验环境准备确定已经安装ASE15.01)安装实验文件;edb553 setup.exe解压到目标路径2)进入目标文件夹: cd C:\Sybase Courses\edb553\scripts\windows,查看对应文件:.bat; .bcp, .sql 三种类型文件3)执行文件:ptconfig150_setup.bat,初始化相关的设备,创建调优的实验数据库pubtune_db4)登录到server,查看所安装设备,数据库 sp_helpdevice , sp_helpdb3,调优工具箱1)建立一个benchmark,熟悉各调优工具同时开两个命令行窗口,在其中一个查看并执行mixed_load.bat ,mixed_load.bat bench模拟多个客户端同时登录时的操作,同时使用sp_sysmon监控运行状态,各客户端记录和sp_sysmon报告分别输出到对应名称文件。
另一个用sa登录到server,使用sp_who查看客户端登录和事务执行情况。
等所有客户端都执行完之后,查看所有的输出文件。
其中sp_sysmon输出的文件即为调优使用的 benchmark.2) 熟悉其他的工具-- 工具类1) Isql –p 查看执行时间Use pubtune_dbGoSelect * from titlesGo 1002)optdiag 查看表和索引的统计信息Optdiag statistics pubtune_db..space_table1 -Usa -P---set命令1)set statistics io on 某个语句的读写操作数目统计Use pubtune_dbGoSelect * from authorsGo2) set statistics time on 查看执行时间goSelect * from authorsgo3)set showplan ,noexec on 查看查询计划Select * from authorsGo--系统过程类1)进程行为类Sp_who,查看当前进程活动情况Sp_lock 查看锁的情况Sp_showplan 查看当前在执行进程的查询计划2)空间使用情况Sp_spaceused authors 对于给定表查看空间使用情况Sp_helppartition 对于分区表查看相关信息Sp_estspace authors, 1000 预估表占用的空间Sp_helpsegment 产看段的信息Sp_helpcache 查看高速缓存结构和绑定的对象信息3)配置情况Sp_configure 查看修改系统配置参数Sp_cacheconfig 创建命名缓存Sp_poolconfig 在数据缓存中创建大的缓冲池4)任务行为Sp_sysmon 监控cpu忙碌状态,网络包收发情况,磁盘读写情况Sp_monitor 对系统行为按给定时间间隔采样,报告各方面行为指标4,锁机制查看配置的锁数目对事务的影响,以及各种模式的锁对事务的影响查看系统配置的锁个数(缺省5000)sp_configure "number of locks".Use pubtune_dbGo1)行锁创建行锁表create table x (c char(1)) lock datarowsgo开始事务begin transelect @@trancount (结果返回1证明事务已经开始)go向表中插入值,执行4000次insert x values ("a")go 4000同时在另外窗口查询锁的情况 Sp_lock再次插入2000行数据insert x values ("a")go 2000再次在另外窗口查询锁的情况sp_lock锁不够,事务自动回滚。
文章描述了通过sp_sysmon对Adaptive Server系统运行情况有一个全面系统了解,有利于更好地熟悉系统性能,更为有效地进行系统管理,合理地利用和配置系统资源,达到系统性能调优的目的。
从18个方面了解在用系统性能状况,并在适当的时候利用环境参数进行性能调优:1、内核管理(kernal)2、应用管理(appmgmt)3、数据缓存管理(dcache)4、ESP管理(esp)5、索引管理(indexmgmt)6、锁管理(locks)7、内存管理(memory)8、元数据高速缓存管理(mdcache)9、任务管理(taskmgmt)10、监视器访问SQL的执行(monaccess)11、网络I/O管理(netio)12、并行查询管理(parallel)13、过程缓存管理(pcache)14、恢复管理(recovery)15、事务管理(xactmgmt)16、事务概要(xactsum)17、磁盘I/O管理(diskio)18、工作进程管理(wpm)括号后英文短词是该模块参数。
环境:1、用户数据库中有练习所用数据表auths和article2、数据表各有10万行数据3、用户具有查询、修改、删除等基本的数据库表操作权限步骤:执行sp_sysmon “00:10:00”(server级系统存贮过程,不需要打开某个数据库),或者执行如下格式的过程,查看具体操作批命令对应系统性能情况:sp_sysmon begin_sampleSQL语句或者存贮过程sp_sysmon commit_sample本实验采用sp_sysmon “hh:mm:ss”,性能模块名。
结论:通过此练习,可了解当前系统在各方面的系统运行状况,性能出现什么问题和不平衡不协调之处,学会使用相应的参数和措施进行解决和调优,不断比较对照调整前后的性能状况,最终改善系统性能。
说明:1、该命令执行结果集的开头相同如下,各分块练习不再一一列示:======================================================================Sybase Adaptive Server Enterprise System Performance Report======================================================================Server Version: Adaptive Server Enterprise/11.9.2/1031/P/NT (IX86)/OS 3.Server Name: Server is UnnamedRun Date: May 28, 2001Statistics Cleared at: 15:57:27Statistics Sampled at: 16:07:28Sample Interval: 00:10:002、执行结果集的每列信息提示:per sec :采样期间每秒的平均值per xact:采样期间每提交一个事务的平均值count :采样期间每秒的总计值% of total:占总数的百分比,根据不同情况各有不同3、结果集对应给出性能情况描述、分析以及可调性说明4、本练习只给出部分模块的监视结果(可能有删节),用sp_sysmon “hh:mm:ss”可看全部详细情况。
单元一:监视内核利用情况命令行:sp_sysmon “00:10:00”,kernal结果:Kernel Utilization (内核利用)------------------Engine Busy UtilizationEngine 0 1.8 %引擎繁忙程度应在80%-90%之间,如果长期在90%以上,应考虑增加引擎数来改善性能。
因为此时内部管理进程无法向磁盘写入,则检查点需要将许多页写回磁盘,而检查点进程很可能将CPU 的利用率提高到100%,导致响应时间明显增加。
CPU Yields by Engine per sec per xact count % of total------------------------- ------------ ------------ ---------- ----------Engine 0 6.6 0.6 3949 100.0 %引擎放弃CPU次数:% of total=1个引擎放弃次数/所有引擎放弃次数,如果显示引擎利用率较低,可通过放弃数判断是否真实反映引擎的停止情况。
增加“runnable process search count”(引擎放弃CPU给OS之前一个引擎循环查找可执行任务的次数)参数可增加CPU的驻留时间,而如果想减少引擎在空闲时检查I/O的时间,可减少该参数的值。
Network ChecksTotal Network I/O Checks 0.0 0.0 0 n/a引擎发送或接收网络包的次数。
引擎空闲时频繁检查网络包,如果该值很低而“CPU Yields by Engine”的值高,表明引擎可能被频繁放弃。
可能包括阻塞和非阻塞两种检查方式。
非阻塞方式不管有无I/O等待都对网络进行I/O检查。
如果引擎已被放弃并正执行阻塞网络检查,则在网络包到达以后仍保持一段睡眠时间(潜伏期)。
此时增加“runnable process search count”(缺省2000)参数可减少潜伏期,保持引擎有较长的循环检查时间,而不是过早被放弃。
Disk I/O Checks磁盘I/O检查情况:Total Disk I/O Checks 693.2 58.8 415939 n/aChecks Returning I/O 469.9 39.9 281921 67.8 %引擎对I/O情况的有效检查(I/O完成次数),如过高或过低,用“i/o polling process count”(Server的调度程序在检查磁盘I/O或网络I/O之前可执行的最大进程数)参数增加或减少检查频率。
通常说增加该值可增加有大量磁盘或网络I/O的应用的吞吐量,反之,减少该值有可改善其响应时间。
Avg Disk I/Os Returned n/a n/a 0.03020 n/a增加引擎在检查期间的等待时间可改善吞吐量,因为减少引擎检查I/O时间相应增加执行进程的时间。
单元二:监视并行查询管理命令行:sp_sysmon “00:10:00”,parall el结果:报告并行查询次数、执行期间调整了多少工作进程,以及在merge和sort操作时加锁情况。
Parallel Query Management-------------------------Parallel Query Usage per sec per xact count % of total------------------------- --------- --------- ------- ----------Total Parallel Queries 0.1 8.0 16 n/a优化器自动确定是否并行操作,以及为此使用多少工作进程。
WP Adjustments MadeDue to WP Limit 0.0 0.0 0 0.0 %会话级的限制受“set parallel_degree” or “set scan_parallel_degree”参数控制。
Due to No WPs 0.0 0.0 0 0.0 %缺乏可用的工作进程导致申请工作进程数减少。
可适当增加“number of worker processes” Merge Lock Requests per sec per xact count % of total报告并行merge操作的锁请求数,很快授予锁的数目,下面3种类型锁的等待情况:------------------------- --------- --------- ------- ----------Network Buffer Merge LocksGranted with no wait 4.9 438.5 877 56.2 %Granted after wait 3.7 334.5 669 42.9 %Result Buffer Merge LocksGranted with no wait 0.0 0.0 0 0.0 %Granted after wait 0.0 0.0 0 0.0 %Work Table Merge LocksGranted with no wait 0.1 7.0 14 0.9 %Granted after wait 0.0 0.0 0 0.0 %------------------------- --------- --------- -------Total # of Requests 8.7 780.0 1560Sort Buffer Waits per sec per xact count % of total------------------------- --------- --------- ------- ----------Total # of Waits 0.00.0 0 n/a并行排序所用“排序缓冲区等待”锁。
如果等待数较高,可考虑加大“number of sort buffers”的值。
======================================================================单元三:监视执行SQL的访问情况命令行:sp_sysmon “00:10:00”,monaccess结果: Monitor Access to Executing SQL(监视执行SQL的访问情况)-------------------------------per sec per xact count % of total------------ ------------ ---------- ----------Waits on Execution Plans 0.0 0.00 n/a每个试图使用sp_showplan但必须等待获得访问查询计划的读资格,报告等待次数。
Number of SQL Text Overflows 0.0 0.0 0 n/aSQL批文本超过文本缓冲区大小的溢出次数。
Maximum SQL Text Requested n/a n/a 0 n/a(since beginning of sample)“max SQL text monitored”(缺省为0)参数指定分配给每个连接用户的内存量,用以保存SQL 文本到内存,供sever监视器共享。