当前位置:文档之家› Sybase数据库性能优化

Sybase数据库性能优化

Sybase数据库性能优化
Sybase数据库性能优化

Sybase 数据库性能优化

在现有软硬件条件下,充分发挥数据库系统的潜能是DBA 追求的最高境界,然而,数据库性能调优是一个非常复杂的问题,不仅需要精通数据库的理论知识,更需要逐渐积累实践经验。这里主要针对Sybase 数据库简要介绍一下如何进行调优,及调优时所要注意的事项。

Sybase 数据库系统的性能的优化,是一项长期且受诸多因素影响的工作,它可划分为以下4 个层次:SQL Server 级:包括对内存的合理分配,锁操作和临时表的使用,与系统配置关联的磁盘的I/O 性能。数据库设计级:包括

数据库对象的设计,索引的创建,表中数据类型的选择,数据库设备的分配及使用。

应用程序级:包括T_SQL 查询语句的优化,应用级封锁,事务和游标的使用。操作系统级:包括硬件、操作系

统和网络对总体性能的影响。

在数据库应用系统的管理维护中,运行环境引起的性能劣化只有通过硬件的升级才能得到优化,在系统硬件配置和网络设计确定的情况下,影响系统性能的主要是其他三个层次方面的原因。在此就这三个方面进行简要讨论、总结。

1 SQL Server 级的调优

1.1 管理共享内存

数据库性能优化的首要方面是最优管理内存。数据库占用的共享内存分成数据缓冲( data cache )、存储过程缓冲

( Procedure cache )等几块。在isql 下使用sp_configure 'cache' 可以看到存储过程缓冲所占百分比( procedure cache percent ),整个数据缓冲大小( total data cache size ) 等参数。

1.1.1 存储过程缓冲( procedure cache )

存储过程缓冲保持以下对象的查询计划:

Procedures :存储过程

Triggers :触发器

Views :视图

Rules :规则

Defaults :缺省

Cursors :游标

存储过程不可重入,意即每个并发用户调用都会在内存中产生一个拷贝。Procedure ,triggers ,and views 当它们被装载到存储过程缓冲中时,被查询优化器优化,建立查询计划。如果存储过程在缓冲中,被调用时就不需要重新编译。如果存储过程缓冲太小,存储过程就会经常被其他调入内存的存储过程冲洗掉,当再次被调用时,存储过程又被调入内存,再重新编译,用户请求因此不得不等待。最严重的情况,如果存储过程缓冲不够,存储过程甚至都不能运行。所以在内存足够的情况下,存储过程缓冲参数比例尽可能大一些。

1.1.2 数据缓冲(Data Cache )

数据缓冲用来缓存数据页和索引页,是除去存储过程缓冲,系统其他占用的缓冲外的剩余内存空间。通过给服务器增加物理内存扩大数据缓冲,是最有效的方法。当然,如果不能加内存,就只能通过减少存储过程缓冲的比例等方法来扩大数据缓冲了。配置足够大的数据缓冲可防止其它服务器活动争用高速缓存空间,并加速使用这些表的查询,因为所需页始终都可在高速缓存中找到。同时,可以考虑将“热”表如:用户应用程序对其需求较大的表绑定到一个高速缓存上,而表上的索引绑定到其它高速缓存,以提高并发性。具体做法如下:

创建命名缓存

sp_cacheconfig cache_name ,” size[P|K|M|G] ”

例如创建一个10MB 的命名缓存pubs_cache :sp_cacheconfig pubs_cache ,”10M”

把表绑定到指定的命名缓存:

sp_bindcache cache_name ,dbname[ ,[owner.]table_name[ ,indexname| ” text only ” ]] 例如把titles 表绑定到上面刚建的命名缓存中:

sp_bindcache pubs_cache ,pubs2..titles

注意:每开辟一个缓冲占用16K 的系统内存,应根据服务器的内存大小来定义所要开的数据缓冲的个数。

1.1.3 tempdb 数据库的优化

缺省情况下,tempdb 数据库是放置在master 设备上,容量为2M ,而临时数据库是活动最为平凡的数据库常常被用来排序、创建临时表、重格式化等操作,所以tempdb 的优化应该受到特别的关注,缺省情况下,用于tempdb 的

system 、default 和logsegment 段在主设备上分配了2MB 空间。将第二个设备分配给tempdb 后,即可在default 和logsegment 段中将主设备删除。使用这种方式,可以确保tempdb 中的工作表和其它临时表不会和主设备上的其它使用相互争用。

优化tempdb 数据库有以下步骤:

第一步:调整临时库的位置

tempdb数据库缺省放在master设备上,将临时数据库发在分离的设备上是更可取的。

1)初始化一个用来存放临时数据库的设备(在SQL Advantage 中)

disk init

name="tempdb_dev",

physname="c:\sybase\\tempdb.dat",

vdevno=3,

size=10240

(注意:如果将tempdb 数据库放在多个设备上,需初始化多个数据库设备)

2)将临时数据库扩展到该一个设备上

alter database tempdb on tempdb_dev=3

3)打开tempdb 数据库,从段上删除master 设备

sp_dropsegment "default",tempdb,master

sp_dropsegment logsegment,tempdb,master

4)发出如下命令,检查default 段中是否不再包含master 设备

select dbid,name,segmap from sysusages,sysdevices

where sysdevices.low<=syusages.size+vstart

and sysdevices.high>=sysusages.size+vstart-1

and dbid=2

and(status=2 or status=3)说明:若将临时数据库放在多个磁盘设备上,可以更好的利用并行查询特性来提高查询性能。第二步:将临时数据库与高速缓冲进行绑定。

由于临时表的创建、使用,临时数据库会频繁地使用数据缓存,所以应为临时数据库创建高速缓存,从而可以使其常驻内存并有助于分散I/O :

1、创建命名高速缓存

sp_cacheconfig “ tempdb_cache ”, ” 10m” , ” mixed ”

2、重新启动server

3、捆绑临时数据库到tempdb_cache 高速缓存

sp_bindcache “ tempdb_cache t”em,pdb

4、若有大的I/O ,配置内存池

第三步:优化临时表大多数临时表的使用是简单的,很少需要优化。但需要对临时表进行复杂的访问则应通过使用多个过程

或批处理来把表的创建和索引分开。以下两种技术可以改善临时表的优化(系统中有auths和article表)

1 在临时表上创建索引

1) 临时表必须存在

2) 统计页必须存在(即不能在空表上创建索引)

2 把对临时表的复杂的使用分散到多个批处理或过程中,以便为优化器提供信息下面的这个过程需要进行优化:

create proc base_proc

as

select * into #huge_result from auths

select * from article, #huge_result where article.author_code=

#huge_result.author_code and sex= ”0” 使用两个过程可以得到更好的性能

1) create proc base_proc

as

select *

into #huge_result

from auths

exec select_proc

2) create proc select_proc

as

select * from article,#huge_result

where article.author_code=#huge_result.author_code and sex= ”0” 说明:在同一个存储过程或批处理中,创建并使用一个表时,查询优化器无法决定这个表的大小。

2 数据库设计级的调优

实现Sybase 数据库的优化,首先要有一个好的数据库设计方案。在实际工作中,许多Sybase 方案往往是由于数据库设计得不好导致性能很差。实现良好的数据库设计必须考虑这些问题:

2.1 逻辑数据库规范化问题一般来说,逻辑数据库设计会满足规范化的前3 级标准:第1 规范:没有重复的组或多值的

列;

第2 规范: 每个非关键字段必须依赖于主关键字,不能依赖于一个组合式主关键字的某些组成部分;

第3 规范: 一个非关键字段不能依赖于另一个非关键字段

遵守这些规则的设计会产生较少的列和更多的表,因而就减少了数据冗余,也减少了用于存储数据的页。但表关系也许需要通过复杂的合并来处理,这样会降低系统的性能。某种程度上的非规范化可以改善系统的性能,非规范化过程可以根据性能方面不同的考虑用多种不同的方法进行,通常使用以下方法来提高性能。

1. 如果规范化设计产生了4 路或更多路合并关系,就可以考虑在数据库实体(表)中加入重复属性(列)。

2. 常用的计算字段(如总计、最大值等)可以考虑存储到数据库实体中。

比如某一个项目的计划管理系统中有计划表,其字段为:项目编号、年初计划、二次计划、调整计划、

补列计划…,而计划总数(年初计划+二次计划+调整计划+补列计划)是用户经常需要在查询和报表中用到的,在表的记录量很大时,有必要把计划总数作为1 个独立的字段加入到表中。这里可以采用触发器以在客户端保持数据的一致性。

3. 重新定义实体以减少外部属性数据或行数据的开支。相应的非规范化类型是:

(1)把1个实体(表)分割成2个表(把所有的属性分成2 组)。这样就把频繁被访问的数据同较少被访问的数据分开了。这种方法要求在每个表中复制首要关键字。这样产生的设计有利于并行处理,并将产生列数较少的表。

(2)把1 个实体(表)分割成2个表(把所有的行分成2 组)。这种方法适用于那些将包含大量数据的实体(表)。在应用中常要保留历史记录,但是历史记录很少用到。因此可以把频繁被访问的数据同较少被访问的历史数据分开。而且如果数据行是作为子集被逻辑工作组(部门、销售分区、地理区域等)访问的,那么这种方法也是很有好处的。

2.2 生成物理数据库要想正确选择基本物理实现策略,必须了解和利用好数据库访问格式和硬件资源的操作特点,特别是内存和磁盘子系统i/o 。以下是一些常用技巧:

与每个表列相关的数据类型应该反映数据所需的最小存储空间,特别是对于被索引的列更是如此。比如能使用smallint 类型就不要用integer 类型,这样索引字段可以被更快地读取,而且可以在一个数据页上放置更多的数据行,因而也就减少了i/o 操作。

把一个表放在某个物理设备上,再通过sql server 的段把它的部分簇索引放在一个不同的物理设备上,这样能提高性能。尤其是系统采用了多个智能型磁盘控制器和数据分离技术的情况下,这样做的好处更加明显。

用sql server 段把一个频繁使用的大表分割开,并放在多个单独的智能型磁盘控制器的数据库设备上,这样也可以提高性能。因为有多个磁头在查找,所以数据分离也能提高性能。

用sql server 段把文本或图像列的数据存放在一个单独的物理设备上可以提高性能。一个专用的智能

型的控制器能进一步提高性能。

3 应用程序级调优

3.1 合理使用索引

索引是数据库中重要的数据结构,它的根本目的就是提高查询效率。SQL Server 采用基于代价的优化模型,它对每一个提交的有关表的查询,决定是否使用索引或用哪一个索引。因为查询执行的大部分开销是磁盘I/O ,使用索引提高性能的一个主要目标是避免全表扫描,因为全表扫描需要从磁盘上读表的每一个数据页,如果有索引指向数据值,则查询只需读几次磁盘就可以了。所以如果建立了合理的索引,优化器就能利用索引加速数据的查询过程。通常要想建立合理的索引需遵循下面

所介绍的一些原则。

对于每个可优化的子句,优化器都查看数据库系统表,以确定是否有相关的索引能用于访问数据。只有当索引中的列的1 个前缀与查询子句中的列完全匹配时,这个索引才被认为是有用的。因为索引是根据列的顺序构造的,所以要求匹配是精确的匹配。想用索引的次要列访问数据,就像想在电话本中查找所有姓为某个姓氏的条目一样,排序基本上没有什么用,因为你还是得查看每一行以确定它是否符合条件。如果1 个子句有可用的索引,那么优化器就会为它确定选择性。

在设计过程中,要根据查询设计准则仔细检查所有的查询,以查询的优化特点为基础设计索引。索引的设计通常有以下原则:

(1) 比较窄的索引具有比较高的效率。对于比较窄的索引来说,每页上能存放较多的索引行,而且索引的级别也较少。所以,缓存中能放置更多的索引页,这样也减少了I/O 操作。

(2) SQL Server 优化器能分析大量的索引和合并可能性。所以与较少的宽索引相比,较多的窄索引能向优化器提供更多的选择。但是不要保留不必要的索引,因为它们将增加存储和维护的开支。对于复合索引、组合索引或多列索引,SQL Server 优化器只保留最重要的列的分布统计信息,这样,索引的第1列应该有很大的选择性。

(3) 表上的索引过多会影响UPDATE、INSERT 和DELETE 的性能,因为所有的索引都必须做相应的调整。另外,所有的分页操作都被记录在日志中,这也会增加I/O 操作。

(4) 对1 个经常被更新的列建立索引,会严重影响性能。

(5) 由于存储开支和I/O 操作方面的原因,较小的自组索引比较大的索引性能更好一些。但它的缺点是要维护自组的列。

(6) 尽量分析出每一个重要查询的使用频度,这样可以找出使用最多的索引,然后可以先对这些索引进行适当的优化。

(7) 查询中的WHERE 子句中的任何列都很可能是个索引列,因为优化器重点处理这个子句。

(8) 对小于1 个范围的小型表进行索引是不划算的,因为对于小表来说表扫描往往更快而且费用低。

(9) 与“ORDER BY或“GROUP BY—起使用的列一般适于做分族索引。如果“ORDER B”命令中用到的列上有分簇索引,那么就不会再生成1个工作表了,因为行已经排序了。“GROUPBY”命令则一定产生1

个工作表。

(10) 分簇索引不应该构造在经常变化的列上,因为这会引起整行的移动。在实现大型交易处理系统时,尤其要注意这一点,因为这些系统中数据往往是频繁变化的。

3.2 避免或简化排序应当尽量简化或避免对大型表进行重复的排序。当能够利用索引自动以适当的次序产生输出时,优

器就避免了排序这个步骤。为了避免不必要的排序,就要正确地增建索引,合理地合并数据库表(尽管有时可能影响表的规范化,但相对于效率的提高是值得的)。如果排序不可避免,那么应当试图简化它,如缩小排序的列的范围等。

3.3 消除对大型表行数据的顺序存取在嵌套查询中,表的顺序存取对查询效率可能产生致命的影响。我们有时可以使用

并集来避免顺序存

取。尽管也许在所有的检查列上都有索引,但某些形式的where 子句会强迫优化器使用顺序存取,这一点也应注意。

3.4 避免相关子查询

如果一个列同时在主查询和where 子句中出现,很可能当主查询中的列值改变之后,子查询必须重新查询一次。而且查询嵌套层次越多,效率越低,因此应当尽量避免子查询。如果子查询不可避免,那么要在子查询中过滤掉尽可能多的行。

3.5 避免困难的正规表达式

mathes 和like 关键字支持通配符匹配,但这种匹配特别耗时。例如:select * from customer where zipcode like “ 98_ _ ,_ 即”使在zipcode 字段上已建立了索引,在这种情况下也还是采用顺序

扫描的方式。如果把语句改为:select * from customer where zipcode > “98000”,在执行查询时就

会利用索引来查询,显然会大大提高速度。

3.6 使用临时表加速查询把表的一个子集进行排序并创建临时表,有时能加速查询。它有助于避免多重排序操作,而且

在其他

方面还能简化优化器的工作。临时表中的行要比主表中的行少,而且物理顺序就是所要求的顺序,减少了磁盘i/o ,所以查询工作量可以得到大幅减少。但要注意,临时表创建后不会反映主表的修改。在主表中数据频繁修改的情况下,注意不要丢失数据。

4 Sybase 调优工具

在分析Sybase数据库的性能时,常要用到一些数据库系统本身提供的性能调优工具,以下是最常用的几个系统存储过程:

可以从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)

括号后英文短词是该模块参数。

在此简要分析一下sp_sysmon 对Adaptive Server系统运行情况的影响,有利于更好地熟悉系统性能,更为有效地进行系统管理,合理地利用和配置系统资源,达到系统性能调优的目的。这里要特别提一下sp_sysmon 存储过程,通过它可以得到数据库系统的性能基准报告,但只有在比较稳定的状态下产生时,方可作为参考和对照的依据。

执行步骤:

1 在isql中输入sp_sysmon 'egin_sampel '命令,点go 采样开始

2过一段时间后,输入sp_sysmon 'nd_sampel ''memory ”就显示出内存使用的相关信息

"IfipLlfi wifldlDW ---------------------------------------------------- sp_sysmDn"en d_s ampil Effm 曰 rnci r/'

siaii&tic^ Cleared al: as. 300T 10144:27

Stall sties Sampled at Sap 05. 2007 10:44:42 Samiple Inlevva I 00:00:1 5

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

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

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

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

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

根据相关的信息,结合服务器、数据库的一些参数,对相关的性能情况进行分析,并做岀调整等。

注:Sybase 数据库的一些查询优化方法与 SQL Server 2000相似,在此就不在多述,如有需要请参考

宝 Server : TESTSER VER :-SOOO Jata bessc master

合]ri 「in

耐日口年羽errii 启nt

per see ^Qunt % g>f IF ages Allocated o.l 10 2 n 佝

Pages iRele'a^ed Q.1 1.0

2 n/a java.sql.SQLWarnlna 010P4: Jfr 收井:朗M 了一仆输出参鲨口

前面的介绍

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

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数据库

sybase参数设置及性能优化解释

Sybase配置参数 sp_configure 'max online engines',4 go --配置启动cpu个数 sp_configure 'number of engines at startup',4 go --配置最大内存数 sp_configure 'max memory' ,2097151 go --分配最大存储过程缓存 sp_configure 'procedure cache',102400 go --配置高速缓存 sp_cacheconfig 'default data cache' , '700M' go --缺省缓存分配页大小 sp_poolconfig 'default data cache','200M','16K' go --网络包大小 sp_configure 'max network packet size',1024 go --最大连接数 sp_configure 'number of user connections',500 go --最大打开对象 sp_configure 'number of open object',9000 go --最大索引 sp_configure 'number of open index',10000 go --最大锁数 sp_configure 'number of locks',100000 go

--增加网络内存 sp_configure 'additional network memory',1024 go --锁内存 sp_configure 'lock shared memory',512 go --优化tempdb select dbid, name,segmap from sysusages, sysdevices where sysdevices.low <= sysusages.size +vstart and sysdevices.high >=sysusages.size+vstart -1 and dbid =2 and (status=2 or status=3) go use tempdb go sp_dropsegment 'default',tempdb,master go sp_dropsegment 'logsegment',tempdb,master go select dbid, name,segmap from sysusages, sysdevices where sysdevices.low <= sysusages.size +vstart and sysdevices.high >=sysusages.size+vstart -1 and dbid =2 and (status=2 or status=3) go sp_cacheconfig tempdb_cache, '100M' go sp_poolconfig tempdb_cache,'50M','16K' go

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