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

合集下载

Sybase优化

Sybase优化

浅析Sybase数据库系统性能调优“性能调优”是对应用程序的性能优化。

SYBASE数据库“性能调优”的主要目的是减少对系统公共资源的争用。

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

(2) 数据库层::包括数据库对象的设计,索引的创建!表中数据类型的选择,数据库设备的分配及使用。

(3) 应用层:包括T_SQL查询语句的优化,应用级封锁,事务和游标的使用。

(4) 运行环境层:包括硬件、操作系统和网络对总体性能的影响。

在数据库应用系统的管理维护中,运行环境引起的性能劣化只有通过硬件的升级才能得到优化,在系统硬件配置和网络设计确定的情况下,影响系统性能的主要是数据库层和服务器层。

笔者就数据层和服务器层优化进行总结。

一、数据库表的优化对于Sybase11.9以前的版本,由于数据库管理系统只提供了页级锁和表级锁,因此减少页的竞争将有助于提高系统的性能.当大多数更新都发生在同一页上时,该页将成为热点,通过分析性能监测报告,我们可以得到系统的页竞争情况,例如下述报告表明有99%的插入发生在堆表的最后一页上,并且正在等待锁:Last Page Loocks on HeapsGranted 3.0 0.4 185 88.1%Waited 4.0 0.0 25 11.9%解决上述问题的方法有两种:一种是将表分区,表分区后可产生多个页链,这样就有多个“最后一页”来满足插入要求,从而减少并发插入时的相互等待;另一种是采用非簇类索引,将更新分布于表中不同的数据页上,但该方法会增加数据物理顺序的开销。

对于一些竞争非常激烈且记录条数较少的表,我们可以通过减少数据页或索引页上行的数量来进行优化,即将一条记录分布在一页上,这样各进程需要的页都不相同,从而可以大大减少数据页的竞争。

在建表时Sybase提供了fillfactor和max_roms_per_page两个参数,分别用来改变索引页和数据页的填充程度。

Sybase数据库性能优化研究

Sybase数据库性能优化研究

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

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

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

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

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

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

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

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

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

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

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

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

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

最新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数据库性能优化研究

摘 要 : 运 行 于 S O UNI 操 作 系统 上 的 s6s 数 据库 管理 系统 的优 化进 行研 究 。大型数 据库性 能 的优化 是 实现 高 对 C X ya e 效率数据操作的基础 ,以双机双工计算机 系统为运行环境 ,研究 了S6s 数据库管理 系统在运行环境层、服务器层、数据 ya e 库层 、应 用 层等 方 面的性 能优 化 解决 方案 ,以 实际的 应 用为 背景 ,分析 讨 论 了 sbs 数据 库 性能优 化 的原理 和方 法 。 实践 va . e
S b s t ba ePe f r a c tm ia i n S u y y a eDa a s r o m n eOp i z t t d o
W a gY pn n a ig
( a g h uB i i ,o ue e tr a g h u 3 0 ,hn ) H n z o udn C mp tr ne, n z o 1 0 3C i l g C H 0 a

L re cl dt ae ef mac p mi tnit ci eh e c nyo tmaiuao ae nda— pe o p t a — a a b s r r neot z i ahe i f i c f a n l nbsdo ul u l cm u r gs e a p o i ao so v 曲 i e da p t i d x e
因,确 定所 需要 达 到 的 目标 ,然 后利 用相 关 的性 能监 测 工具 ,实 现对 S b s 数据 库 性能 的改进 与测 算 ,主要 包括 以下 步骤 : ya e 1确 定 测试 数据 集 。测试 用 的数据 集应 具有 典型 性 ,能够代 .
表 S b s 数 据库 系统 在 实际应 用 中的特 点 , ya e 能够 全面 地 反映系 统

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数据库的优化技术和方法进行了介绍。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Sybase性能调优要点

Sybase数据库性能调优编者按:在现有软硬件条件下,充分发挥数据库系统的潜能(数据库性能调优)是DBA(数据库管理员)追求的最高境界。

然而,数据库性能调优是一个非常复杂的问题,不仅需要潜心研究数据库的理论知识,更需要参考同行的实践经验。

本期我们特别为DBA选登了一篇有关这方面内容的文章,希望对您的工作有所启迪。

文中提到的方法,主要针对Sybase数据库,但对DB2、Oracle 等大型数据库系统同样也有借鉴意义。

全国铁路客票系统是一个典型的基于数据库的大型应用系统,经过多次的技术改进,现已能够比较全面充分地满足和适应客票发售和预订的需求,是铁路运输管理信息系统中的重点应用。

系统采用Client/Server结构,后台使用Sybase 数据库和Unix操作系统,中间由自行开发的中间件负责连接交易处理和数据库通信。

这样一个遍及全国大小车站、统管全国的铁路客票发售系统,其重要性不言而喻。

特别是节假日铁路售票高峰期,客票主机一旦出现故障,造成停机,便会直接影响售票,极大地影响铁路正常运营。

因此,如何深入调整Sybase数据库的性能,保证数据库的高可用性,以满足日益增长的客票网络的需求,是每一个地区中心和每一个车站的数据库管理员的重要课题。

本文将结合铁路客票系统,对如何调整优化Sybase数据库的性能进行较深入的论述。

何谓数据库性能调优数据库性能一般用两个方面的指标来衡量:响应时间和吞吐量。

响应越快,吞吐量越大,数据库性能越好。

不过,响应时间和吞吐量并不是都能一起得到改善的。

Sybase数据库性能调优可以从四个方面进行:●操作系统级:对网络性能、操作系统参数、硬件性能等做改进。

●SQL Server级:调整存取方法,改善内存管理和锁管理等。

●数据库设计级:采用降范式设计,合理设计索引,分布存放数据等。

●应用程序级:采用高效SQL语句,合理安排事务,应用游标,处理锁。

本文将对除操作系统级以外的三个方面的内容进行讨论,其中SQL Server 部分提到的概念只适用于Sybase数据库,但第三、第四方面讨论的内容同样适用于Sybase外的其他数据库。

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

用一个案例讲解Sybase的性能优化2010-05-05 10:07用一个案例讲解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公司咨询,得到的答案是不仅要在Server端修改参数,还必须在客户端程序中用DBSETLPACKET()函数显式指定和default network packet size一样大小的网包值,改动才起作用。

而以前并未在程序中作指定,因此服务器与客户端之间的通信仍采用SYBASE的缺省网包长度512字节。

在SYBASE的处理中是需接收一条完整的命令后才能进行处理。

如果一条命令跨网包传送,Server在收到第一个网包时并不能立即对它进行处理,还必须等待下一个网包将完整的命令送过来,这就涉及到TCP协议的延迟确认问题。

它的主要内容是:面向连接的传输协议要求对发送的每一个包都要进行确认,通常对所收到数据进行确认的包都很小,为了避免在网络上产生过多的短包,接收端在收到数据之后并不立即给发送方发送确认信息,而是要延迟一段时间,看本方是否有数据需要发送至对方,如果有则将数据连同对上次收到数据的确认消息一起发送给对方,这中间就有延迟时间。

关于延迟时间的长短,不同的机器有不同的设置,TCP协议规定不超过500毫秒,有的机器取200毫秒,这是个相当长的时间。

我们从sp_sysmon的输出结果的另一参数,即 Server端每秒收到客户端的字节数的参数Total Bytes Received per sec的值仅为5681.9,这说明平均一秒中只有5个事务送到服务器端等待处理,即使忽略掉处理时间,一秒中也最多只能处理5个事务。

实际的情况是插28239个事务用了5837秒,平均每秒处理4.87个事务。

当将网包长度改为1536后,同样的资料全部入库只需285秒的时间。

可见网包长度不当是影响库生成的一个原因。

2.2 网包长度的试验和对比分析SYBASE是基于客户机服务器体系结构的数据库系统,客户机和服务器之间的是网络通信,因此网包长度是SYBASE性能调优的一个重要参数,是一个很重要也很值得探讨的问题。

不同的应用对网包大小有不同的需求,9210数据库接收的资料多种多样,有的数据的一条插入命令长达10多K字节(如公报),有的命令却只有100多个字节(如探空要素)。

我们该如何综合考虑选取一个合适的网包长度呢?为此我们针对一天的公报资料、探空资料、地面要素,采用不同的网包长度,利用单个进程和三个并发进程等多种方式进行插表试验,其运行结果见表2:表2 不同网包长度插表试验运行时间网包大小(字节)5121536204811242公报资料单进程插入时间(秒)27031371981539三个并发进程插入时间(秒)997568608554地面要素单进程插入时间(秒)5805296290三个并发进程插入时间(秒)1949263265探空资料单进程插入时间(秒)242246239三个并发进程插入时间(秒)222214215从上述试验结果可见改动网包长度能对一些插入命令长度超过512B的资料(如公报、地面要素)有作用,对于一些插入命令长度不超过512B的资料基本无作用,且网包长度从512改成1536时效果显著,即使在三个进程并发时效果也显著(在9210数据库系统中入库时是由三个进程同时进行的)。

当网包长度超过1536时插入时间能减少一些,但效果不显著了。

2.3 关于网包长度参数设定的注意事项2.3.1 有关网包长度的参数(1) SYBASE在Server端有关网包长度的参数缺省网包长度(Default network packet size)——定义所有的用户所使用的缺省网络包的大小,其缺省值为512字节,可根据需要将它设为512字节的任意倍数,其最大值524288字节。

最大网包长度(Max network packet size)——指定与Server通信的客户所能请求的网络通信包的最大值。

它也可根据需要将它设为512字节的任意倍数,其最大值524288字节。

Additional network memory ——该参数定义了比缺省网包大的网络包的额外内存的最大值。

它的值必须是2048字节的倍数,缺省为0。

(2)SYBASE在客户端有关网包长度的参数SYBASE在客户端有关网包长度的指定因程序的不同而不同,如isql程序用-A****(****为网包长度)指定,对于使用DB-Library函数的程序要用RETCODE DBSETLPACKET语句指定,指定方法如下:RETCODE DBSETLPACKET(LOGINREC *login,short packet_size)参数login为指向LOGINREC结构的指针;参数packet_size为要设置的网包的大小(单位:字节)。

函数的返回值为SUCCESS或FAIL。

当客户端程序不指定网包长度的参数时取缺省网包长度512。

2.3.2 网包长度参数之间的关系和作用Server端最大网包长度是说明本Server提供的最大网包长度,当客户端程序指定的网包长度超过最大网包长度时,连接Server出错;当客户端程序指定的网包长度不当时(即客户端程序指定的网包长度大於Server端缺省网包长度,而且额外网络内存又不够大),使用Server端缺省网包长度。

另外,Server根据缺省网包的大小从 Server的内存池(由total memory 配置参数决定)中分配一部分为网络内存,它的值是:用户连接数 * 3 * 缺省网包长度。

缺省网包长度必须小於等於最大网包长度;额外网络内存是从操作系统的内存中再申请一部分来作为Server和客户间通信使用,其值为:([3 * 最大网包长度 * 用到最大包的用户连接数 * 1.02 /2048]+1) * 2048客户端的网包长度是向Server申请此次连接所用网包的长度,它的长度不得大於Server端最大网包长度,当它的值大於Server端缺省网包长度时,必须有足够大的额外网络内存,若额外网络内存不够大,则使用Server端缺省网包长度,当客户端的网包长度不指定时,则使用客户端的缺省网包长度512字节。

综上所述,较大的网包长度是有利于Server和客户端的大数据量传送,提高SYBASE的性能,但它是以消耗内存为前提的,过多的内存消耗会影响到整个系统的性能,因此一般的情况下不配置额外网络内存,Server端缺省网包长度的长度以适当为好,所以我们把Server端缺省网包长度定为1536字节,客户端也指定为1536字节。

2.4 关于网包的进一步应用当网包长度为1536字节时,对于探空资料的要素表,它的一条插入命令长度最长只有166字节,那每次发送给Server的网包都有大量的空闲空间。

是否能将这些空间充分利用,即在一个网包中包含多条插入命令从而提高性能呢?答案是可行的,SYBASE的一个事务可包含多条插入命令,况且一份探空报告解码后包含多层探空要素,具备一次可形成多条插入命令的条件。

为此,我们做了几组将几条命令放在一个网包里一次发送的测试,结果绘成如下的曲线图(图1)。

根据推算,1536的网包最多能放下9条完整的命令,但实验结果是以6条为一批的效果最好,这可能是系统各个方面的综合影响之效果。

由此可见,采取此种方法也能提高插入性能。

3.检索慢的原因分析和技术措施3.1 检索慢的原因分析为了查清检索慢的原因首先要确定哪些资料检索慢,我们在主站业务数据库中对下列要素资料:地面要素资料(代号:SURF);探空要素资料(代号:TEMP);卫星探测表温、风、云、辐射二段要素资料(代号:GEO2);卫星探测表温、风、云、辐射五段要素资料(代号:GEO5);卫星探测高空温度(厚度)要素资料(代号:TOVC);卫星探测晴空辐射要素资料(代号:SARA)的一天中一个时次的全部要素进行检索,检索内容存放于用户检索程序的内存数组,其结果见表3:表3 各种资料检索时间SURFTEMPGEO2GEO5TOVCSARA检索资料个数5403538177114436760760检索资料字节数6375543660982479417323278688121456检索时间(秒)<221< 1<22055从这些测试结果中可见检索慢的资料是TEMP,TOVC,SARA,这些资料有一个共同的特点,每种资料在库中有键表(有一个唯一索引)和要素表(无索引),在检索过程中要进行表连接。

相关文档
最新文档