当前位置:文档之家› sybase性能诊断

sybase性能诊断

sybase性能诊断
sybase性能诊断

文章描述了通过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和article

2、数据表各有10万行数据

3、用户具有查询、修改、删除等基本的数据库表操作权限

步骤:执行sp_sysmon “00:10:00”(server级系统存贮过程,不需要打开某个数据库),或者执行如下格式的过程,查看具体操作批命令对应系统性能情况:

sp_sysmon begin_sample

SQL语句或者存贮过程

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 Unnamed

Run Date: May 28, 2001

Statistics Cleared at: 15:57:27

Statistics Sampled at: 16:07:28

Sample Interval: 00:10:00

2、执行结果集的每列信息提示:

per sec :采样期间每秒的平均值

per xact:采样期间每提交一个事务的平均值

count :采样期间每秒的总计值

% of total:占总数的百分比,根据不同情况各有不同

3、结果集对应给出性能情况描述、分析以及可调性说明

4、本练习只给出部分模块的监视结果(可能有删节),用sp_sysmon “hh:mm:ss”可看全部详细情况。

单元一:监视内核利用情况

命令行:sp_sysmon “00:10:00”,kernal

结果:

Kernel Utilization (内核利用)

------------------

Engine Busy Utilization

Engine 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 Checks

Total 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/a

Checks 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 Made

Due 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 Locks

Granted with no wait 4.9 438.5 877 56.2 %

Granted after wait 3.7 334.5 669 42.9 %

Result Buffer Merge Locks

Granted with no wait 0.0 0.0 0 0.0 %

Granted after wait 0.0 0.0 0 0.0 %

Work Table Merge Locks

Granted 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 1560

Sort 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/a

SQL批文本超过文本缓冲区大小的溢出次数。

Maximum SQL Text Requested n/a n/a 0 n/a

(since beginning of sample)

“max SQL text monitored”(缺省为0)参数指定分配给每个连接用户的内存量,用以保存SQL 文本到内存,供sever监视器共享。推荐值为1024。

======================================================================

单元四:事务概要

命令行:sp_sysmon “00:10:00”,xactsum

结果:

Transaction Profile(事务概要)

报告提交的事务数,要尽量减少多数据库事务的提交(一个事务对多数据库的访问)Transaction Summary per sec per xact count % of total

------------------------- ------------ ------------ ---------- ---------- Committed Xacts 11.8 n/a 7073 n/a

Transaction Detailper sec per xactcount% of total

------------------------- ------------ ------------ ---------- ----------

Inserts

APL Heap Table 13.6 1.2 8189 100.0 %

如果大量堆表数据插入,结合查看锁的堆表最后一页锁情况,是否引起严重的锁争夺,随之调整相应的数据表,避免因为锁资源争夺引起性能降低。

APL Clustered Table 0.0 0.0 0 0.0 %

对全页锁的表插入数据行,注意可能引起的页分裂。

Data Only Lock Table 0.0 0.0 0 0.0 %

------------------------- ------------ ------------ ---------- ----------

Total Rows Inserted 13.6 1.2 8189 100.0 %

单元五:事务管理

命令行:sp_sysmon “00:10:00”,xactmgmt

结果: Transaction Management(事务管理)

----------------------

用户日志cache(每个用户对应一个)降低了写入事务日志的次数,如果是多处理器系统

还减少了事务日志当前页的争夺,因而提高了性能。可配置环境参数“user log cache size”(缺省最低2048字节),太小导致用户日志常满并频繁写入事务日志,太大则每个连接用户都扩大,又造成内存浪费。原则是配置不超过事务完成写入事务日志的长度。

ULC Flushes to Xact Log per sec per xact count % of total

各种类型导致写入事务日志的次数

------------------------- ------------ ------------ ---------- ----------

by Full ULC 0.0 0.0 0 0.0 %

如果% of total的值超过20%,考虑增加环境参数“user log cache size”的值。

by End Transaction 11.8 1.0 7095 95.5 %

以显式或隐式的rollback或commit标志事务结束。值大表示有很多短小事务。

by Change of Database 0.0 0.0 12 0.2 %

如果值大,考虑减低ULC中大于2K的缓冲池,降低或去除大块I/O池。

by System Log Record 0.5 0.0 321 4.3 %

其% of total值大于20%并且ULC长度大于2048,考虑降低ULC的长度。

by Other 0.0 0.0 0 0.0 %

------------------------- ------------ ------------ ----------

Total ULC Flushes 12.4 1.1 7428

单元六:索引管理

命令行:sp_sysmon “00:10:00”,indexmgmt

结果: Index Management(索引管理)

索引可以加速数据检索,但同时又降低了更新的性能。

----------------

Nonclustered Maintenance per sec per xact count % of total

非聚簇索引维护情况:报告因为插入、删除、修改、页分裂等造成的索引维护次数。

------------------------- ------------ ------------ ---------- ----------

Ins/Upd Requiring Maint 0.0 0.0 0 n/a

影响索引的插入和修改的操作数,需要维护非聚簇索引。对于插入,有多少非聚簇索引,就需要增加多少索引维护的开销;对于修改,则只对相关的索引进行维护。

# of NC Ndx Maint 0.0 0.0 0 n/a

因为插入和修改需要对多少非聚簇索引进行维护。

Deletes Requiring Maint 0.0 0.0 0 n/a

# of NC Ndx Maint 0.0 0.0 0 n/a

影响索引的删除操作次数,以及需要维护的非聚簇索引数。

RID Upd from Clust Split 0.0 0.0 0 n/a

在APL(全页锁)的聚簇索引表发生页分裂次数,相应需要进行索引维护。

# of NC Ndx Maint 0.0 0.0 0 n/a

页分裂后对应的索引维护次数。

Upd/Del DOL Req Maint0.0 0.0 0 n/a

DOL表发生影响索引的修改删除操作次数。

# of DOL Ndx Maint 0.0 0.0 0 n/a

对应索引维护次数。

Page Splits 0.0 0.0 0 n/a

包括数据页、聚簇索引页和非聚簇索引页因为插入新行没有足够空间单元导致页分裂。页分裂造成修改索引页、修改页指针、增加锁资源争夺等从而降低性能。

如果页分裂度高(次数多),而又是对全页加锁表进行插入操作,并且表有组合键的聚簇索引,这时可通过改变那些索引的页分裂点来减少页分裂,即是说组合键的第一个键表中在用,第二个键列值按升序排列;也可考虑用fillfactor的合适配置来降低在聚簇索引的APL表的数据页以及非聚簇索引的叶子数据页上的页分裂。

建议对表插入行按照升序插入方式,这样发生页分裂点也是在插入行点而不是在页中间,这样能够提高性能。通过dbcc tune (ascinserts, 1, "表名")设置插入方式,0反之。

如果索引维护量大,会因为维护需要额外的进程、额外的I/O、额外的索引页锁从而影响性能。可以通过对比不同操作次数与导致的维护次数,如果维护次数很多,还发生页分裂、retries等现象,严重时可考虑不用索引。

单元七:锁管理

命令行:sp_sysmon “00:10:00”,locks

结果:

Lock Management(锁管理)

报告锁、死锁、锁提升和锁争夺的情况

---------------

Lock Summary(锁概述) per sec per xact count % of total

------------------------- ------------ ------------ ---------- ----------

Total Lock Requests 26.1 2.2 15676 n/a

总共的锁请求

Avg Lock Contention 0.0 0.0 0 0.0 %

平均锁争夺

Deadlock Percentage 0.0 0.0 0 0.0 %

死锁出现的比例

Lock Hashtable Lookups 26.1 2.2 15677 n/a

对hash表的表、页、行锁的查询次数。

Avg Hash Chain Length n/a n/a 0.00038 n/a

Hash链平均长度:采样期间每个hash桶的平均加锁数目。如果每个hash链超过4个锁,可用

参数“lock hashtable size”调整扩大加锁hash表的大小,尤其是大型bcp可配置更大。

Lock Detail per sec per xactcount % of total

------------------------- ------------ ------------ ---------- ----------

对于各种类型的锁细节,重点查看其立即授予和等待情况。

Last Page Locks on Heaps 堆表最后页锁

Granted 13.6 1.2 8189 100.0 %

Waited 0.0 0.0 0 0.0 %

------------------------- ------------ ------------ ---------- ----------

Total Last Pg Locks 13.6 1.2 8189 100.0 %

如果堆表最后一页锁的争夺激烈(尤其是热对象的等待时间过长),考虑建立聚簇索引,或者表分区来解决锁资源争夺问题。

Deadlocks by Lock Type per sec per xact count % of total

------------------------- ------------ ------------ ---------- ----------

Total Deadlocks 0.0 0.00 n/a

死锁出现次数。当很多事务同时访问同一个数据库时,会加剧锁资源争夺,严重时事务之间会发生死锁。可用sp_object_stats查明死锁位置。该过程报告资源争夺最激烈的10张表、一个数据库中资源争夺的表和单个表的争夺情况。语法为sp_object_stats interval [, top_n [, dbname [, objname [, rpt_option ]]]],查看锁争夺情况只需设置interval为“hh:mm:ss”。如果显示每种锁的争夺程度超过15%,应该改变加锁方式,比如表的全页锁改成数据页锁,数据页锁改成数据行锁等。

Deadlock Detection 死锁检测

Deadlock Searches 0.0 0.0 0 n/a

死锁检测次数。死锁检测将特花费时间,如果检测次数过多,用参数“deadlock checking period”(缺省500ms)调节死锁检测周期。

Lock Promotions 锁提升

Total Lock Promotions 0.0 0.0 0 n/a

锁提升指排它页锁到排它表锁、共享页锁到共享表锁、排它行锁到排它表锁、共享行锁到共享表锁、共享next_key锁到共享表锁。查看锁提升是否加剧了锁争夺或死锁发生,如果锁争夺激烈并且锁提升频繁,考虑调整锁的隔离级别,对全页锁表,需要2级也可强制为3级。

Lock Timeouts by Lock Type per sec per xact count % of total

------------------------- ------------ ------------ ---------- ----------

Total Timeouts 0.0 0.0 0 n/a

单元八:数据cache管理

命令行:sp_sysmon “00:10:00”,dcache

结果: Data Cache Management(数据cache管理)

---------------------

报告数据cache的自旋锁争夺、cache应用、cache击中错失、配置缓冲池的翻转、清洗缓存(包括脏页)、预取的请求与拒绝、读脏页请求等情况。

Cache Statistics Summary (All Caches)

-------------------------------------

per sec per xactcount % of total

------------ ------------ ---------- ----------

Cache Search Summary cache的击中和错失次数

Total Cache Hits 18.6 1.6 11171 89.9 %

Total Cache Misses2.1 0.2 1251 10.1 %

------------------------- ------------ ------------ ----------

Total Cache Searches 20.7 1.8 12422

Cache Turnover

Buffers Grabbed 0.2 0.0 102 n/a

缓存掠夺。Count表示cache缓存块链中从LRU末端取走的缓存块次数。

Buffers Grabbed Dirty 0.0 0.0 0 0.0 %

脏页掠夺。在从LRU末端取走脏页时必须等待将脏页写回磁盘。如果其值非零,可找出是什么cache受到影响,这事关cache的击中性能问题。

Cache Strategy Summary cache策略(对所有的cache)

Cached (LRU) Buffers 19.8 1.7 11880 100.0 %

报告有多少cache中的缓存块放置到MRU/LRU链的头部。

Discarded (MRU) Buffers 0.0 0.0 0 0.0 %

报告多少缓存块采用了获取-丢弃策略,缓存块用过以后被放到缓存块链的刷洗标记处。

Large I/O Usage

0.0 0.0 0 n/a

大块I/O请求使用次数,这里没有设置大块I/O,故均为0值,也没有其授权或拒绝使用情况。Large I/O Effectiveness

大块I/O的使用效果,百分比值低表示很少的页被带入cache供查询使用,可进一步查看单个cache的使用情况。

Pages by Lrg I/O Cached 0.0 0.0 0 n/a

通过涉及的页数衡量性能是否有益。低的百分比值意味着表的存贮结构很碎,或是不恰当的cache配置策略。

Asynchronous Prefetch Activity

0.0 0.0 0 n/a

异步预取情况可结合磁盘I/O管理查看。可看参数“global async prefetch limit”。

Other Asynchronous Prefetch Statistics

APFs Used 0.0 0.0 0 n/a

异步预取合格的页数。

APF Waits for I/O 0.0 0.0 0 n/a

进程等待异步预取完成的次数。表示查询需要的页没有尽早地完成异步预取,这样进程处于等待状态。出现一定的百分比是合理的:查询的首次异步预取请求通常需要等待;每次的顺序扫描移动到新的分配单元时发出预取请求,查询必须等待第一次的I/O结束;每次非聚簇索引扫描找到合适的行集,也会发出对页的预取请求,也要等待第一次的页返回。

APF Discards 0.0 0.0 0 n/a

报告已经被异步预取读入但在使用之前就被放弃的页数。如果其值高,建议增加缓冲池的尺寸单位(比如从2K增加4K、8K、16K的缓冲池)以改善性能,或者表示预取进入cache的很多页并不为查询所需要。

Dirty Read Behavior

Page Requests 0.0 0.0 0 n/a

隔离级为0的脏读请求的页数。

------------------------------------------------------------------------------- Cache: default data cache 缺省数据cache的情况:

per sec per xact count % of total

------------------------- ------------ ------------ ---------- ---------- Spinlock Contentionn/a n/a n/a 0.0 %

自旋锁只对SMP环境有用。当一个用户任务对cache的修改完成之前,其它任务将不能访问该cache而只有等待。虽然自旋锁驻留时间短,但对于高事务率的多处理器系统的性能依然有不好影响,如果自旋锁比例超过10%,应考虑建立命名cache或者是增加cache分片。Utilization n/a n/a n/a 100.0 %

下面是cache检查的具体情况:

Cache Searches

Cache Hits 18.6 1.6 11171 89.9 %

Found in Wash 1.1 0.1 677 6.1 %

Cache Misses 2.1 0.2 1251 10.1 %

------------------------- ------------ ------------ ----------

Total Cache Searches 20.7 1.8 12422

Pool Turnover

2 Kb Pool

LRU Buffer Grab 0.2 0.0 102 100.0 %

Grabbed Dirty 0.0 0.0 0 0.0 %

------------------------- ------------ ------------ ----------

Total Cache Turnover 0.2 0.0 102

Buffer Wash Behavior

Statistics Not Available - No Buffers Entered Wash Section Yet

Cache Strategy

Cached (LRU) Buffers 19.8 1.7 11880 100.0 %

Discarded (MRU) Buffers 0.0 0.0 0 0.0 %

Large I/O Usage

Total Large I/O Requests 0.0 0.0 0 n/a

Large I/O Detail

No Large Pool(s) In This Cache

Dirty Read Behavior

Page Requests 0.0 0.0 0 n/a

单元九:内存管理

命令行:sp_sysmon “00:10:00”,memory

结果:

Memory Management(内存管理)

per secper xactcount % of total

--------------------------- ------------ ------------ ---------- ---------- Pages Allocated 0.0 0.0 13 n/a

Pages Released 0.0 0.0 13 n/a

内存中分配一个新页的次数(相当于分配新页数),以及释放内存的页数。

单元十:磁盘I/O管理

命令行:sp_sysmon “00:10:00”,diskio

结果: Disk I/O Management(磁盘I/O管理)

-------------------报告server总体磁盘I/O行为,包括读、写和逻辑设备上的semaphore 争夺。

Max Outstanding I/Os per sec per xact count % of total

最大显著I/O数:server总体开销的最大I/O数,分别通过server和引擎表示。

------------------------- ------------ ------------ ---------- ----------

Server n/a n/a 10 n/a

Engine 0 n/a n/a 10 n/a

I/Os Delayed by

系统遇到I/O延迟问题,类似于I/O被server或操作系统限制阻塞一样。多数操作系统都有一个参数限制异步I/O数。可用sp_configure查看参数“allow sql server async i/o”。Disk I/O Structures n/a n/a 0 n/a

达到磁盘I/O结构极限从而被延迟的I/O数。当server超过了可用磁盘I/O的控制块数,I/O 就会被延迟,因为server在开始一个I/O请求时需要通过任务来得到一个磁盘I/O控制块。如果其值非零,通过设置增加参数值“disk i/o structures”(缺省256)来增加磁盘I/O控制块数,如果操作系统允许尽可能设置大一些,以使用光磁盘I/O结构的机会降到最小。

Server Config Limit n/a n/a 0 n/a

用参数“max async i/os per server”(缺省2147483647)进行调整server一次所用异步磁盘I/O请求数。

Engine Config Limit n/a n/a 0 n/a

引擎配置最大异步磁盘I/O请求数限制,用参数“max async i/os per engine”查看和调整。Operating System Limit n/a n/a 0 n/a

操作系统的限制数查看操作系统文档。

Device Activity Detail

----------------------

Device:

master.dat

master per sec per xact count % of total

------------------------- ------------ ------------ ---------- ----------

Reads

APF 0.0 0.0 0 0.0 %

Non-APF 0.2 0.0 102 78.5 %

Writes 0.0 0.0 28 21.5 %

------------------------- ------------ ------------ ---------- ---------- Total I/Os 0.2 0.0 130 1.5 %

Device Semaphore Granted 0.2 0.0 130 100.0 %

Device Semaphore Waited 0.0 0.0 0 0.0 %

-----------------------------------------------------------------------------

Sybase 12.5以上版本自带性能监控工具的使用方法

Sybase 12.5以上版本自带性能监控工具的使用方法 Sybase 12.5以上版本的性能监控工具使用 对于实现集中管理信息系统的系统管理员来说,挖掘数据库性能是一个技术活也是一个体力活,因为它不仅仅需要具备一定的数据库基础,还需要耐心的分析-你所管理的财务软件,数据库访问的瓶颈在哪里?你珍贵的cache里面,被你放了多少过气鸡蛋在里面?有多少是需要放在这个宝贝蛋里面,但是却被疏忽掉;到底是那几张大而无当的破表总是导致数据库服务卡来开去;有哪几个臃肿的存储过程比较糟糕,或者使用最多,耗费你宝贵的内存或者io最多;那几个设备最繁忙? 这些问题,以前需要一些昂贵的第三方DBMS管理工具来帮助你找到较为合适的优化方案,但是我相信大部分系统管理员都没有接触过这方面的管理工具,现在,sybase工具也收购了一个管理工具进来,用于应付sybase相对欠奉的性能问题(仅限个人意见),但是它并不是免费的,不过对于sybase12.5以上版本用户来说,sybase已经内置了一个小工具在sybase数据库服务里面,你只需要做非常少量的工作,就可以寻找出来一个最适合自己管理的信息系统业务风格的优化方案。 优化自己的数据库性能,基础就是回答上面的几个问题,这些问题的答案现在可以从montables里面找,sybase 12.5提供了一套完备的监控表,它只需要用sp_configure打开一个选项,sybase就会开启监控机制,不就你就可以从master库里面查询出来这一套表里面的内容,分析出来到底需要优化那些tables或者其他。 下面用unix下面的sybase来举例,该例开启了montables这个监控表。 Step 1:跑到unix主机那里,cd到$sybase/ase/scripts目录。 Step 2:isql -Usa -Ppassword -i installmontables Step 3:可以回到你的客户端那里,当然也可以继续用主机执行命令。 Step 4:sp_configure ‘enable monitoring’,1 Step 5:把一个或者多个财务软件用户(如果财务软件用户编号是0001,你的databases名字是cwbase1,那么该财务软件用户实际映射到数据库用户编号是cwbase1_0001,那么你不要操作0001用户,而是要操作cwbase1_0001用户)加入到组里面:mon_role, Step 6:现在sybase已经开始在运作性能监控了,建议最好在业务繁忙的时候打开monitoring选项,这些

sybase性能诊断

文章描述了通过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和article 2、数据表各有10万行数据 3、用户具有查询、修改、删除等基本的数据库表操作权限 步骤:执行sp_sysmon “00:10:00”(server级系统存贮过程,不需要打开某个数据库),或者执行如下格式的过程,查看具体操作批命令对应系统性能情况: sp_sysmon begin_sample SQL语句或者存贮过程 sp_sysmon commit_sample 本实验采用sp_sysmon “hh:mm:ss”,性能模块名。 结论:通过此练习,可了解当前系统在各方面的系统运行状况,性能出现什么问题和不平衡不协调之处,学会使用相应的参数和措施进行解决和调优,不断比较对照调整前后的性能状况,最终

Sybase数据库死锁对策

Sybase 数据库死锁对策 死锁的发生对系统的性能和吞吐量都有重要影响,经检测发现,管理信息系统的死锁主要是因为两个或多个线程(登录)抢占同一表数据资源。引起长时间抢占同一资源不是因为我们需要处理的事务太复杂,时间太长,而往往是因为我们在前端应用程序对数据库作操作时忘了提交.本文介绍一种处理解决这种死锁的方法。 Sybase 封锁原理 数据共享与数据一致性是一对不可调和的矛盾,为了达到数据共享与数据一致,必须进行并发控制。并发控制的任务就是为了避免共享冲突而引起的数据不一致。Sybase SQL Server 并发控制的方法是加锁机制(LOCKING ). 锁的类型 Sybase SQL Server 有三种封锁类型:排它锁(exclusive lock,简称X 锁);共享锁(share lock,简称S 锁);更新锁(update lock,简称U 锁)。这三种锁的相容矩阵表如下: ×:表示不兼容。∨:表示兼容。 Sybase SQL Server 是自动决定加锁类型的。一般来说, 读(SELECT )操作使用S 锁,写(UPDATE,INSERT 和delete )操作使用X 锁。U 它在一个更新操作开始时获得,当要修改这些页时,U 锁会升级为X 锁。 锁的力度 SQL Server 有两级锁:页锁和表锁。通常页锁比表锁的限制更少(或更小)。页锁对本页的所有行进行锁定,而表锁则锁定整个表。为了减小用户间的数据争用和改进并发性,SQL Server 试图尽可能地使用页锁。 当SQL Server 决定一个语句将访问整个表或表的大多数页时,它用表锁来提供更有效的锁定。锁定策略直接受查询方案约束,如果update 或delete 语句没有可用的索引,它就执行表扫描或请求一个表锁定。如果update 或delete 语句使用了索引,它就通过请求页锁来开始,如果影响到大多数行,它就要请求表锁。一旦一个语句积累的页锁超过锁提升阈值,SQL Server 就设法给该对象分配一个表锁。如果成功了,页锁就不再必要了,因此被释放。表锁也在页层提供避免锁冲突的方法。对于有些命令SQL Server 自动使用表锁。 锁的状态 SQL SERVER 加锁有三种状态: 1)意向锁(intend )—是一种表级锁,它表示在一个数据页上获得一个S 或X 锁的意向。意向锁可以防止其他事务在该数据页的表上获得排它锁。 2)阻塞(blocking,简记blk )—它表明目前加锁进程的状态,带有blk 后缀的锁说明该进程目前正阻塞另一个需要获得锁的进程,只有这一进程完成,其他进程才可以进行。 3)需求锁(demand )—表示此时该进程企图得到一个排它锁。它可以防止 可申请的锁 已有的锁 S U X S ∨ ∨ × U ∨ × × X × × ×

sybase性能优化的建议

最近优化了两个单位的数据库,通过跟踪后SYBASE都建议将命名Cache的cache replacement policy改为relaxed LRU replacement。 经过在这两个数据库的表现来看,的确获得了一定的效果,我觉得可能目前使用CACHE 的单位都会存在这么个问题,现将有关过程写一下与大家共享: 1、通过sp_sysmon ’00:05:00’得到连续5分钟内SYBASE 性能监控信息,分析SYBASE给出的 建议; 2、若有对命名Cache的优化建议,多数会建议使用relaxed LRU replacement;再有某些会 要求使用大I/O;修改方法可以是直接修改SYBASE.cfg文件中的相关内容,以ACCBJE_cache为例如下: [Named Cache:ACCBJE_cache] cache size = 16M cache status = mixed cache cache replacement policy = relaxed LRU replacement //直接将DEFAULT或其他任何内容为改为relaxed LRU replacement 即可 local cache partition number = DEFAULT 3、检查某些number of xxxx参数,有些设置的太大,可能没必要,比如锁,我认为几万可 能就能满足了,太大可能会占用太多内存(当然也可能是只有真正有那么多锁时才会占用,这点我没有确认),我所优化的这几个数据库开始都是几十万,可能完全没有必要。 另外,对于性能问题来说,通过sp_sysmon会得到很多信息,大家可以通过自己分析查找问题原因。 通过在wisql中,先执行dbcc traceon(3604)后,再执行dbcc sqltext(进程ID)可以得到该进程正在执行的SQL语句,对于查找问题也会有帮助,不过这个有时得到的SQL不全,不过可以作为参考了。

SYBASE数据库故障处理方法

SYBASE数据库故障处理方法 Sybase数据库故障处理方法 一、 Sybsystemprocs 库“挂起”解决办法 1. 修改Sybase.cfg 文件,修改Sybase 数据库可以修改系统参数. 2. $ vi Sybase.cfg 查找―allow updates‖ ,将其修改为1.(缺省值为0). 既 allow updates to system tables=1 重新启动系统. 3. 用 isql 登录到sql server 中,修改 master库中sysdatabases 表中 sybsystemprocs 库对应的 status 的值为-32768. $isql –Usa –P 1> update master..sysdatabases 2> set status = -32768 where name =‖ sybsystemprocs‖ 1>go 1>shutdown with nowait 2>go 关闭数据库 重新启动. 4.用 isql 登录到sql server 中,修改 master库中sysdatabases 表中 sybsystemprocs 库对应的 status 的值为0. $isql –Usa –P 1>update master..sysdatabases 2>set status = 0 where name =‖ sybsystemprocs‖ 3>go 1>shutdown with nowait 2>go 关闭数据库重新启动. 5. 将Sybase.cfg 中的‖allow updates to system‖ 的值改为0. 二、如何恢复master数据库 ASE can't setup and has no valid dump of master 1、编辑RUN_servername 在命令行最后加入:-T3607 2、单用户模式启动ASE $cd install $startserver -f RUN_servername -m 3、bcp out系统表 $bcp master..sysdevices out /directory.spec/devs -Usa -P -c $bcp master..sysdatabases out /directory.spec/dbs -Usa -P -c $bcp

MySQL数据库性能(SQL)优化方案-期末论文

高级数据库技术——期末论文 基于SQL查询的MySQL数据库性能优化研究 :XX 学号:2014XXXXX 学院:计算机学院

摘要: 查询是数据库系统中最基本也是最常用的一种操作,是否具有较快的执行速度,已成为数据库用户和设计者极其关心的问题。在研究开源数据库管理系统MySQL 查询优化技术的基础上,主要结合传统SQL操作优化、深度分析 MySQL 源代码、现代数据库发展几方面进行诸如参数调优,MySQL关联查询,重写相关规则等容展开优化分析研究。 关键词:查询优化,查询重用,查询重写,计划优化

一、传统SQL查询优化操作 1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。同样的,如果可以的话,我们应该使用MEDIUMINT而不是BIGIN来定义整型字段。 另外一个提高效率的方法是在可能的情况下,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。 对于某些文本字段,例如“省份”或者“性别”,我们可以将它们定义为ENUM类型。因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。 2.使用连接(JOIN)来代替子查询(Sub-Queries) MySQL从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。例如,我们要将客户基本信息表中没有任何订单的客户删除掉,就可以利用子查询先从销售信息表中将所有发出订单的客户ID取出来,然后将结果传递给主查询,如下所示: DELETE FROM customerinfo WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo ) 使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,

sybase基本操作

SYBASE基本操作 一、启动数据库 1、ps -ef | grep dataserver 查看sybase进程, Sybase有数据库进程和备份进程, 若都没看到则需要手动启动,进入sybase安装目录$sybase/ASE-15_0/install 启动数据库和备份进程 # ./startserver -f RUN_LINUXMZC --启动数据库RUN_”SYBASENAME”#./startserver -f RUN_LINUXMZC_BS --启动备份服务“RUN_backupserve” 启动后也可用#showserver查看 2、登录数据库 数据库启动后使用#isql -Usa -P -S 登录数据库, 注:sybase默认只有一个用户sa,默认密码NULL

二、sybase基本操作 1、查询数据库版本 >select @@version >go 注:isql中的命令都需要go来执行,如果发现写错了,可以用reset重新输入 2、查询数据库信息 >sp_helpdb 显示所有数据库和基本信息 3、查寻空间使用情况 >use basename >go >sp_spaceused >go

4、性能监控 使用指令sp_sysmon 格式:>sp_sysmon “hh:mm:ss”,model_name,表示监控指定时间指定模块,缺省为所有模块 1、内核管理(kernal ) 10、任务管理(taskmgmt) 2、应用管理(appmgmt) 11、监视器访问SQL的执行(monaccess) 3、数据缓存管理(dcache) 12、并行查询管理(parallel) 4、ESP管理(esp) 13、过程缓存管理(pcache) 5、索引管理(indexmgmt) 14、恢复管理(recovery) 6、锁管理(locks) 15、事务管理(xactmgmt) 7、内存管理(memory) 16、磁盘I/O管理(diskio) 8、元数据高速缓存管理(mdcache ) 17、工作进程管理(wpm) 9、事务概要(xactsum) 18、网络I/O管理(netio)

Sybase数据库故障处理方法

Sybase数据库故障处理方法 一、Sybsystemprocs 库“挂起”解决办法 1.修改Sybase.cfg 文件,修改Sybase 数据库可以修改系统参数. 2.$ vi Sybase.cfg 查找―allow updates‖ ,将其修改为1.(缺省值为0). 既allow updates to system tables=1 重新启动系统. 3.用 isql 登录到sql server 中,修改master库中sysdatabases 表中 sybsystemprocs 库对应的status 的值为-32768. $isql –Usa –P 1>update master..sysdatabases 2>set status = -32768 where name =‖sybsystemprocs‖ 1>go 1>shutdown with nowait 2>go 关闭数据库重新启动. 4.用 isql 登录到sql server 中,修改master库中sysdatabases 表中 sybsystemprocs 库对应的status 的值为0. $isql –Usa –P 1>update master..sysdatabases 2>set status = 0 where name =‖sybsystemprocs‖ 3>go 1>shutdown with nowait 2>go 关闭数据库重新启动. 5.将Sybase.cfg 中的‖allow updates to system‖的值改为0. 二、如何恢复master数据库 ASE can't setup and has no valid dump of master 1、编辑RUN_servername 在命令行最后加入:-T3607 2、单用户模式启动ASE $cd install $startserver -f RUN_servername -m 3、bcp out系统表 $bcp master..sysdevices out /directory.spec/devs -Usa -P -c $bcp master..sysdatabases out /directory.spec/dbs -Usa -P -c $bcp master..sysusages out /directory.spec/usages -Usa -P -c

最新Sybase数据库性能调优

S y b a s e数据库性能调 优

Sybase数据库性能调优

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 datacache size)等参数。 2.1.1 存储过程缓冲(Procedure cache) 存储过程缓冲保持以下对象的查询计划: Procedures :存储过程 Triggers :触发器 Views :视图 Rules :规则 Defaults :缺省 Cursors :游标 存储过程不可重入,意即每个并发用户调用都会在内存中产生一个拷贝。Procedure, triggers, and views 当它们被装载到procedure cache中时,被查询优化器优化,建立查询计划。如果存储过程在缓冲中,被调用时就不需要重新编译。如果procedure cache太小,存储过程就会经常被其他调入内存的存储过程冲洗掉,当再次被调用时,存储过程又被调入内存,再重新编译,用户

SYBASE数据库常见的问题总结

SYBASE 数据库常见问题总结 SYBASE 数据库常见问题总结 ..................................................................... 错误!未定义书签。 1. SYSLOGS日志满了进不了系统,如何清除日志启动系统 .................... 错误!未定义书签。 2. 数据库日志损坏时重建日志启动数据库的解决办法.............................. 错误!未定义书签。 3. 数据库处于可疑状态的解决方法.............................................................. 错误!未定义书签。4.Sybase系统崩溃了,没有备份,但设备文件还存在,如何恢复数据库?错误!未定义书签。 5.不小心直接删除了日志的设备文件,如何恢复数据库?..................... 错误!未定义书签。6.sa密码忘记了导致isql -Usa -P******进不去怎么办?......................... 错误!未定义书签。7.关于sybase的配置-(数据库慢的请留意) ........................................ 错误!未定义书签。8.设备路径更改的方法................................................................................. 错误!未定义书签。9.dump文件load后数据库访问不了解决办法........................................ 错误!未定义书签。10.sybase数据库备份方案........................................................................... 错误!未定义书签。11.master数据库状态被置为-32768后的处理方法 ................................... 错误!未定义书签。 1. SYSLOGS日志满了进不了系统,如何清除日志启动系统 业务系统数据库不能正常启动,对于这一类问题,我们按照如下步骤解决: 第一步,启用allow updates to system tables,这样可以使具有系统管理员角色的用户能够改变系统表并可创建和修改系统表的存储过程,其中系统表包括master数据库中所有Sybase 提供的表以及用户数据库中所有以“sys”开头的表和在sysobjects表中其ID值小于或等于100的表。系统表的不正确变更会导致数据库损坏和数据丢失,修改系统表时务必要使用begin transaction来保护数据库不受可能损坏数据库的错误影响,完成修改后应立即禁用allow updates to system tables。 1>sp_configure "allow update",1 2>go 第二步,Adaptive Server中的每个数据库在sysdatabases中都有相应的一行,安装Adaptive Server后,master数据库、model数据库、sybsystemprocs和tempdb数据库在sysdatabases 中都将有相应的条目,如果已经安装审计功能,sybsecurity数据库也将在其中有相应的条目。修改sysdatabases表,将testdb的状态修改为-32768,然后在关闭Adaptive Server后重新启动Adaptive Server。 1> update sysdatabases set status=-32768 where name = "testdb" 2>go 1>shutdown 2>go 第三步,由于事务日志已经很满,不能使用常规方法转储此事务日志,如果使用了dump

Sybase数据库故障处理方法

Sybase数据库故障处理方法 一、 Sybsystemprocs 库“挂起”解决办法 1.修改文件,修改Sybase 数据库可以修改系统参数. 2.$ vi 查找“allow updates” ,将其修改为1.(缺省值为0). 既 allow updates to system tables=1 重新启动系统. 3.用isql 登录到sql server 中,修改 master库中sysdatabases 表中sybsystemprocs 库对应的 status 的值为-32768. $isql –Usa –P 1>update master..sysdatabases 2>set status = -32768 where name =”sybsystemprocs” 1>go 1>shutdown with nowait 2>go 关闭数据库重新启动. 4.用isql 登录到sql server 中,修改 master库中sysdatabases 表中sybsystemprocs 库对应的 status 的值为0. $isql –Usa –P 1>update master..sysdatabases 2>set status = 0 where name =”sybsystemprocs” 3>go 1>shutdown with nowait 2>go 关闭数据库重新启动.

5.将中的”allow updates to system”的值改为0. 二、如何恢复master数据库 ASE can't setup and has no valid dump of master 1、编辑RUN_servername 在命令行最后加入:-T3607 2、单用户模式启动ASE $cd install $startserver -f RUN_servername -m 3、bcp out系统表 $bcp master..sysdevices out /devs -Usa -P -c $bcp master..sysdatabases out /dbs -Usa -P -c $bcp master..sysusages out /usages -Usa -P -c $bcp master..syslogins out /logins -Usa -P -c $bcp master..sysconfigures out /configures -Usa -P -c $bcp master..syscharsets out /charsets -Usa -P -c 4、shutdownASE 5、创建新master设备 $buildmaster -d -s (new_master_device_size以2K为单位) 6、编辑RUN_servername 将指定master设备指定为新创建的master设备,并删除在第1步中增加的参数。 7、删除/dbs、/usages文件中有关master、tempdb、model的内容。

Sybase数据库性能优化的具体过程

Sybase数据库性能优化的具体过程 用一个实例讲解了Sybase数据库性能优化的具体过程,具体内容请参考下文:共享锁 sp_getapplock 锁定应用程序资源 sp_releaseapplock 为应用程序资源解锁 SET LOCK_TIMEOUT 1800 锁超时期限设置 sp_configure 'deadlock checking period',5000 设置锁检测周期 sp_configure 'lock wait period',5000 设置锁的等待时间 sp_setrowlockpromote 设置基本个表的最大行锁升级数(锁数) sp_setrowlockpromote 'TABLE',TREECODE,500,500,100 sp_setrowlockpromote 'TABLE',LCD05,500,500,100 [Lock Manager] number of locks = 50000 #锁数 deadlock checking period = DEFAULT freelock transfer block size = DEFAULT max engine freelocks = DEFAULT lock spinlock ratio = DEFAULT lock hashtable size = DEFAULT lock scheme = DEFAULT lock wait period = DEFAULT

read committed with lock = DEFAULT 当很多事务同时访问同一个数据库时,会加剧锁资源争夺,严重时事务之间会发生死锁。可用sp_object_stats查明死锁位置。该过程报告资源争夺最激烈的10张表、一个数据库中资源争夺的表和单个表的争夺情况。语法为sp_object_stats interval [, top_n [, dbname [, objname [, rpt_option ]]]],查看锁争夺情况只需设置interval为“hh:mm:ss”。如果显示每种锁的争夺程度超过15%,应该改变加锁方式,比如表的全页锁改成数据页锁,数据页锁改成数据行锁等。 Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ --------- allow remote access 1 0 1 1 print recovery information 0 0 0 0 recovery interval in minutes 5 0 5 5 tape retention in days 0 0 0 0 Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ --------- global async prefetch limit 10 0 10 10 global cache partition number 1 0 1 1 memory alignment boundary 2048 0 2048 2048 number of index trips 0 0 0 0 number of oam trips 0 0 0 0 procedure cache percent 20 22426 20 20 total data cache size 0 89698 0 89698 total memory 47104 196608 98304 98304

sybase系统配置祥解

Sybase 安装及系统管理之上篇 RAW Device(裸分区) VS Filesystem Device 裸分区是指磁盘的一块物理分区,没有用作操作系统,其读写不通过操作系统缓冲。传统的Unix安装ASE推荐使用RAW Device确保资料的完整性和较好的IO性能。但在新版的Unix和Linux中UFS和JFS在资料完整性和读写性能的差距相较于裸设备已经非常微弱。还有就是裸设备的管理比较复杂。从ASE12.0 开始Sybase提供dsync的属性对数据库设备禁止write-cache(写回缓冲)以确保资料的完整性和可恢复性。裸设备的使用出于安全和资料完整性方面的考虑比性能考虑多。 Async I/O (异步I/O) 异步IO是在一个IO动作未完成时同时可进行另外的动作。异步IO对于数据库的IO性能有较大的影响。在AIX和HP中都需要通过重新编译内核来支持。 二.关于内存: 首先确定可用的总的物理内存然后减去操作系统,Backup, Monitor等Sybase相关软件的开销即为Sybase总的可用内存。(建议服务器只做单纯的 ASE服务器并要删除不必要的服务以减少开销,例如xwindow) 在Unix及Linux中需要调整一些核心参数以支持较大的物理内存。以下列出一些可能需要调整的参数: shmmax(最大共享内存段大小,单位为字节),shmall(可用内存的总数量,如果是字节同shmmax一样)。其余的像shmmin等参数请参考操作系统手册。 Sybase利用max memory确定最大可用内存量,具体内存的分配方式取决于以下两个参数allocate max shared memory和dynamic allocation on demand。Allocate max shared memory指定是否分配由max memory指定的最大内存,缺省不分配最大内存。Dynamic allocation on demand指定是否在请求时立即分配资源还是仅需要时分配,缺省是需要时分配。例如配置了用户连接数量只在用户连接到Sybase时才分配内存。 三.参数设定:(分组并只对常用参数进行说明) 1.Physical Memory: allocate max shared memory (指定是否分配由max memory指定的最大内存,缺省不分配最大内存) dynamic allocation on demand (指定是否在请求时立即分配资源还是仅需要时分配,缺省是需要时分配)

Sybase与sql server的优缺点

SQL Server与Sybase数据库的优缺点 一、数据库服务器 Sybase是一个面向联机事务处理,具有高性能,高可靠性的功能强大的关系型数据库管理系统(RDBMS)。SYBASE数据库的多库,多设备,多用户,多线索等特点极大地丰富和增强了数据库功能。因为SYBASE数据库系统是这样一个复杂的, 多功能的系统,所以对SYBASE数据库系统的管理就变得十分重要,管理的好坏与数据库系统的性能息息相关。 Sybase System 11.5的服务器端和新产品是Adaptive Server。它集成了原有的服务器系列,如SQL Server, SQL Anywhere, Sybase IQ, Sybase MPP等。它具有多处理处理多种数据源的能力,包括遗留的非关系数据和分布是的事务;提供了优化的数据存储与访问方法;提供了单一的编程模型。 SQL Server的新版本是SQL Server 7,SQL Server具有单进程愈多线索的体系结构。及SQL Server只有一个服务器进程,所有的客户都连接多这个进程上。但是,改进程有细分为多个并发的线索,他们共享数据缓冲区和CPU时间,能及时捕捉各用户进程发出的存取数据的请求,然后,按一定的调度算法处理这些请求,比操作系统直接对这些请求进行调度高效的多。 Microsoft 提供了一个数据库引擎,应用范围可以从运行 Microsoft Windows? 95/98 操作系统的移动膝上型电脑,到运行 Windows NT Server 操作系统企业版的兆兆字节对称多处理器群集。所有这些系统都能保证关键任务业务系统要求的安全性和可靠性。 SQL Server的事务处理量大,响应速度快,并能为数百或更多用户维持这种高性能。SQL Server首先在核心层实现了数据完整性控制,包括建表时申明完整性和用触发器机制定义与应用有关的完整性,支持分布式查询与更新。 二、开放性 SQL Server 只能在windows上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。Windows9X系列产品是偏重于桌面应用,NT server只适合中小型企业。而且windows 平台的可靠性,安全性和伸缩性是非常有限的。它不象unix那样久经考验,尤其是在处理

Sybase大量并发查询的综合优化

Sybase大量并发查询的优化 摘要: 在单Sybase服务器条件下,从多个方面对并发查询性能的提升进行了研究,并取得了较好的效果。 关键词:Sybase 并发查询优化 1引言 一个业务系统,有20台Sybase客户端需要高频度查询转发地址信息。转发地址信息,每天都有1%~10%的变更。随着业务数据的逐渐增大,Sybase服务器的CPU和IO也逐渐升高,业务高峰期还可能达到100%,导致查询响应缓慢,转发数据出现积压,实时性下降。 为了提高查询的性能,对Sybase大量并发查询的优化方法进行了多方面的研究。 2设计优化 设计优化,主要是直接影响服务器和客户端的设计优化。 2.1 专用索引 描述: 针对频繁使用的查询操作,设计专用的索引,一般能提高查询性能。 数据量越大,索引发挥的作用约明显。索引能使查询的时间呈几何指数级的下降。原来的全表扫描,在有索引条件下,只需要几次比较和寻址就可以定位,输出最终结果。 实施要点: 统计业务系统的所有查询指令和使用频度,将使用率高的查询条件的字段作为索引。 索引使用的字段,尽可能是取值比较丰富的,查询结果集在5%以下,索引才能发挥优势。

点评: 索引时数据库优化最直接,也是最复杂的方法。索引应该跟着数据和使用情况及时调整。 2.2 合并索引 描述: 有时,多个查询操作,每个都创建了专门的索引,以便提高查询性能,但,一个表的索引过多,会导致插入和修改数据性能下降,而且也增加了执行计划解析的时间。因此,应尽量控制索引的数量。 案例: 表(用户user,物品序号oid,信息info)。 由于插入和删除都使用(用户user,物品序号oid)作为条件,因此,这3个字段建了一个索引idx1。 由于查询总是使用(物品序号oid)作为条件,查询返回(用户user,信息info),因此,用这个字段建了一个索引idx2。 其实,idx1已经包含了idx2,但由于字段顺序问题,idx1无法用于查询的优化。调整idx1的字段顺序,形成idx3(物品序号oid,用户user),可以代替idx1和idx2,完成索引合并。合并后,查询也能使用idx3。 点评: 索引太多,不但占用存储空间,而且对插入操作的性能影响很大,应尽量控制索引的数量。 2.3 使用簇索引 描述: 如果表的一条记录的数据很小,使用簇索引(C lustered Index),可以减少从索引到数据的寻址过程。 实施要点: 创建索引时,使用关键字CLUSTERED ; 建聚簇索引需要至少相当该表120%的附加空间,以存放该表的副本和索引中间页 点评: 一个表的簇索引,至多1个。簇索引不一定总是比非簇索引性能高。 2.4 合理使用分区技术 描述:

日常工作中使用PowerBuilder和sybase遇到的问题

日常工作中使用PowerBuilder和sybase遇到的问题 (例子中的数据库名称为yanglao) 1.在PowerBuilder使用数据管道 在sybase中进行数据导入导出时,使用数据管道是最方便的一种方法,但也有缺点,数据量过大时,执行效率慢,甚至有时一张表需要几十个小时。如果Database Devices创建的不合理,数据库文件和日志文件不够大,在使用数据管道时,在途会停止操作。如果出现这种情况,先查看一下数据库的log space,如下图: 看一下Free(MB)是否有剩余,如果用完需要清楚日志。在SQL Advantage中执行下面语句:dump transaction yanglao with no_log 附数据管道的报错信息(百度中可搜索) Start()函数返回一个integer值时数据管道的运行是否成功,返回值的意义为: 1 函数执行成功 -1 打不开数据管道 -2 列数太多

-3 要创建的表已经存在 -4 要增加数据的表不存在 -5 未建立与数据库的连接 -6 参数错误 -7 列不匹配 -8 访问源数据库的sql语句致命错误 -9 访问目标数据库的sql语句致命错误 -10 已经达到指定的最大错误数 -12 不正确的表达法 -13 需要关键字、但未指定关键字 -15 数据管道已经在运行 -16 源数据库出错 -17 目标数据库出错 -18 目标数据库处于只读状态,不能写入数据 2.小写字符替换成大写字符 update table1 set sfz=str_replace(sfz,'x','X') str_replace(string要被替换的字符串, string用于替换的字符串,string替换成的字符串) 3.在sybase(版本sybase12.5)中创建database device后,找不到设备 业务情形:创建database后,重新启动数据库系统,在database device管理中找不到该设备。 原因:创建的设备超过2G 解决方法:将超过2G的设备进行分解,例如:需要建10G的设备的,可以建5个2G的设备 4.先打开workspace,再连接数据库报错: 提示信息为: DBMS SYC Adaptive Server Enterprise is not supported in your current installation 解决方法: 百度了许多中方法,都没有解决。自己给powerbuilder打上补丁,问题解决 5.关于sybase的客户端字符属性的问题 字符集的安装 设置默认字符 sp_configure 'default character set id',171 具体步骤: ?(这里SYBASE的安装路径为c:\sybase) c:\>cd \sybase\charsets\cp936 ?c:\sybase\charsets\cp936> charset -U用户名(默认sa) -P密码-S数据库服务器名称 binary.srt cp936 更改默认字符集为cp936(在SQL环境中). ?执行select name,id from syscharsets(会列出字符集对应的id号) ?找到name为cp936对应的id(假设为171) ?执行sp_configure "default character set id",171 6. 重启server两次(注:第一次启动后, server会自动宕掉,需要第二次重启后才能使用) 6.备份还原sybase数据库

相关主题
文本预览
相关文档 最新文档