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

合集下载

Sybase数据库优化技术和方法

Sybase数据库优化技术和方法




S y b a s e 数据库优化技术和方法
徐 静 ( 新 疆哈 密吐 哈 油 田信 息产 业处 新 疆哈 密 8 3 9 0 0 0 )
摘要 : 随着科 学技术 的 不断发展 , 计 算机技 术 已广泛应 用 于我们 生活 的方方 面面 。 计算机 系统在 我 国各行 各业 中发挥 着重要 作 用, 大大提 高 了 人 们 的管理 效率 和水 平, 是 我 国经 济基础 建设 和发展 的 强大 动 力。 本文 结合 作者 的理 解和认 知 , 简要 概 述 了s v b a s e 数 据库 优化 目 标, 并详细探 讨 了 s y b a s e 数据 库优 化技 术和 方法 , 供 大 家参 考借 鉴 。 关键 词: S y b a s e 数 据库 性 能优化 技 术 方 法 中图分类 -  ̄: T P 3 1 1 . 1 3 文 献标识 码: A 文章 编号 : l O 0 7 — 9 4 1 6 ( 2 0 1 3 ) 0 7 — 0 1 3 2 - 0 1
操作系统是S y b a s e  ̄据库 的运行环境 , 其性 能直接影,  ̄ S y b a s e 数据加载需要消耗 系统的大量处理时间。 在不增加硬件条件 的 运行环境 的优化 主要 包括 : C P U的优化 , 提 高 基础上 , 可 以通过优化计 算机 系统 的输入 和输出设备 , 加快数据 加 数据库 系统 的性能 。 C P U的处理速度能有效提高S y b a s e 数据库 的性能 l 内存优化 , 从 内 载速度 。 存读取数据 比从磁盘读取数据 的速度快很多 , 当系统 内存不足时 , 2 . 5 提 高用 户访 问能 力 会严重 减慢 S y b a s e 数据库的数据 读取速度 , 输入输 出子系统 的优 S y b s  ̄ 库系统往往要 同时为多个用户提供数据管理服务。

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

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,完成索引合并。

sybase性能优化的建议

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不全,不过可以作为参考了。

Sybase数据库性能优化研究

Sybase数据库性能优化研究

Sybase数据库性能优化研究摘要:文章从Sybase数据库性能优化的重要性出发,进而论述了Sybase数据库优化的方针,最终对Sybase数据库性能优化进行了重点的探究。

关键词:Sybase数据库;性能优化;研究1.前言由于企业的不断发展,对数据的管理由开始的文档管理到现在的专门的数据库管理软件,我们对数据的要求越来越高,不但要确保数据的安全,还要访问数据访问的速度,数据库中数据的性能直接影响到系统的性能,所以了解数据的性能对访问数据的访问速度及数据的检查是有利的。

2.Sybase数据库性能优化的重要性由于科学技术的不断发展,计算机技术已广泛运用于我们生活的方方面面。

计算机系统在中国各行各业中发挥着重要作用,大大提升了大家的管理效率和水平,是中国经济基础建设和发展的强大动力。

为了确保业务的正常发展,降低系统的硬件投入,管理人员需求不断的对系统进行改善,并对数据库系统进行优化。

Sybase数据库是一种根据客户/服务器系统结构的数据库,布置和运转于操作系统中,用于大型数据库的构建和管理。

根据运用条件和实践需求,我们需求对Sybase数据库系统的各个层面进行优化,使其各个性能指标得到访问。

3.Sybase数据库优化的方针3.1访问数据吞吐量吞吐量的计算方法是数据库系统处理的业务量除以时间。

为了实现访问吞吐量的方针,一般选用两种方法,一种是在同样的资源条件下处理完成更多的业务,一种是增加资源,从而使系统完成一样业务工作量时所用的时间缩短。

在数据库优化范畴,联机业务处理对吞吐量的重视度较高,联机业务处理要实时地对很多的数据进行处理,高吞吐量有助于访问系统的处理能力。

3.2缩短系统呼应时间系统的呼应时间是指用户宣布操作套去,到系统将呼应套去的成果展示给用户之间的时间距离。

某些数据库系统能够完成高吞吐量,但这一性能只标明系统的业务处理能力,而系统的呼应时间是影响到用户运用体会的重要因素。

3.3访问多用户访问能力Sybase数据库管理系统一般要在同一时间为多个用户供给数据管理服务,而用户的规划由于实践运用的不一样而各异。

SYBASE优化

SYBASE优化

SYBASE优化数据库设计首先进行的是建立描述数据库实体关系的概念模型,当把一个满足第三范式的概念实体关系模型转换成一个关系模型时,有:·实体变换成表·属性变换成列·关系变换成数据的关联(主键和外键关联)满足第三范式并不能保证你的特定应用具有很高的性能。

相反,为了达到提高性能的目的,有选择地背离严格的规范形式是必需的。

一旦你的数据库设计满足了第三范式,你可以谨慎地调整设计以满足你应用的需求。

最后的设计反映了现实世界的存取需求和约束,这可能导致设计与第三范式理论相偏差。

根据你对应用的经验,你可以从以下几方面来精炼你的物理数据库设计:·在适当的地方采用非规范形式·在适当的地方分割表·在适当的地方把表进行分组放入数据库·决定段的使用·决定设备的使用·执行完整性约束规范化产生的表比较小,表所含的记录数也相对比较少·每页含有更多的记录(减少逻辑I/O)·每次I/O包含更多的记录(效率更高)·在cache中能存更多的记录规范化的好处包括:·寻找、排序和建立索引更快,因为表变小了,在每一个数据页有更多的记录,通常你必须处理更多的表,你将能得到更多的索引集(每一个表仅建立一个索引),因此在查询优化时,你将有更大的灵活性·索引查找将会更快,因为索引趋于更小、更短·更多的表可以更好地利用段来管理数据的物理存放·通常在每个表将会建立较少的索引,因此数据的修改命令将会更快·在表中将存在少的空值和冗余数据,使你的数据库更紧密·由于不必维护冗余数据,Trigger执行得更迅速·减少数据修改异常·当你需要调整数据库时,规范化使得概念上更清晰,维护也变得更容易然而一个完全规范化的数据库需要更多的join操作,如果join操作的列存在索引时,join操作通常是很快的(参考第四章),SQL Server已被优化,使索引在cache中保持高的级别,因此每个join仅需1个或2个物理I/O操作来取得每一匹配记录,如查找的记录已在cache 中则花费将会非常低。

最新Sybase数据库性能调优

最新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 :游标存储过程不可重入,意即每个并发用户调用都会在内存中产生一个拷贝。

sybase 性能优化经验谈

sybase 性能优化经验谈

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数据库性能优化的具体过程

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,100sp_setrowlockpromote 'TABLE',LCD05,500,500,100[Lock Manager]number of locks = 50000 #锁数deadlock checking period = DEFAULTfreelock transfer block size = DEFAULTmax engine freelocks = DEFAULTlock spinlock ratio = DEFAULTlock hashtable size = DEFAULTlock scheme = DEFAULTlock wait period = DEFAULTread committed with lock = DEFAULT当很多事务同时访问同一个数据库时,会加剧锁资源争夺,严重时事务之间会发生死锁。

可用sp_object_stats查明死锁位置。

该过程报告资源争夺最激烈的10张表、一个数据库中资源争夺的表和单个表的争夺情况。

语法为sp_object_stats interval [, top_n [, dbname [, objname [, rpt_option ]]]],查看锁争夺情况只需设置interval为“hh:mm:ss”。

Sybase数据库优化建议书

Sybase数据库优化建议书

Sybase数据库优化建议书修改记录主要针对sybase12.0和sybase sybase12.5一、操作系统核心参数Sybase12.0下面以使用操作系统管理员root用户身份,运行sam管理工具调整共享内存参数及共享内存段选择Kernel Configuration → Configurable Parameters→使用File菜单下的Search功能搜寻shmmax 参数,调整参数值为1024×1024×1400=1468006400(约1.4G),shmseg 参数使用默认值120 →退出返回sam上一级界面,在弹出的提示框中选择Defer Kernel Creation Until Later调整操作系统异步IO参数Kernel Configuration → Configurable Parameters→将swapmem_on参数设置为0 Kernel Configuration →选择Drivers项目→找到asyndsk →选择菜单上Action项目下的Add Driver(s) to Kernel,这是能够看到asyndsk 驱动程序Pending Status由out 变成了in。

重新启动HP主机,并在启动完毕后确认所配置参数已经生效。

设置操作系统异步IO使用root用户发出如下命令:/etc/mknod /dev/async c 101 4chmod 0660 /dev/asyncchown sybase:sybase /dev/async在操作系统/sbin/rc3.d目录下建立名为S700dsync脚本文件,或者在双机切换脚本的start.sh(/etc/cmcluster/pkg1/start.sh、/etc/cmcluster/pkg2/start.sh)中加入,内容如下/etc/setprivgrp sybase RTPRIO MLOCK CHOWN这个命令使操作系统重新启动后sybase用户仍然能够正常拥有async文件使用权限,确保数据库设备能够使用异步IO。

sybase性能优化

sybase性能优化

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数据库的性能问题也逐渐突显,影响了应用程序的稳定性和响应速度。

因此,对Sybase数据库进行优化是非常必要的。

本文就Sybase数据库的优化技术和方法进行了介绍。

1.查询优化技术查询优化是Sybase数据库优化的重要方面。

对于大量的查询语句,使用正确的优化技术可以大大提高查询性能。

(1)使用索引索引是数据库优化中最常用的技术之一。

通过在表上建立索引,可以加快查询操作的速度,减少数据库服务器的 I/O 操作。

Sybase数据库支持 B-tree、Hash 和 Bitmap 等多种索引类型。

对于不同的查询需求,选择最合适的索引类型可以提高查询性能。

(2)尽量减少复杂查询语句Sybase数据库支持各种查询语句,但是复杂查询语句会使查询时间大大延长,降低数据库性能。

在设计查询语句时,尽量简化语句结构,减少嵌套子查询,避免过多的计算和连接操作。

(3)优化关联查询关联查询是数据库操作中常见的操作,但是不正确的关联查询操作会导致数据库性能下降。

在进行关联查询时,应根据具体情况选择合适的关联方式,如左联接、右联接、全联接等。

2.数据存储优化技术数据存储也是Sybase数据库优化的重要方面。

对于大量的数据存储需求,使用正确的优化技术可以大大提高存储性能。

(1)选择正确的存储引擎不同的存储引擎有不同的优劣点,应根据具体情况选择合适的存储引擎。

Sybase数据库支持多种存储引擎,如 MyISAM 和InnoDB 等。

(2)使用分区表分区表是Sybase数据库中的一种高效存储技术,可以将数据按照一定规则分散到不同的存储区域中,从而提高数据库的性能和可用性。

在设计表结构时,应尽量使用分区表。

(3)定期清理过期数据过多的历史数据占用了数据库的存储空间,降低了数据库的性能。

SYBASE数据库数据的存储及优化

SYBASE数据库数据的存储及优化

的分 配单元 , 每个分 配单元被分 为3 2 个区 间, 一 个区间只能与一 个数据 来执 行并行 查询处 理 , 可以对一 个表 装载 数 据时使 用并 向的块 拷贝, 库对 象关 联 , 即数据 库对 象是 以区间为单位分 配 的; 每 个 区间被分为 8 分 区使 得一 个表 I / O分布 到多个 数据 库设 备上 , 对于 堆表 的 插入 数据 分 区提供了多个插 入点 , 对于修 改和 删除操 作, 分 区不会影 响性 页, 页分 为数据 页、 索 引页、 分 配页、 对 象分 配映 射页 ( O AM) 、 全局 分 操作 ,
我们 回想—下数据库 是如何 创建的 , 首先 创建数 据库 设备, 并将设 备的 和后向的跳转, 消除跨 区间碎片的方法 同消 除页碎片的方法 。 信息记录 ̄ l l ma s t e r s 数据库 的s y s d e v i c e s 系统表 中。 数 据库段 : 在c r e a t e 2 . 中的数 据, 索引页存储索 引项 , 分 配页是 能 。 记录 分 配单元 内哪些 区间已被 对象 使用 , 哪些 页实际存 有数 据 , O A M 3 . 对数 据 库进 行 D B C C检查 页记 录一个 对象所 拥有 的那些 区间的分配页 , G A M页记 录数据库 中哪 D B C C ( D a t a b a s e c o n s i s t e n c y c h e c k e r ) 用于检查和修正数据库 中 些分 配单元还 拥有可以存储对 象的区间。
日 志分离 , 表和 索引等数据 信息存放在d e f a u l t 默认 段上 , 我们可以创建 常锁的用户表 的页进行分析, 如果 经常锁索 引页 , 可 以通过 更改锁模 式 更多的数 据库设 备, 自 定义 用户段标 识这 些数据 库设备, 将 某些数 据库 等提高性能 , 了解 数据的存储对分析某些 问题 提供了很大帮助。 对象 单独 存放 , 提高 数据 的访 问速度 , 减少 系统的I / O, 通 过此 方式 可 以控制 数据 的增长 , 可以将大 表分在几个磁盘 上, 把频 繁访 问的对象放 在单独 的磁盘上 , 提高系统性能 。 2 . 2 数据库和对 象存储分配 的检 查及如何优化数据 的存储 首 先 我 们 回顾 一下 一 个 新 对 象 的 分 配 步 骤 : 在s y s o b j e c t s s y s i n d e x e s s y s c o l u mn s 中添加 新条 目l 指派空 间; 创建第一个O A M

Sybase海量数据分页查询优化算法

Sybase海量数据分页查询优化算法

Syba s e海量数据分页查询优化算法彭宝玲(广州市公安局芳村区分局指挥中心, 广东广州510370 )摘要通过分析用户的分页查询使用习惯, 对S yba s e数据库的常用分页查询算法进行优化, 并通过实验证明改进算法确实能够大幅提升数据查询效率, 并且拥有数据量越大优化效果越明显的优点。

关键词Syba s e 数据库分页查询J a va随着互联网的飞速发展, 基于W E B 的各类应用系统愈来愈多, 而数据的分页查询做为各类应用系统最常用的功能, 日益得到更加广泛的使用。

同时Syba se 公司A S E 数据库作为市场上主流的关系型数据库之一, 有着功能强大、高性能、易于使用和维护等特点,使用Syba s数据库的W E B 应用系统被广泛部署在金融、电信、保健等领域, 以及政府机构中。

有过Syba s e 数据库分页查询经验的程序员都深有感触, 由于Syba s e 数据库功能的限制, 对于海量数据的分页查询效率问题困扰着每一个程序员, 下面将介绍常见的查询算法, 以及针对海量数据查询进行优化的算法。

/ /开始记录i n t sta r t Row;/ /结束记录i n t endRow;/ /前一半记录标志boo l ean first H a l f = true;/ /返回结果Ite r a t o r ite ra t o r= nu l l;/ /用户列表A rrayL ist u s e r L ist = ne w A rrayL ist ( ) ; / /创建数据库连接Sq l B e an syba s eC onn = ne w Sq l B e an ( ); syba s eConn1ge t Conn ( ) ;/ /计算记录起始位置st art Row = ( c urrentPage - 1) 3 pageSi z e i = 0;/ /设置查询语句1 常见查询算法Stri ng que rySq l = “se l ec t 3 U se r Tab l e o r de r by u s e r I d”;/ /执行查询语句获取结果集fr om使用Syba s e数据库的W E B 应用系统, 面为最常见的分页查询显示方法:/ 3 3 下R e s u l tSe t rs = syba s eConn1c r ea t eR s ( que r ySq l) ;try{/ /游标定位到起始记录i f ( sta r t Row ! = 0 )rs1ab s o l u t e ( sta r t Row ) ;/ /获取用户信息3 3 3 3 3 3 查询用户记录B e an@p a r am cu rren t Page 当前页码@p a r am p a geSiz e 每页显示用户数总页数总记录数@p a r am@p a r am/t o t a l Paget o t a l Rowp u b l i c Ite r a t o r que ryU se r( i n t cu rren t Page,i n t p a geSiz e, i n t t o t a l Page, i n t t o t a l Row )wh i l e ( rs1next && i < p a geSize)( )U se r u s e r = new U se r ( ) ;i f ( endRow > t o t a l Row )endRow = t o t a l Row; / /判断是否前一半记录i f ( cu r ren t Page > t o t a l Page /2 + 1 ) first H a l f = fa l se;/ /是一半记录则反转开始和结束位置 i n t i = 0;u s e r 1 s e t U se r I d( rs 1ge t I n t( “u s e r I d ”) ) ;u s e r 1 s e t U se r N a m e ( “u s e r N am e ”) ) ;( rs 1ge t Stri ngu s e r L ist 1add i + + ; }( u s e r ) ; i f ( ! first H a l f ) {i = sta r tRow;sta r t Row = t o t a l Row - endRow; endRow = t o t a l Row - i ; rs 1c l o s e ( ) ;ite r a t o r = u s e r L ist 1 ite r a t o r ( ) ; }ca t ch ( SQL Excep ti o n ex ) {} i = 0;/ /设置查询语句Stri ng que r ySq l = “ se t r owcoun t ” +endRow + “ se l ec t 3 fr om U se r Tab l e o rde r by u s e r I d ”;/ /是后一半记录则倒序排列 i f ( ! first H a l f ) que r ySq l + = “de s c ”; / /执行查询语句获取结果集R e s u l tSe t rs = syba s eConn 1c r ea t eR s( que r ySq l ) ;try {/ /游标定位到起始记录 Syste m 1e r r 1p ri n t l n ( “ Sp litPage: ” +ex 1ge t M e s sage }fi na ll y {( ) ) ;/ /关闭数据库链接 syba s eConn 1c l o s eConn ( ) ; }re t u r n ite ra t o r ; }2 优化算法上述这种常 规 查询 算法 在 数据 量 较 小 的 情况下 , 使 用起 来没 什 么大 问题 , 但 当 数 据量越来越 大的 时 候 , 查 询效 率低 下 的问 题就 凸现出来 。

用一个案例讲解Sybase的性能优化

用一个案例讲解Sybase的性能优化

用一个案例讲解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字节的网包才要用到这个数。

sybase优化

sybase优化

Sybase数据库优化手册目录1数据库安装的优化 (2)1.1应用数据库使用裸设备 (2)1.2补丁程序 (3)1.3安装SYBASE 在线帮助 (3)2数据库配置的优化 (3)2.1优化master数据库 (3)2.2优化tempdb数据库 (3)2.3优化系统参数 (5)2.4优化数据库系统属性 (7)2.5创建阈值存储过程 (8)2.6配置多个阈值 (8)3索引的优化 (9)3.1创建索引 (9)3.2重建索引 (9)3.3索引统计信息的更新 (10)4查询优化 (10)4.1NOT IN子句 (10)4.2海量查询 (11)1 数据库安装的优化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_sqlSybase 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。

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 :游标存储过程不可重入,意即每个并发用户调用都会在内存中产生一个拷贝。

简单谈谈 Sybase 数据库的性能优化

简单谈谈 Sybase 数据库的性能优化

在一个大型的数据库中,性能成为人们关注的焦点之一,如何让数据库高效有效的运行成为广大数据库管理人员和开发人员必须要考虑的问题。

性能是一个应用或多个应用在相同的环境下运行时对效率的衡量。

性能常用响应时间和工作效率来表示。

响应时间是指完成一个任务花费的时间,可以从以下三方面来减少响应时间:·减少竞争和等待的次数,尤其是磁盘读写等待次数·利用更快的部件·减少利用资源所需的时间绝大多数性能的获得来自于优秀的数据库设计、精确的查询分析和适当的索引。

最好性能的获得能够通过确立优秀的数据库设计,在开发时学会使用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服务参数配置与优化

Sybase服务参数配置与优化

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_系统参数调整

SYBASE_系统参数调整

SYBASE_系统参数调整在SYBASE数据库中,系统参数的调整对于数据库的性能和稳定性非常关键。

合理的设置可以提高数据库的性能,降低系统的负载,防止因为参数不合适而引发的数据库故障。

下面是一些常见的SYBASE系统参数及其调整方法:1. max memory(最大内存):控制SYBASE数据库系统可以使用的最大内存。

可以根据服务器的硬件配置和数据库的负载情况来调整该参数。

一般建议将该参数设置为服务器可用内存的70-80%。

2. number of worker processes(工作进程数量):控制着SYBASE数据库系统并行处理查询的能力。

可以适当增加该参数的值来提高并行处理的能力,进而提高数据库的性能。

一般建议将该参数设置为服务器的逻辑CPU数量的2倍。

3. lock promotion threshold(锁提升阈值):控制着SYBASE数据库系统在锁的级别上升之前可以允许的最大锁的数量。

可以根据数据库的并发需求来调整该参数。

一般建议将该参数设置为每个数据库连接的平均活跃事务数的两倍。

4. tempdb相关参数:SYBASE数据库系统的临时数据库tempdb对于查询的执行计划和排序操作非常重要。

可以调整tempdb相关参数来优化查询的性能。

例如,可以增加tempdb的数据文件的数量和大小,增加tempdb log的大小等。

5. query plan缓存相关参数:SYBASE数据库系统会缓存查询的执行计划,以便在下次查询时可以直接使用缓存的执行计划,提高查询的性能。

可以调整query plan缓存相关参数来优化查询的性能。

例如,可以增加query plan缓存的大小,增加query plan的最大生命周期等。

6. network packet size(网络数据包大小):控制着SYBASE数据库系统在与客户端通信时每个数据包的大小。

可以根据网络带宽和延迟情况来调整该参数。

一般建议将该参数设置为2048字节。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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 合理使用分区技术描述:Syabse高版本已经进入了表分区功能,有利于操控大量数据。

实施要点:根据表的特性,选择适合的字段作为分区字段。

通常使用整数区间,日期作为分区字段。

点评:表分区后,查询指令应尽量在分区内进行。

分区后,没有使用分区字段的查询,还是会全表扫描,应该尽量避免。

3服务器端的优化3.1 一次性申请共享内存描述:Sybase使用的最大共享内存可以通过配置修改,但默认是内存不足时,才再申请新的共享内存。

实施要点:命令:sp_configure "allocate max shared mem",1点评:一次性申请内存,还可以避免因为其他进程占用内存,导致需要内存时申请失败,可以保证Sybase使用内存的总量。

3.2 有名高速Cache绑定到库描述:Sybase默认有一个cache内存,用于保存近期经常使用的数据。

可以给一个库专门开辟cache空间,提高查询性能。

实施要点:1、创建一个200M命名高速缓存db1_cache:sp_cacheconfig ‘db1_cache’,'200m’,'mixed2、将db1_cache绑定到db1:sp_bindcache ‘db1_cache’,db1点评:有名Cache能给库提供额外的缓存空间,能提高经常性、近期重复性的查询性能。

3.3 使用多个独立的存储设备描述:使用多块独立的硬盘,对需要并发读取的表,将存储设备分散到多个磁盘上,可以实现磁盘的并发读写,提高处理性能。

实施要点:在采购时,选择独立硬盘接口数量足够多服务器型号,并配置多块硬盘。

通常一块硬盘安装操作系统和Sybase软件,其他作为设备存储。

点评:采用多块独立硬盘,系统的数据安全性会比RAID 5差些,需要对硬盘的健康状态进行监控,及时更换硬盘。

3.4 使用多个段(Sigment)描述:段(Segment)是数据库设备上磁盘空间的逻辑组合,它可以看作是指向一个或多个数据库设备的标签。

利用段可以控制数据库对象的存放位置,可以将数据库对象分类存放到不同的段上。

设备与段之间的关系:多对多关系。

一个设备上可以创建多个段,一个段也可以覆盖多个设备。

Sybase支持32个段,系统默认有system、default、logsegment 3个段,用户创建对象默认使用default段。

实施要点:创建段:sp_addsegment 段名,数据库名,设备名扩展段的范围:sp_exetendsegment 段名,数据库名,设备名缩小段的范围:sp_dropsegment 段名,数据库名,设备名create table和create index可以使用“on 段名”指定使用的段;在段上放置现有对象:“sp_placeobject 段名,对象名”。

其中,对象名可以使“表名.字段名”,可以实现不同的字段存储在不同的段中。

点评:段能对数据进行分组,分开存储,同时能实现多段数据的并发使用。

3.5 数据与日志存储分离描述:实施要点:点评:3.6 启用OLTP描述:OLTP(Online Transaction Processing),联机事务处理,表示事务性非常高的系统,一般都是高可用的在线系统,以小的事务以及小的查询为主,评估其系统的时候,一般看其每秒执行的Transaction以及Execute SQL的数量。

实施要点:sp_configure “optimization goal”,”allow_oltp”点评:通过配置,允许Sybase Server在优化时倾向于大量小事务处理的优化,有利于大量并发查询的性能提升。

3.7 定期Rebuild描述:经常进行插入和删除的表,会出现存储碎片,而且数据存储趋于无序状态,即使已经创建了索引,而且数据总量没有增大,也会出现读写性能逐渐下降的情况。

实施要点:Rebuild的指令是:reorg rebuild <table> [index]没有index参数时,对表和该表的所有索引进行rebuild。

Rebuild需要当前存储数据的140%的存储空间,才能正常执行。

点评:定期进行表的rebuild可以使数据有序化,清除碎片,提高查询性能。

如果表比较大,rebuild将比较耗时,不能太频繁。

也不能太久不进行,否则数据还是长期无序化。

通常采用7到30天一次。

3.8 将整个Sybase部署到内存磁盘描述:随着服务器内存的成本逐渐降低,大内存服务器成为可能。

如果数据库系统的数据比较少,可能考虑将整个Sybase软件和存储设备文件都放入内存虚拟硬盘(RamDisk),或者内存文件系统(/dev/shm)中。

这样,可以极大减少磁盘IO 引起的性能瓶颈。

实施要点:操作系统启动时,将磁盘中备份的整个Sybase软件目录和存储设备文件目录,还原到内存,然后直接启动内存中的Sybase Server。

定期备份整个Sybase数据到磁盘,避免突然断电导致的数据丢失。

操作系统关闭时,先关闭Sybase服务,然后备份整个内存中的Sybase软件和存储设备文件到磁盘,以便下次系统启动时还原。

点评:直接将数据库系统和数据都放入内存,可以大大简化数据库有关IO方面的配置,因为基本上可以不配置高速Cache等表级的内存使用策略。

同时,定期备份机制同时提高了系统容灾能力,还能提供了多个数据还原点。

4客户端的优化4.1 客户端使用长连接描述:连接数据库的过程,比较复杂,而且连接释放,也需要一段时间。

保持数据库连接,可以避免连接和释放的资源动态创建和回收过程。

实施要点:数据库客户端采用单进程、查询代理、数据库连接池等技术实现数据库连接的保持。

点评:在大量频繁的查询业务中,应避免每次查询都进行数据库的连接过程。

4.2 查询语句的优化描述:查询指令的优化,是一个很大的课题,这里,对我负责的项目遇到的实际情况,说明一种优化方法案例:使用联合(union)代替“或”(or)条件。

例如:select name from obj whare id=123 or id=987可以优化为:Select name form obj where id=123UnionSelect name from obj where id=987点评:查询语句的优化是一个复杂过程,需要积累大量的实战经验。

同时,还应从设计层面,也就是根本的层面对表结构进行优化。

4.3 绑定变量描述:使用绑定变量,可以减少服务器端对SQL的语法、语义、执行计划的计算时间,有效提高经常使用的SQL执行的执行效率。

实施要点:客户端代码,使用PreparedStatement相关的系列函数调用,实现绑定变量方式的数据库操作。

如果操作中存在数据库对象变量,则无法使用绑定变量。

点评:如果操作频繁,而且SQL语句形式相对固定,应尽量使用绑定变量。

并将该要求写入公司的编码规范。

5结论和展望通过对了解Sybase的内部实现方式的深入理解,在业务系统上逐渐形成了优化方案,通过测试和实际应用,系统的性能得到极大的提升。

以上是一些提升大量并发查询的优化措施的列举,在项目的实际设计、应用中,应该根据业务系统的数据情况、使用情况,选择适当的措施进行性能优化。

各种措施,都存在自身的局限性,应进行全面的衡量,选择性能的最佳平衡点。

Sybase作为一个跨平台、高稳定性、高可伸缩性、高复制性能的数据库系统,依然在银行、政府系统担当这重要的角色。

【参考文献】《性能和调优系列:物理层面的数据库调优》2009年3月Sybase《性能和调优系列:查询处理和抽象计划》2008年11月Sybase。

相关文档
最新文档