sybase参数设置及性能优化解释
- 格式:doc
- 大小:66.50 KB
- 文档页数:13
SYBASE系统参数调整1. max memory:此参数用于指定SYBASE数据库服务器在计算机中使用的最大内存量。
通过将此参数设置为较大的值,可以提高该数据库服务器的性能。
如果可用的内存较少,则应适当减小此值。
2. number of engines:此参数用于指定SYBASE数据库服务器使用的引擎数量。
增加此参数的值可以提高并发访问性能。
然而,将该值设置得太高可能会浪费资源。
一般来说,使用与服务器CPU数量相同的值是安全的做法。
3. max scan parallel degree:此参数用于指定SYBASE数据库服务器执行并行扫描时使用的最大并行度。
通过将此参数设置为较大的值,可以提高并行扫描的性能。
4. sys statistics:此参数用于指定数据库服务器在自动生成查询计划时使用的统计信息的有效期限。
适当设置此参数的值可以提高查询性能。
默认情况下,此参数的值设置为30天。
5. max degree of parallelism:此参数用于指定SYBASE数据库服务器在执行并行查询时使用的最大并行度。
增加此参数的值可以提高查询性能。
然而,将该值设置得太高可能会增加系统负载。
6. max worker processes:此参数用于指定SYBASE数据库服务器使用的最大工作进程数量。
适当增加此参数的值可以提高并发性能。
默认情况下,此参数的值设置为255,但在大型服务器上,可能需要适当增加此值。
7. tempdb设备数:tempdb是SYBASE数据库服务器用于处理临时数据的数据库。
将tempdb数据库分配到多个设备上可以提高临时数据处理的性能。
8. prefetch parallel degree:此参数用于指定SYBASE数据库服务器在执行预取操作时使用的并行度。
适当增加此参数的值可以提高查询性能。
9. max rows per stack:此参数用于指定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 = 16Mcache status = mixed cachecache replacement policy = relaxed LRU replacement //直接将DEFAULT或其他任何内容为改为relaxed LRU replacement 即可local cache partition number = DEFAULT3、检查某些number of xxxx参数,有些设置的太大,可能没必要,比如锁,我认为几万可能就能满足了,太大可能会占用太多内存(当然也可能是只有真正有那么多锁时才会占用,这点我没有确认),我所优化的这几个数据库开始都是几十万,可能完全没有必要。
另外,对于性能问题来说,通过sp_sysmon会得到很多信息,大家可以通过自己分析查找问题原因。
通过在wisql中,先执行dbcc traceon(3604)后,再执行dbcc sqltext(进程ID)可以得到该进程正在执行的SQL语句,对于查找问题也会有帮助,不过这个有时得到的SQL不全,不过可以作为参考了。
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 :游标存储过程不可重入,意即每个并发用户调用都会在内存中产生一个拷贝。
sybase 性能优化经验谈使用sybase数据库多年,有些经验,在数据库部署配置得当,平时监控维护做到位情况下,除此之外数据库的性能问题80%将会是由sql语句引起。
在编写sql语句时候,个人经验,以下几个问题中有大部分跟编写sql有关,必须引起重视。
经验一、where 条件左边最好不要使用函数,比如:select ... where datediff(day,date_column,getdate())>0这样即使在date_column列上建立了索引,也可能不会使用索引,而使用全表扫描。
这样的语句要重新规划设计,保证不使用函数也能够实现。
通过修改,一个系统过程的运行效率提高大约几十倍甚至上百倍!此外不要使用诸如like '%ab',不能充分利用索引,而要在%前加字符。
经验二、两个比较字段最好使用相同数据类型,而不是兼容数据类型。
比如int 与numeric(感觉一般不是太明显)。
经验三、复合索引的非前导列做条件时,基本没有起到索引的作用。
比如create index idx_tablename_ab on tablename(a,b)update tablename set c = XX where b>= XXX and ...在这个语句中,只用了索引列b而没用索引列a做查询条件,基本上索引没有发挥作用。
导致表扫描引起blocking 甚至运行十几分钟后报告失败。
一定要认真检查改正措施:在接口中附加条件update tablename set c = XX where a = XXX and b>= XXX或者建立索引类似于create index idx_tablename_ba on tablename(b,a)经验四、多个大表的关联查询,如果性能不好,并且其中一个大表中取的数据比较少,可以考虑将查询分两步执行。
先将一个大表中的少部分数据select * into #tmp from large_tablewhere ...然后再用#tmp 去做关联,效果可能会好不少。
sybase数据库性能调整-电脑资料数据库性能调优的一些小方面:1.1 性能指标数据库性能一般用两个方面的指标来衡量:响应时间和吞吐量,。
响应越快,吞吐量越大,数据库性能越好。
响应时间和吞吐量有些情况下不能一起得到改善。
1.2 调优级别对Sybase数据库性能调优,可以从四个方面进行:一) 操作系统级:对网络性能、操作系统参数、硬件性能等作改进。
二) SQL Server级:调整存取方法,改善内存管理和锁管理等。
三) 数据库设计级:采用降范式设计,合理设计索引,分布存放数据等。
四) 应用程序级:采用高效SQL语句,合理安排事务,应用游标,处理锁。
本文对第一、第三、第四方面的内容不做讨论,第二方面提到的概念只适用于Sybase数据库。
1.3 调优工具在分析Sybase数据库的性能时,要用到一些数据库系统本身提供的性能调优工具,包括几个系统存储过程:名称功能简要介绍sp_sysmon 企业级系统性能报告工具sp_lock 查看锁的情况sp_who 查看线程的活动情况sp_procqmode 存储过程的查询处理模式sp_configure 配置SQL Server系统级参数sp_estspace 估计创建一个表需要的空间和时间sp_spaceused 估计表的总行数及表和索引占用的空间sp_monitor 监视CPU、I/O的统计活动情况在利用isql等一些工具时,还可以设置查询会话中的几个选项,来显示SQL语句执行时的各种统计分析结果:指令 On 的含义set noexec on/off 分析SQL语句后,还要执行set statistics io on/off 统计SQL执行所需I/Oset statistics time on/off 统计SQL语句执行耗时set showplan on/off 显示查询计划1.4 sp_sysmon 的使用企业级性能报告工具、系统存储过程 sp_sysmon 的使用方法:在isql 下,首先输入 sp_sysmon 'begin_sample' 启动一个报告采样过一段时间后,再输入sp_sysmon 'end_sample' 结束上次报告采样或者紧跟一参数 sp_sysmon 'end_sample', "dcache" 结束上次报告采样,但只显示数据缓冲(Data Cache Management)这一部分的情况。
Sybase配置参数1Sybase配置参数1.1配置cpu个数sp_configure 'max online engines',4go1.2配置启动cpu个数sp_configure 'number of engines at startup',4go1.3配置最大内存数sp_configure 'max memory' ,2097151(拟分配内存/2K) go 1.4分配最大存储过程缓存sp_configure 'procedure cache',102400go1.5配置高速缓存sp_cacheconfig 'default data cache' , '700M'go1.6缺省缓存分配页大小sp_poolconfig 'default data cache','200M','16K'go1.7网络包大小sp_configure 'max network packet size',1024go1.8最大连接数sp_configure 'number of user connections',500go1.9最大打开对象sp_configure 'number of open object',9000go1.10最大索引sp_configure 'number of open index',10000go1.11最大锁数sp_configure 'number of locks',100000go1.12增加网络内存--sp_configure 'additional network memory',1024 go1.13锁内存sp_configure 'lock shared memory',512go1.14优化tempdbselect dbid, name,segmapfrom sysusages, sysdeviceswhere sysdevices.low <= sysusages.size +vstart and sysdevices.high >=sysusages.size+vstart -1 and dbid =2 and (status=2 or status=3)gouse tempdbgosp_dropsegment 'default',tempdb,mastergosp_dropsegment 'logsegment',tempdb,mastergoselect dbid, name,segmapfrom sysusages, sysdeviceswhere sysdevices.low <= sysusages.size +vstart and sysdevices.high >=sysusages.size+vstart -1 and dbid =2 and (status=2 or status=3)gosp_cacheconfig tempdb_cache, '100M'gosp_poolconfig tempdb_cache,'50M','16K'gosp_bindcache 'tempdb_cache',tempdbgosp_helpcache tempdb_cacheselect name,id from syscharsetsdbcc traceon(3604)dbcc memusage2数据库安装的优化2.1应用数据库使用裸设备若在UNIX(UNIXWARE)操作系统下安装数据库服务器,请将SYBASE应用数据库的设备(device)安装成裸设备。
目录1性能监控 (2)1.1操作系统性能监控 (2)1.2数据库性能监控例程 (2)1.3使用Sybase Cenral性能监控器监控 (2)2数据库参数调优 (3)2.1SybaseIq 12.7 建议设置选项 (3)2.2SybaseIq服务参数说明 (3)2.3文件存放 (4)3数据加载调优 (5)3.1推荐办法 (5)3.2装载数据时提示虚拟内存不足 (5)3.3使用union all 视图以便更快装载 (5)3.4单行处理 (5)4其它调优 (5)4.1选择合适的数据类型 (5)4.2无符号数据类型 (6)4.3性能优化选项 (6)1性能监控1.1操作系统性能监控使用如下命令对操作系统进行性能监控●vmstat●sar●topas●ps1.2数据库性能监控例程●sp_iqconnection 显示连接用户和版本●sp_iqcontext 显示运行参数●sp_iqspaceinfo 输出数据库对象使用空间情况●sp_iqstatus 数据库各种信息展现●sp_iqtablesize 输出制定表的大小●sp_iqgroupsize 输出指定成员如何获得Sybase IQ系统存储过程呢,我们使用select * from sysobjects where name like 'sp_iq%';返回结果中“name”列中显示为系统存储过程,我们可以研究其它的存储过程的含义1.3使用Sybase Cenral性能监控器监控可以按照如下所示使用Sybase Central监控服务器的统计信息。
●选择服务器●在“Statisticcs”选项卡上,右键单击名称并选择“Add to Performance Monitor“●单击“Performance Monitor“选项卡。
Sybase Central 仅跟踪从一个快照到下一个快照的差异,因此,在性能监视器中某些所选统计信息可能显示为无活动。
sybase性能优化sybase命令:去掉段:sp_dropsegment "logsegment", pay2, "dev01"⼀. SYBASE 系统参数调整1.内存/sbin/sysctl -w kernel.shmmax=3416386150shmmax是最⼤共享内存段,假如服务器上没有别的应⽤并且使⽤raw device可以将此参数调整到物理内存的90%,如果使⽤file system device 的话相应调⼩,因为file system buffer需要开销内存!修改后重新启动系统。
sp_configure "max memory",1500000 重启⽣效(设置为共享内存的75%)sp_configure "allocate max shared mem",1 启动的时候⾃动分配max memory指定的最⼤内存sp_cacheconfig "default data cache","1500m" 设置数据缓存(设置为max memory的⼀半)sp_cacheconfig "default data cache","cache_partition=2" 是CPU数量的倍数,对数据缓冲区分区sp_poolconfig "default data cache","64m","16k" 设置16K 数据缓存sp_poolconfig "default data cache","128m","8k" 设置8K 数据缓存sp_configure "procedure cache size",90000 存储过程数据缓存sp_cacheconfig 'tempdb_cache','200m','mixed' 创建命名⾼速缓存sp_bindcache 'tempdb_cache',tempdb 捆绑临时数据库到tempdb_cache⾼速缓存2.cpusp_configure "max online engines",2 设置使⽤的CPU数量sp_configure "number of engines at startup",2 启动时使⽤CPU数量3. ⽹络sp_configure "default network packet size",2048 设置⽹络传送包的⼤⼩(重启动⽣效)sp_configure "max network packet size",20484. 其他资源使⽤sp_configure "number of locks",100000 锁使⽤数量sp_configure "number of open indexes",5000 打开索引sp_configure "number of open objects",5000 打开对象sp_configure "number of user connections",1000 ⽤户连接数sp_configure "number of device",100 新建设备最⼤数量⼆. sybase 设备调整数据设备与⽇志设备必须分开,添加临时数据库设备1. 数据设备sp_deviceattr devname,"dsync",true2. ⽇志设备sp_deviceattr devname,"dsync",false3. 临时数据库设备sp_deviceattr devname,"dsync",falsetempdb数据和⽇志分离:USE masterGoDISK INIT name = 'tempdbdev01', physname = '/opt/sybase/data/tempdbdev01.dat' , size = '1G',dsync = 'false'GoDISK INIT name = 'tempdblogdev01', physname = '/opt/sybase/data/tempdblogdev01.dat', size = '1G',dsync = 'false'GoALTER DATABASE tempdb ON tempdbdev01 = '1G' LOG ON tempdblogdev01 = '1G'GoUSE tempdbGo删除tempdb上使⽤的master段:EXEC sp_dropsegment 'logsegment', 'tempdb', 'master'goEXEC sp_dropsegment 'system', 'tempdb', 'master'goEXEC sp_dropsegment 'default', 'tempdb', 'master'Go如果已针对 tempdb 建⽴了设备,则只需禁⽤ dsyncio,但需要重新启动 Adaptive Server:EXEC sp_deviceattr 'tempdbdev01', 'dsync', 'false'GoEXEC sp_deviceattr 'tempdblogdev01', 'dsync','false'Go数据库设备最好设置Direct IO,获得的性能相信会让你满意三. sybase 数据结构调整1. 数据库对象表、索引。
Sybase数据库优化技术和方法Sybase数据库优化技术和方法Sybase数据库是一种高性能、高可靠性的关系型数据库管理系统,广泛应用于各种数据密集型应用程序中。
然而,随着应用程序的日益复杂和数据量的不断增加,Sybase数据库的性能问题也逐渐突显,影响了应用程序的稳定性和响应速度。
因此,对Sybase数据库进行优化是非常必要的。
本文就Sybase数据库的优化技术和方法进行了介绍。
1.查询优化技术查询优化是Sybase数据库优化的重要方面。
对于大量的查询语句,使用正确的优化技术可以大大提高查询性能。
(1)使用索引索引是数据库优化中最常用的技术之一。
通过在表上建立索引,可以加快查询操作的速度,减少数据库服务器的 I/O 操作。
Sybase数据库支持 B-tree、Hash 和 Bitmap 等多种索引类型。
对于不同的查询需求,选择最合适的索引类型可以提高查询性能。
(2)尽量减少复杂查询语句Sybase数据库支持各种查询语句,但是复杂查询语句会使查询时间大大延长,降低数据库性能。
在设计查询语句时,尽量简化语句结构,减少嵌套子查询,避免过多的计算和连接操作。
(3)优化关联查询关联查询是数据库操作中常见的操作,但是不正确的关联查询操作会导致数据库性能下降。
在进行关联查询时,应根据具体情况选择合适的关联方式,如左联接、右联接、全联接等。
2.数据存储优化技术数据存储也是Sybase数据库优化的重要方面。
对于大量的数据存储需求,使用正确的优化技术可以大大提高存储性能。
(1)选择正确的存储引擎不同的存储引擎有不同的优劣点,应根据具体情况选择合适的存储引擎。
Sybase数据库支持多种存储引擎,如 MyISAM 和InnoDB 等。
(2)使用分区表分区表是Sybase数据库中的一种高效存储技术,可以将数据按照一定规则分散到不同的存储区域中,从而提高数据库的性能和可用性。
在设计表结构时,应尽量使用分区表。
(3)定期清理过期数据过多的历史数据占用了数据库的存储空间,降低了数据库的性能。
目录1性能监控 (2)1.1操作系统性能监控 (2)1.2数据库性能监控例程 (2)1.3使用Sybase Cenral性能监控器监控 (2)2数据库参数调优 (3)2.1SybaseIq 12.7 建议设置选项 (3)2.2SybaseIq服务参数说明 (3)2.3文件存放 (4)3数据加载调优 (5)3.1推荐办法 (5)3.2装载数据时提示虚拟内存不足 (5)3.3使用union all 视图以便更快装载 (5)3.4单行处理 (5)4其它调优 (5)4.1选择合适的数据类型 (5)4.2无符号数据类型 (6)4.3性能优化选项 (6)1性能监控1.1操作系统性能监控使用如下命令对操作系统进行性能监控●vmstat●sar●topas●ps1.2数据库性能监控例程●sp_iqconnection 显示连接用户和版本●sp_iqcontext 显示运行参数●sp_iqspaceinfo 输出数据库对象使用空间情况●sp_iqstatus 数据库各种信息展现●sp_iqtablesize 输出制定表的大小●sp_iqgroupsize 输出指定成员如何获得Sybase IQ系统存储过程呢,我们使用select * from sysobjects where name like 'sp_iq%';返回结果中“name”列中显示为系统存储过程,我们可以研究其它的存储过程的含义1.3使用Sybase Cenral性能监控器监控可以按照如下所示使用Sybase Central监控服务器的统计信息。
●选择服务器●在“Statisticcs”选项卡上,右键单击名称并选择“Add to Performance Monitor“●单击“Performance Monitor“选项卡。
Sybase Central 仅跟踪从一个快照到下一个快照的差异,因此,在性能监视器中某些所选统计信息可能显示为无活动。
用一个案例讲解Sybase的性能优化提要为了提高数据库系统的性能,本文针对资料入库,资料检索速度的提高进行了研究和探讨,并提出了相应的的技术措施。
关键词:性能提高入库检索1.问题的提出使用SYBASE商用数据库管理系统,但在应用中也发现一些性能问题,例如用户反映常规资料入库较慢、探空资料检索不够快等。
针对这些情况,我们进行了分析、试验和探讨,在目前运行平台的环境下找到一些改进方法,取得了较好的效果。
2.库生成慢的原因分析和技术措施2.1库生成慢的原因分析在常规资料入库的整个过程中主要包括对报文的解码和数据插表两个大的步骤,因此应先分清究竟是解码过程慢还是数据插表过程慢。
为此在主站的调试环境IBM RS6000-59H的平台上做了测试,发现对一天常规资料只解码不入库只需4分钟,但整个库生成却需要4小时11分;显然绝大多数时间是花在数据入库上。
而进入数据库的报类多种多样,插入的时间也有长有短。
因此有必要在这所有的资料中,找出是哪几种资料入库的时间长。
用一个时间统计程序分别对各类报的插入时间做了统计,结果发现地面要素报的插入时间最长,在总共4小时11分的插入时间中占1小时56分钟。
于是我们在测试库(IBMRS6000-H50 B系平台)中用SYBASE提供的监测程序过程sp_sysmon监测插入一天的地面要素(28239条记录,即28239个事务)的运行情况。
在sp_sysmon的输出结果(见表1)中,表1 插一天地面要素的运行情况每秒收到客户端的字节数5681.9每个事务所占用网包数3.0每秒收到客户端的网包数14.7插入时间(秒)5837发现描述每个事务所占用网包数的参数(Total TDS Packets Received per xact)等于3,也就是说一条插入命令要分三次才能送到服务器端。
这引起我们的深思,业务上已将Server的缺省网络包大小(default network packet size)、最大网络包大小(max network packet size)由512字节改为1024字节,为何一条插入命令要分三个网包,我们立即查证一条地面要素插入命令的长度,大部分在1100字节左右,最长的是 1174字节,超过了1024的长度,但仍然让人不解的是:一条长为1136字节插入语句用1024字节的网包发送,应该使用两个网包就够了,为什么会用到3个呢?除非512字节的网包才要用到这个数。
1、需要对sybase数据库进行性能优化,打开安装目录中的D:\sybase\hn315.cfg文件,对数据库进行配置,注意最好对hn315.cfg进行备份:⑴数据库使用的内存max memory= 500000单位为2K,通常配置为系统空闲内存的60-70% allocate max shared memory=1数据库服务启动时就分配内存,推荐为1⑵配置缺省数据缓存的大小和分区[Named Cache:default data cache]cache size =250000通常配置为max memory的50%,default=8M⑶配置存储过程的缓存大小procedure cache size =50000单位为2K,通常配置为max memory的10-20%,default=3271*2k必须加大,如果按默认值配置,12315系统中只能添加较小的附件。
⑷配置CPUmax online engines = 2CPU数多时推荐CPU数目减1,否则等同为CPU数number of engines at startup = 2同上⑸配置其他资源的数量(在今后可以根据需要随时修改)number of locks = 50000 锁数量,default=5000,大的应用在几十万的级别Number of locks = (并发用户数+ 工作进程数)*20number of user connections = 300 用户连接数,default=25number of open objects = 1000ASE的对象描述的缓存数,default=500) (推荐8000-10000number of open indexes = 1000ASE的索引描述的缓存数,default=500) (推荐2000-5000number of devices = 30ASE可以使用的设备的数量,deault=10重新启动服务器,使配置生效。
关于sybase的配置-(数据库慢的请留意)说明:数据库性能慢的主要原因有两个1)数据库服务配置不合理2)应用程序不合理遇到数据库性能下降时通常先检查数据库服务配置方面有没有可以改善的,修改之后再观察一段时间,如果性能没有改善的话就要分析应用程序上有没有可以调整的地方:索引是否合理,sql语句是否优化等。
本篇主要分析数据库服务的配置:问题分析:小型机硬件:rp2470双机、CPU700M*2、内存512M*6以下是现场发过来的主要配置情况:lock scheme datapages //datapages锁模式是性能最差的锁,一般不用number of locks 300000 //通常不需要配置太多的锁10万就够了max memory 500000 //物理内存3G,配给sybase的为1G明显不合理number of open indexes 4000 //通常2000number of open objects 4000 //通常2000number of user connections 300 //number of worker processes 0 //多cpu要打开相应工作进程数procedure cache size 154800 //存储过程缓存不要超过100Mtotal data cache size 453699 //明显该值太小allocate max shared memory 0 //打开sybase占用内存的开关max online engines 2number of engines at startup 2问题处理:建议先调整以下配置sp_configure "max memory",1150000 //sybase占用2.3G内存sp_configure "allocate max shared memory",1sp_configure "user log cache size",4096 //用户日志缓存用来缓存客户段信息sp_configure "procedure cache size",50000 //100M存储过程缓存sp_configure "number of worker processes",2备份sybase主目录下的***.cfgsp_cacheconfig "default data cache","1G" //配置缺省数据缓存1Gsp_cacheconfig "default data cache", "cache_partition = 2"reboot sybase服务备份sybase主目录下的***.cfgsp_cacheconfig "tempdb_cache","400M" //由于内存较充裕,通常会分配一部分内存给tempdb,提高查询的速度sp_bindcache "tempdb_cache","tempdb" //绑定400M的内存给tempdbreboot sybase服务上述操作如无法启动sybase服务则可以将备份的***.cfg替换当前的配置文件,重新boot sybase服务总结:sybase 11.9.2 & 12.0 & 早期版本的配置通常为以下几项:total memory //定义sybase 服务能够使用的物理内存number of lock //定义锁的数目number of open database //打开的数据库个数,缺省是12个,数据库数目超过12个时要调整该值number of devices //数据库的设备数,缺省是10,通常是不够的,需要调整number of user connections //用户连接数,根据需要设置,通常一个用户数消耗100K的内存这个版本的数据库缓存、日志缓存、过程缓存是不用手工配置的sybase 12.5版本的配置通常为以下几项:lock scheme //锁模式,sybase推荐使用缺省(allpages),但是一些并发操作多的表(temp_telebill)要使用行锁(datarows),减少被锁现象number of locks //通常不需要配置太多的锁10万就够了max memory //sybase服务能够使用的物理内存,通常配置成物理内存的70%~80%,上例内存是3G,配给sybase的为1G明显不合理allocate max shared memory //打开sybase占用内存的开关number of open indexes //通常2000,该值配置过低时会在日志中报该值不够,最终导致性能缓慢number of open objects //通常2000,该值配置过低时会在日志中报该值不够,最终导致性能缓慢number of user connections //用户连接数,根据实际需求来配置,盲目多配会浪费内存procedure cache size //存储过程缓存不要超过100M,用来缓存过程的编译代码。
在一个大型的数据库中,性能成为人们关注的焦点之一,如何让数据库高效有效的运行成为广大数据库管理人员和开发人员必须要考虑的问题。
性能是一个应用或多个应用在相同的环境下运行时对效率的衡量。
性能常用响应时间和工作效率来表示。
响应时间是指完成一个任务花费的时间,可以从以下三方面来减少响应时间:·减少竞争和等待的次数,尤其是磁盘读写等待次数·利用更快的部件·减少利用资源所需的时间绝大多数性能的获得来自于优秀的数据库设计、精确的查询分析和适当的索引。
最好性能的获得能够通过确立优秀的数据库设计,在开发时学会使用SQL Server查询优化器来实现。
为了取得更好的数据库性能,我们就需要对数据库进行优化,减少系统资源的竞争,如对数据cache,过程cache,系统资源和CPU的竞争。
在SQL Server中,有如下优化层次:·应用层——大部分性能的获得来自于对你的SQL应用中查询的优化,这必须是以好的数据库设计为基础的。
·数据库层——应用共享在数据库层中的资源,这些资源包括硬盘,事务日志和数据cache。
·服务器层——在服务器层有许多共享的资源,包括数据高速缓存,过程高速缓存,锁,CPU等。
·设备层——指的是存储数据的磁盘及其控制器,在这一层,你应尤其关注磁盘的I/O。
·网络层——指连接用户和SQL Server的网络。
·硬件层——指可利用的CPU。
·操作系统层——理想地,SQL Server是一台机器的唯一主要应用,它必须和操作系统以及其他sybase软件,如Backup Server或SQL Server Monitor共享处理器、内存以及其他资源。
在大多数情况下面,我们是对应用层进行优化,,因为对应用性能的优化是大家最乐于接受的功能,其结果能被观测及检验,查询的性能是SQL应用的整个性能的一个关键。
应用层上的问题包括以下内容:·决策支持VS.和在线事务处理(OLTP)需要不同的性能策略·事务设计能够减少并发,因为长的事务保持占用锁,也就减少了其他用户对相关数据的存取·关联一致性对数据修改需要join操作·支持Select操作的索引增加了修改数据的时间·为了安全而设立的审计限制了性能在应用层优化的选项包括:·远程处理或复制处理能够把决策支持从OLTP机器中分离出来·利用存储过程来减少编译时间和网络的利用·利用最少量的锁去满足你的应用需要数据库层的问题包括:·建立备份和恢复方案·在设备上分布存储数据·审计操作影响性能;仅审计你所需的·日常的维护活动将导致性能的降低和导致用户不能操作数据库表在数据库层上优化选择包括:·利用事务日志的阀值来自动转储事务日志防止其超出使用空间·在数据段中用阀值来监视空间的使用·利用分区来加速数据的装入·对象的定位以避免硬盘的竞争·把重要表和索引放入cache中,保证随时取得服务器层的问题有:·应用的类型——服务器是支持OLTP还是DSS,或者两者都支持·所支持的用户数影响优化决策——随着用户数的增加,对资源的竞争会发生改变·网络负荷·当用户数和事务数达到一定的数量时复制服务器或其他分布式处理是一个解决的方法服务器层的优化的选项包括:·优化内存——一个关键的配置参数和其他方面的参数·决策是客户端处理还是服务器端处理——有些处理能在客户端进行吗·配置cache的大小和I/O的大小·增加多个CPU·为空闲时间排定批处理任务和生成报表·工作负荷发生改变,重新配置特定参数·决定是否可能把DSS移到另一个SQL服务器中设备层设备层的问题包括:·主设备、包含用户数据库的设备,用户数据设备,或数据库日志是否要镜像·怎样在设备之间分布系统数据库、用户数据库和数据库日志·为获得对堆表插入操作的高性能,是否有必要进行分区设备层上优化的选项包括:·用多个中等大小的设备及多个控制器可能比用少量的大设备有更好的I/O性能·分布数据库,表和索引以在不同的设备上进行I/O装载网络层实际上,SQL Server的所有用户都是通过网络存取他们的数据。
Sybase服务参数配置与优化1.服务参数--内存sp_configure "max memory",524288--单位为2K,实际⼤⼩为524288/1024*2MB=1024MBsp_configure "procedure cache size",51200--存储过程数据缓存为100MBsp_cacheconfig "default data cache", "400M" --调整默认的⾼速缓存为400MBsp_cacheconfig "tempdb data cache","200M","mixed" --创建⼀个200MB的数据缓存⽤于绑定tempdb库sp_bindcache "tempdb data cache",tempdb --重启服务后绑定--CPUsp_configure "max online engines",2--根据服务器环境配置CPU数量sp_configure "number of engines at startup",2--启动时使⽤CPU数量,不能⼤于max online engines--⽹络sp_configure "max network packet size",2048--设置⽹络传送包最⼤值sp_configure "default network packet size",2048--设置⽹络传送包的⼤⼩,不能⼤于max network packet size--锁sp_configure "number of locks",50000--锁的数量sp_configure "page lock promotion HWM",2000sp_configure "page lock promotion LWM",200sp_configure "page lock promotion PCT",75sp_configure "row lock promotion HWM",2000sp_configure "row lock promotion LWM",200sp_configure "row lock promotion PCT",75--其它sp_configure "number of user connections",200--⽤户最⼤连接数sp_configure "number of device",20--设备最⼤数量2. 临时数据库处理a.删除tempdb的master设备1)增加tempdb设备disk init name = 'TEMPData',physname = 'd:\SYBDATA\TEMPData.dat',size = '1G',dsync = false goalter database tempdb on tempdb='1G' with override2) 从段中移除master设备sp_dropsegment "default",tempdb,mastergosp_dropsegment logsegment,tempdb,mastergosp_dropsegment system,tempdb,mastergo3) 从系统表⾥移除master设备use mastergosp_configure "allow updates to system tables",1godelete from sysusages where dbid=2 and lstart=0----dbid=2是tempdb,lstart=0是master设备goupdate sysusages set lstart=0 where dbid=2 ----这⾥只考虑⼀个tempdb设备,多个则不更新gosp_configure "allow updates to system tables",0 ----恢复系统表不允许修改4) 重启服务b.增加多个临时数据库1)增加设备DEV_TEMP_DATA2,容量与原来的tempdb相当2)create temporary database tempdb2 on DEV_TEMP_DATA2=2000 --创建名字为tempdb2的临时数据库3)sp_tempdb 'add',tempdb2,'default' --加⼊到默认组c.绑定⽇结⽤户DAILY到指定的临时数据库1)参照a创建⼀个临时数据库dailytempdb2)sp_tempdb 'bind','LG','DAILY','DB','dailytempdb'注:也可以为sa绑定⼀个专⽤的tempdb,如: sp_tempdb 'bind','LG','sa','DB','satempdb'd. 查看属于默认组的临时数据库1)sp_tempdb 'show'。
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--优化tempdbselect dbid, name,segmapfrom sysusages, sysdeviceswhere sysdevices.low <= sysusages.size +vstartand sysdevices.high >=sysusages.size+vstart -1 and dbid =2 and (status=2 or status=3) go use tempdbgosp_dropsegment 'default',tempdb,mastergosp_dropsegment 'logsegment',tempdb,mastergoselect dbid, name,segmapfrom sysusages, sysdeviceswhere sysdevices.low <= sysusages.size +vstartand sysdevices.high >=sysusages.size+vstart -1 and dbid =2 and (status=2 or status=3) gosp_cacheconfig tempdb_cache, '100M' go sp_poolconfig tempdb_cache,'50M','16K'gosp_bindcache 'tempdb_cache',tempdbgosp_helpcache tempdb_cacheselect name,idfrom syscharsetsdbcc traceon(3604)dbcc memusage1 数据库安装的优化1.1 应用数据库使用裸设备若在UNIX(UNIXWARE)操作系统下安装数据库服务器,请将SYBASE应用数据库的设备(device)安装成裸设备。
即在创建应用数据库设备(如:IVSP,DB160,NAP2000等)时用裸设备,把文件名指向/dev/dsk/ 子目录下的相应文件。
系统数据库设备(如:master等)仍然指向文件系统。
1.2 补丁程序完成SYBASE数据库的安装,请注意原版的SYBASE软件都会带有最新的补丁,一定要把补丁打上,否则会出现一些莫名其妙的问题。
FOR NT 版的补丁是一个ZIP 文件,解压至C:\SYBASE子目录即可。
1.3 安装SYBASE 在线帮助在安装好SYBASE 后,在安装目录下有一文件:../scripts/ins_syn_sql,在服务器上执行该脚本:Sybase for Unix版:./isql -Usa -P -i../scripts/ins_syn_sql Sybase for Winnt版:isql -Usa -P -i\sybase\scripts\ins_syn_sql 执行完毕后,即可在任意的SYBASE 客户端上连接上SQL SERVER ,在线取得任意命令的帮助:sp_syntax "关键字" 如:sp_syntax "alter" 即可列出所有包含"alter"字符的命令2 数据库配置的优化2.1 优化master数据库首先加大master设备空间,初始默认为30M,加大为150M。
然后加大master数据库空间,默认数据段和日志段各为5M大小,建议改为数据段100M,日志段50M。
alter database master on master=952.2 优化tempdb数据库首先创建tempdb设备,分配给tempdb数据库,默认tempdb数据库数据段和日志段各为2M大小,并创建在master设备上,建议改为数据段200M,日志段50M,创建在tempdb设备上。
alter database tempdb on tempdb=200SQL SEVRER所有用户都共享工作表和临时表的tempdb数据库,tempdb主要瓶颈是磁盘I/0。
解决办法是把tempdb放在更快的设备上。
在UNIX环境中,把tempdb放在文件系统中而不用原始的设备。
由于tempdb 在创建数据时,自动在master设备上创建为2M的数据库,为了减少冲突,最好的办法是把tempdb从master设备中移走。
为了达到上述目的,可采用如下办法实现:1:在单用户状态下启动SQL SERVER 启动单用户方法:dataserver -dmaster.dat -m2:以sa登录3:在文件系统中创建一个哑数据库。
4:删除sysusages和sysdatabase表中对现有tempdb数据库的引用5:获取哑数据库的数据库ID,相应修改sysusages和ysdatabase表对tempdb的引用6:重新启动数据库以在newdevice中创建200M的tempdb数据库为例,执行过程如下:create database newtemp on newdevice=200go/* 创建新的数据库*/begin trango/* 开始事务,防止操作错误时破坏整个SQL SERVER的运行*/delete sysusages where dbid = 2 delete sysdatabases where dbid = 2go/*删除系统表对tempdb的引用,只能在单用户状态下执行*/select dbid from sysdatabases where name = …newtemp‟go/*获取newtemp数据库ID,假定为10*/update sysusagesset dbid = 2 where dbid=10update sysdatabasesset name=‟tempdb‟,dbid=2 where name=‟newtemp‟go/*修改数据库的引用,对newtemp的引用改为对tempdb的引用*/select name,dbidfrom sysdatabaseswhere name = …tempdb‟select * from sysusages where dbid = 2go/*测试修改是否正确,正确则提交,否则可用rollback回退*/commit trango/*修改成功,重新启动系统*/这种方法只对tempdb有效,其他数据库不能采用这种方法。
因为在SQL SERVER启动时,tempdb每次都重新初始化。
2.3 优化系统参数以下参数为标准建议值,可根据实际情况修改。
优化系统参数的SQL脚本注释sp_configure 'total memory', 100000 优化数据库的内存,应根据不同机器配置设置, 建议为一半的物理内存大小。
以db_block为单位,即每个单位为2k,上例为200M,默认为24M.sp_configure "lock scheme" , 1,"datarows" 系统默认为表级锁,优化为行锁sp_configure "number of locks" , 10000 加大最大锁进程数, 默认为5000。
(如果设置一个已经存在的表(tabel)的锁方式为行锁,则执行:alter table table_name lock datarows)sp_configure 'procedure cache percent' ,30 缺省值:20 建议值:procedure使用频率高时采用较大的值,不超过30 sp_configure "number of user connections",100 最大用户连接数,默认为25,每个连接要占70k内存sp_configure 'number of devices',20 将最大设备文件数据改为15个sp_configure ‘number of Open databases’,20 最大打开数据库个数,对于需在一台数据库服务上打个多个数据库则需加大此参数,默认为15Sp_configure ‘max online engines CPU’,2 缺省值:1 建议值:采用实际机器的CPU个数Sp_configure ‘total data cache size’,60000 缺省值:0 建议值:使用SQL SERVER内存的30%如果上述参数改动后SYBASE启动不正常,则可检查SYBASE的错误日志,把SYBASE.cfg 中的相应选项修改为较小的值。
附:SYBASE SQL SERVER 内存的分配1. SQL SERVER 可执行代码3-4M2. SQL SERVER 使用的静态内存 2.2-3.25M3. 用户可配置的参数所占用内存,以下示例(11.9.2版):默认值占用内存用户连接数(user connections) 25 每个约70k打开的数据库数(open database) 12 每个约60k打开的对象数(open objects) 500 每个约1k打开的索引数(open indexs) 500 每个约1k锁数目(locks) 5000 每个约0.1k数据库设备数(data device) 10 每个约0.5k4. 剩余部份分配给过程缓存( 由procedure cache percent 决定,默认值为20% )数据缓存( 默认值为减去1、2、3项的80% )2.4 优化数据库系统属性在sybase center中选择数据库属性,将属性中options选项中的下列项目选中。