缓冲区w7系统怎么调烟雾头

w7系统怎么调烟雾头  时间:2021-02-27  阅读:()
性能和调优指南SybaseIQ15.
4文档ID:DC00953-01-1540-01最后修订日期:2011年11月版权所有2011Sybase,Inc.
保留所有权利.
除非新版本或技术声明中另有说明,否则本出版物适用于Sybase软件及所有后续版本.
本文档中的信息如有更改,恕不另行通知.
本出版物中描述的软件按许可证协议提供,其使用或复制必须符合协议条款.
要订购其它文档,美国和加拿大的客户请拨打客户服务部门电话(800)685-8225或发传真至(617)229-9845.
持有美国许可证协议的其它国家/地区的客户可通过上述传真号码与客户服务部门联系.
所有其它国际客户请与Sybase子公司或当地分销商联系.
仅在软件的定期发布日期提供升级内容.
未经Sybase,Inc.
的事先书面许可,不得以任何形式、任何手段(电子的、机械的、手工的、光学的或其它手段)复制、传播或翻译本出版物的任何部分.
可在http://www.
sybase.
com/detailid=1011207上的Sybase商标页中查看Sybase商标.
Sybase和列出的标记均是Sybase,Inc.
的商标.
表示已在美国注册.
SAP和此处提及的其它SAP产品与服务及其各自的徽标是SAPAG在德国和世界各地其它几个国家/地区的商标或注册商标.
Java和基于Java的所有标记都是SunMicrosystems,Inc.
在美国和其它国家/地区的商标或注册商标.
Unicode和Unicode徽标是Unicode,Inc.
的注册商标.
本书中提到的所有其它公司和产品名均可能是与之相关的相应公司的商标.
Use,duplication,ordisclosurebythegovernmentissubjecttotherestrictionssetforthinsubparagraph(c)(1)(ii)ofDFARS52.
227-7013fortheDODandassetforthinFAR52.
227-19(a)-(d)forcivilianagencies.
Sybase,Inc.
,OneSybaseDrive,Dublin,CA94568.
目录读者1性能注意事项3管理系统资源5优化内存使用5分页增加可用内存5监控交换的实用程序6服务器内存6管理缓冲区高速缓存7确定缓冲区高速缓存的大小7设置缓冲区高速缓存大小10指定页大小10为大量用户进行优化11特定于平台的内存选项12进程线程模型14平衡I/O15原始I/O(在UNIX操作系统上)15SybaseIQ和磁盘条带化16内部条带化17策略文件位置17用于调优资源使用的选项19限制并发查询19设置可用CPU数20限制查询使用的临时数据库空间20限制按行返回的查询21强制游标为非滚动游标21限制游标数22限制语句数23预取高速缓存页23针对典型使用进行优化24控制预取行数24改进资源使用的其它方式25性能和调优指南iii管理Multiplex数据库中的磁盘空间25使用逻辑服务器管理Multiplex资源25查询服务器间的负载平衡25管理数据库大小和结构26网络性能27监控和调优性能29使用存储过程获取信息29分析数据库过程30查看过程分析统计信息30数据库对象分析信息31过程分析统计信息32数据模型推荐34索引提示34使用索引的时间和位置35简单索引选择标准36HG索引装载37多列索引38连接列39主键40外键40适当确定数据类型的大小41IQUNIQUE和MINIMIZE_STORAGE42空值42无符号数据类型43LONGVARCHAR和LONGVARBINARY43大对象存储44临时表45非规范化以提高性能46可用来实现更快装载的UNIONALL视图46监控性能统计信息48在服务器级监控性能48内存使用统计信息49高速缓存统计信息49CPU使用率统计信息51目录ivSybaseIQ线程统计信息51连接统计信息52请求统计信息53事务统计信息53存储I/O统计信息54数据库空间使用情况统计信息55网络统计信息55监控缓冲区高速缓存56启动缓冲区高速缓存监控器56输出选项57在监控器运行时检查结果67停止缓冲区高速缓存监控器67检查并保存监控器结果67缓冲区高速缓存结构68避免缓冲区管理器抖动69监控Windows系统上的分页70监控UNIX之类的操作系统上的分页70缓冲区高速缓存监控清单71监控CPU使用的系统实用程序74优化查询和删除77实现结构化查询的提示77增强ORDERBY查询性能77提高了子查询性能78使用高速缓存方法78计划查询78查询评估选项79查询树80使用查询计划80控制查询处理81设置查询时间限制82设置查询优先级82设置查询优化选项83设置用户提供的条件提示83监控负载84目录性能和调优指南v优化删除操作85HG删除操作85WD删除操作86TEXT删除操作87索引89目录viSybaseIQ读者本文档面向需要配置SybaseIQ以提高性能的数据库管理员、数据库设计人员和开发人员.
读者性能和调优指南1读者2SybaseIQ性能注意事项性能通常用响应时间和吞吐量来衡量.
良好的设计和索引策略可以实现最大的性能增益.
响应时间响应时间是完成单个任务所用的时间.
多个因素会影响到响应时间:减少争用和等待时间,特别是磁盘I/O等待时间使用更快的组件减少需要资源的时间(提高并发性)吞吐量吞吐量是指在固定时间段内完成的工作量.
吞吐量通常以每秒的事务数(tps)进行度量,也可以按每分钟、每小时、每天等进行度量.
设计注意事项要实现最大的性能增益,请在正确配置的系统上运行SybaseIQ、建立良好的设计以及选择正确的索引策略.
其它考查事项(如硬件和网络分析)可确定安装中的瓶颈.
另请参见数据模型推荐(第34页)管理系统资源(第5页)监控和调优性能(第29页)优化查询和删除(第77页)性能注意事项性能和调优指南3性能注意事项4SybaseIQ管理系统资源对硬件和软件配置进行调优可以提供更好的性能和更快的查询.
优化内存使用了解SybaseIQ分配内存的方式可以帮助您让系统达到最佳性能.
分页增加可用内存虽然分页可以增加可用内存量,但应避免页面交换或最大程度地减少页面交换以实现良好的内存管理.
当系统没有足够内存时,性能会严重降低.
如果发生这种情况,则需要找到某种方式,使更多内存可用.
分配给SybaseIQ的内存越多越好.
但是,系统的内存量始终存在固定限制,因此有时操作系统只能将一部分数据放在内存中,而将其余部分放在磁盘上.
如果操作系统为了满足一次内存请求而必须转向磁盘并检索任何数据,则这种情况称为分页或交换.
好的内存管理的主要目标就是避免分页或交换,或者使其最大程度减少分页或交换.
最频繁使用的操作系统文件是交换文件.
当内存用完时,操作系统就会将内存页交换到磁盘,以便为新数据腾出空间.
当再次调用被交换的页时,就会交换其它页,并返回所需的内存页.
对于有很高磁盘使用率的用户,这会非常耗时.
通常,应当尝试组织内存,以避免交换,从而最大程度减少对操作系统文件的使用.
为了最大程度利用物理内存,SybaseIQ对所有数据库读取和写入均使用缓冲区高速缓存.
注意:您的磁盘上的交换空间必须至少有足够多的空间,才能容纳所有物理内存.
必须使交换/分页空间条带化分布在快速磁盘上.
另请参见监控交换的实用程序(第6页)服务器内存(第6页)管理缓冲区高速缓存(第7页)确定缓冲区高速缓存的大小(第7页)设置缓冲区高速缓存大小(第10页)指定页大小(第10页)为大量用户进行优化(第11页)特定于平台的内存选项(第12页)管理系统资源性能和调优指南5监控交换的实用程序使用操作系统上的实用程序来了解您的系统是否分页过多.
使用UNIXvmstat命令、UNIXsar命令或Windows任务管理器可以获取正在运行的进程数以及页出和交换次数的统计信息.
使用此信息可以了解系统是否分页过多,然后进行任何必要的调整.
可能需要将交换文件放在特殊的快速磁盘上.
另请参见分页增加可用内存(第5页)服务器内存(第6页)管理缓冲区高速缓存(第7页)确定缓冲区高速缓存的大小(第7页)设置缓冲区高速缓存大小(第10页)指定页大小(第10页)为大量用户进行优化(第11页)特定于平台的内存选项(第12页)服务器内存SybaseIQ为缓冲区、事务、数据库和服务器分配堆内存.
也许还会使用共享内存,但数量上少得多.
在操作系统级别,SybaseIQ服务器内存由堆内存组成.
在大多数情况下,您不需要关注SybaseIQ所使用的内存是堆内存还是共享内存.
所有内存分配都会自动处理.
但是,在运行SybaseIQ之前,可能需要确保正确配置操作系统内核以使用共享内存.
管理Multiplex内存Multiplex中的每个服务器都可以在其自己的主机上,也可以与其它服务器共享主机.
相同系统上的两个或更多服务器不会比处理相同负载的单个组合服务器消耗更多CPU时间,但分开的服务器可能比单个组合服务器需要更多物理内存,因为每个服务器都不会与其它任何服务器共享所使用的内存.
另请参见分页增加可用内存(第5页)监控交换的实用程序(第6页)管理缓冲区高速缓存(第7页)确定缓冲区高速缓存的大小(第7页)设置缓冲区高速缓存大小(第10页)指定页大小(第10页)为大量用户进行优化(第11页)特定于平台的内存选项(第12页)管理系统资源6SybaseIQ管理缓冲区高速缓存对于大多数数据库来说,缺省高速缓存大小(主高速缓存为16MB,临时高速缓存为12MB)太低.
请尽可能多地为IQ主缓冲区高速缓存和临时缓冲区高速缓存分配内存.
SybaseIQ对用于缓冲区高速缓存的内存量超出了用于任何其它用途的内存量.
SybaseIQ有两个缓冲区高速缓存,一个用于IQ存储,另一个用于临时存储.
它将这两个缓冲区高速缓存用于所有数据库I/O操作-分页、插入数据库以及备份和恢复.
只要数据在内存中,它就会存储在这两个高速缓存的某一个之中.
所有用户连接都共享这些缓冲区高速缓存.
SybaseIQ会一直跟踪与每个连接关联的数据.
另请参见分页增加可用内存(第5页)监控交换的实用程序(第6页)服务器内存(第6页)确定缓冲区高速缓存的大小(第7页)设置缓冲区高速缓存大小(第10页)指定页大小(第10页)为大量用户进行优化(第11页)特定于平台的内存选项(第12页)确定缓冲区高速缓存的大小根据多个因素,计算正确的缓冲区高速缓存大小.
系统上的物理内存总量SybaseIQ、操作系统和其它应用程序执行其任务时需要此内存的大小是多少是否正在执行装载、查询或同时执行这两个操作schema配置和查询负载操作系统及其它应用程序大多数操作系统会将大部分可用内存用于文件系统缓冲.
了解适用于您的操作系统的缓冲策略以避免过度分配内存.
有关与SybaseIQ一起运行的应用程序的内存要求,请参见应用程序和操作系统文档.
另请参见内存开销(第8页)主缓冲区高速缓存和临时缓冲区高速缓存(第9页)管理系统资源性能和调优指南7内存开销在确定操作系统和其它应用程序需要多少物理内存之后,请计算SybaseIQ需要多少剩余内存.
原始分区与文件系统对于UNIX系统,使用文件系统而不是裸分区的数据库可能需要剩余内存的另外30%来处理操作系统的文件缓冲.
在Windows上,应当通过将OS_FILE_CACHE_BUFFERING设置为'OFF'(对于新数据库,这是缺省值)来禁用文件系统高速缓存.
多用户数据库访问对于数据库的多用户查询,SybaseIQ需要对每个"活动"用户使用大约10MB.
活动用户被定义为同时访问或查询数据库的用户.
例如,30个用户可能连接到SybaseIQ,但仅10个左右用户可能正在任何时间同时频繁使用数据库.
用于线程堆栈的内存处理线程需要少量的内存.
您使用的SybaseIQ处理线程越多,需要的内存就越多.
-iqmt服务器开关控制SybaseIQ的线程数.
-iqtss和-gss服务器开关控制为每个线程分配的堆栈内存量.
为IQ堆栈分配的总内存量大致等于:(-gn*(-gss+-iqtss))+(-iqmt*-iqtss).
如果拥有大量用户,则处理线程所需的内存将增加.
-gn开关控制数据库服务器可以并发执行的任务(用户和系统请求)数.
-gss开关在一定程度上控制执行这些任务的服务器执行线程的堆栈大小.
IQ使用以下公式计算这些工作线程的堆栈大小:(-gss+-iqtss).
线程总数(-iqmt加-gn)不得超过平台允许的数目.
其它内存使用所有命令和事务都会使用一些内存.
以下操作是除了前面讨论的内存使用以外最重要的内存使用:备份.
用于备份的虚拟内存量是在创建数据库时所指定的IQPAGESIZE函数.
它大约是2*CPU数*20*(IQPAGESIZE/16).
在某些平台上,通过在BACKUP命令中调整BLOCKFACTOR,可能能够提高备份性能,但增加BLOCKFACTOR也会增加所使用的内存数量.
数据库检验和修复.
在检查整个数据库时,sp_iqcheckdb过程将在启动任何处理之前打开所有SybaseIQ表及其各自的字段和索引.
根据SybaseIQ表的数量以及这些表中的累积列数和索引数,sp_iqcheckdb可能需要非常少或非常多的虚拟内存.
若要限制需要的内存量,请使用sp_iqcheckdb选项,以检查或修复单个索引或表.
删除泄漏块.
删除漏洞操作也需要打开所有SybaseIQ表、文件和索引,因此它会使用像p_iqcheckdb在检查整个数据库时所使用的那么多虚拟内存.
它使用SybaseIQ临时缓冲区高速缓存来跟踪所使用的块.
管理系统资源8SybaseIQ另请参见操作系统及其它应用程序(第7页)主缓冲区高速缓存和临时缓冲区高速缓存(第9页)主缓冲区高速缓存和临时缓冲区高速缓存高速缓存大小的一般准则是40%用于主缓冲区高速缓存,而60%用于临时缓冲区高速缓存.
请基于此准则监控服务器性能,然后根据需要调整高速缓存大小.
缓冲区高速缓存和物理内存用于SybaseIQ主缓冲区高速缓存和临时缓冲区高速缓存的内存总量,加上SybaseIQ内存开销,以及用于操作系统和其它应用程序的内存,不得超过系统的物理内存.
为了获得最佳性能,请尽可能多地为IQ的主缓冲区高速缓存和临时缓冲区高速缓存分配内存.
例如,如果计算机上有4GB的物理内存可供SybaseIQ使用,则可拆分该内存量供主缓冲区高速缓存和临时缓冲区高速缓存使用.
其它注意事项缓冲区高速缓存大小要求取决于使用情况.
若要获得最高性能,请在插入、查询数据库和混合使用之间更改设置.
但是,在混合使用环境中,为了重置缓冲区高速缓存选项而要求所有用户退出数据库并不始终可行.
在这些情况下,可能需要照顾到装载或查询性能.
注意:这些准则假定系统上每次有一个活动数据库.
如果有多个活动数据库,则需要在期望使用的数据库中进一步拆分剩余的内存.
在某些UNIX平台上,可能需要设置其它服务器开关,以便使更多内存可用作缓冲区高速缓存.
另请参见操作系统及其它应用程序(第7页)内存开销(第8页)管理系统资源性能和调优指南9设置缓冲区高速缓存大小SybaseIQ最初分别将主和临时缓冲区高速缓存的大小设置为16MB和12MB.
请更改主缓冲区高速缓存和临时缓冲区高速缓存的缺省大小,以适应您的应用程序.
表1.
缓冲区高速缓存大小设置方法何时使用它设置一直有效的时间-iqmc和-iqtc服务器开关推荐的方法.
设置启动时的高速缓存大小.
从服务器启动时到服务器停止-iqmc和-iqtc服务器启动选项仅在服务器正在运行时保持有效,因此每次重新启动服务器时都需要包括它们.
指定页大小页大小和缓冲区高速缓存大小会影响数据库的内存使用和磁盘I/O吞吐量.
注意:页大小无法更改,并且决定某些数据库对象的大小上限以及是否可以使用LOB功能.
页大小SybaseIQ以页大小为单位执行I/O.
创建数据库时,应为目录存储和IQ存储指定单独的页大小.
临时存储的页大小与IQ存储相同.
目录存储的页大小不会对性能产生真正的影响.
缺省值4096字节应当足够.
IQ页大小确定其它两个性能因素:缺省I/O传输块大小和数据库最大数据压缩.
数据压缩SybaseIQ压缩所有数据.
压缩量基于IQ页大小确定.
节省内存如果计算机没有足够的内存,请增加内存并减小缓冲区高速缓存大小.
但是,如果缓冲区高速缓存减少得太多,则由于缓冲区不足,可能使数据装载或查询效率降低或无法完成.
另请参见分页增加可用内存(第5页)监控交换的实用程序(第6页)服务器内存(第6页)管理缓冲区高速缓存(第7页)确定缓冲区高速缓存的大小(第7页)设置缓冲区高速缓存大小(第10页)为大量用户进行优化(第11页)特定于平台的内存选项(第12页)管理系统资源10SybaseIQ为大量用户进行优化为了支持最大数量的用户,您可能需要增加临时数据库空间、调整操作系统参数以及更改启动参数.
启动选项对于有大量用户的操作,请使用以下启动选项.
-gm设置缺省连接数.
-gm#_connections_to_support尽管此选项表示服务器将支持的连接总数,但并非所有连接都将在任一时间处于活动状态.
-iqgovern限制同时执行的最大查询数.
如果已提交查询的用户数超过了-iqgovern限制,则新查询将排队,直到某个活动查询完成.
-iqgovern#_ACTIVE_queries_to_support-iqgovern的最佳值取决于查询的性质、CPU数和SybaseIQ缓冲区高速缓存的大小.
缺省值为2*numCPU+100.
在有很多连接用户的情况下,您可能发现将此选项设置为2*numCPU+4可以提供更好的吞吐量.
-gn设置多个用户同时运行时用于目录存储和连接的执行线程数.
-gnnumberoftasks(bothuserandsystemrequests)thatthedatabaseservercanexecuteconcurrently-gn的正确值取决于-gm的值.
start_iq实用程序将计算-gn并进行相应设置.
将-gn设置得太低会阻止服务器正确操作.
建议不要将-gn设置为超过480.
-c设置目录存储高速缓存大小.
-ccatalog_store_cache_sizeCatalog高速缓存大小在很大程度上取决于模式大小和对象数量.
Catalog存储缓冲区高速缓存还是Catalog存储的常规内存池.
要以MB为单位指定,请使用-cnM格式,例如-c64M.
Sybase建议使用下列值:表2.
目录缓冲区高速缓存设置针对此数目的用户将-c设置为此最小值或更高最高100064MB管理系统资源性能和调优指南11针对此数目的用户将-c设置为此最小值或更高最高20048MB(64位系统的start_iq缺省值);大量用户可能从64MB中受益-cl和-ch设置目录存储高速缓存大小的上限(-ch)和下限(-cl).
-clminimumcachesize-chmaximumcachesize如果标准目录高速缓存大小太小,请设置-cl和-ch参数.
在32位平台上,请尝试以下设置:-cl128M-ch256M不得将-c和-ch或-cl用于同一配置文件或命令行中.
有关相关信息,请参见-chcache-size选项.
警告!
若要显式控制目录存储高速缓存大小,必须在配置文件(.
cfg)中或在用于启动服务器的UNIX命令行上执行以下操作之一(但不要同时执行这两项操作):设置-c参数使用-ch和-cl参数设置目录存储高速缓存大小的特定上限和下限如不按上述说明指定参数组合,则可能产生意外结果.
-iqmt设置处理线程数.
如果对于-gm设置而言,-iqmt设置得太低,则可能会导致线程匮乏.
特定于平台的内存选项可用内存总量仅受限于系统的虚拟内存.
连系内存池在HP和Solaris平台上,可以指派指定数量的内存作为连系内存.
连系内存是锁定到物理内存中的共享内存.
内核不能从物理内存中对该部分内存进行分页.
当其它应用程序正同时运行于相同计算机上时,连系内存可能提高SybaseIQ性能.
但是,为SybaseIQ分配专用连系内存会使它对该计算机上的其它应用程序不可用.
要仅在这些UNIX平台上创建连系内存池,请指定-iqwmem命令行开关,以指示连系内存的MB数.
(除在Solaris上以外,您必须是root用户,才能设置-iqwmem.
)在64位平台上,-iqwmem的唯一上限是计算机的物理内存.
例如,在有14GB内存的计算机上,您可能能够留出10GB连系内存.
为此,请指定:-iqwmem10000管理系统资源12SybaseIQ注意:仅当您有足够内存可专用于为此目的而指定的数量时,才使用-iqwmem.
否则,可能导致性能大幅下降.
在Solaris上,-iqwmem始终提供连系内存.
在HP上,如果您作为root启动服务器,则-iqwmem提供连系内存.
如果启动服务器时您不是root,则它提供非连系内存.
此行为可能在未来版本中有更改.
其它应用程序和数据库的影响服务器内存来自于所有应用程序和数据库使用的内存池.
如果尝试同时在相同计算机上运行多个服务器或多个数据库,或者有其它正在运行的应用程序,则可能需要减少服务器所请求的内存数量.
还可以发出UNIX命令ipcs-mb以查看实际段数.
对HP内存问题进行故障排除在HP-UX上,检查maxdsiz_64bit内核参数的值.
此参数限制在64位HP处理器上可用于SybaseIQ的虚拟内存数量.
有关建议值,请参见《安装和配置指南》.
控制文件系统缓冲在某些文件系统上,您可以打开或关闭文件系统缓冲.
关闭文件系统缓冲通常会减少分页并提高性能.
若要对现有数据库的IQ主数据库空间禁用文件系统缓冲,请发出以下语句:SETOPTION"PUBLIC".
OS_FILE_CACHE_BUFFERING=OFF若要对现有数据库的IQ临时dbspace禁用文件系统缓冲,请发出以下语句:SETOPTION"PUBLIC".
OS_FILE_CACHE_BUFFERING_TEMPDB=OFF只能为PUBLIC组设置此选项.
请关闭数据库并重新启动,以使更改生效.
此直接I/O性能选项仅在SolarisUFS、Linux、LinuxIBM、AIX和Windows文件系统上可用.
此选项对于HP-UX和HP-UXi不起作用,并且不影响原始磁盘上的数据库.
在Linux,直接I/O在内核版本2.
6.
x中受支持.
要在Linux内核版本2.
6和AIX上启用直接I/O,还要将环境变量IQ_USE_DIRECTIO设置为1.
缺省情况下,直接I/O在Linux内核版本2.
6和AIX上处于禁用状态.
IQ_USE_DIRECTIO对Solaris和Windows不起作用.
注意:在Linux内核版本2.
4上,SybaseIQ不支持直接I/O.
如果在Linux内核版本2.
4上设置了IQ_USE_DIRECTIO环境变量,则SybaseIQ服务器不启动.
系统会报告错误"Error:InvalidBlockI/Oargument,maybeisadirectory,oritexceedsmaximumfilesizelimitfortheplatform,ortryingtouseDirectIOonunsupportedOS".
管理系统资源性能和调优指南13Solaris没有内核参数来约束其文件系统缓冲区高速缓存的大小.
一段时间以后,文件系统缓冲区高速缓存将增长并转移IQ缓冲区高速缓存页,从而导致过度的操作系统分页活动,并使SybaseIQ性能降低.
为此,Sybase强烈建议在Solaris上对数据库使用原始设备.
Windows可以通过耗用文件系统来调整分页算法的偏差,以使应用程序受益.
为了提高SybaseIQ性能,建议使用此偏差.
另请参见启用Java的数据库的选项(第14页)启用Java的数据库的选项设置JAVA_HEAP_SIZE选项可以防止失控的Java应用程序使用过多内存.
SETOPTION命令的JAVA_HEAP_SIZE选项可以设置基于每个连接而分配给Java应用程序的那部分内存的最大大小(字节).
通常,基于每个连接的内存分配由所分配的Java变量和Java应用程序堆栈空间的用户工作集组成.
Java应用程序在连接上执行时,每个连接分配会来自数据库服务器的固定高速缓存,所以,防止无法控制的Java应用程序占用过多内存是很重要的.
另请参见控制文件系统缓冲(第13页)进程线程模型SybaseIQ使用操作系统内核线程,以获得最佳性能.
缺省情况下,SybaseIQ基于系统上CPU的数量分配线程数.
轻型进程是内核所支持的基础控制线程.
操作系统决定哪些轻型进程(LWP)应当运行在哪个处理器上,以及何时运行.
它不知道用户线程是什么,但如果用户线程正在等待或能够运行,则它会知道.
操作系统内核将LWP调度到CPU资源上.
它使用它们的调度类和优先级.
每个LWP均由内核单独进行调度,执行独立的系统调用,调用独立的页错误并在多处理器系统上并行运行.
单个、高度线程化的进程服务于所有SybaseIQ用户.
SybaseIQ基于该连接所完成的处理类型、可用线程总数和各种选项设置,将不同数目的内核线程分配给每个用户连接.
线程不足错误如果查询的线程不足,SybaseIQ将产生以下错误:Notenoughserverthreadsavailableforthisquery管理系统资源14SybaseIQ这种情况可能是暂时的.
当其它某些查询完成时,线程将变为可用,在您下一次发出查询时,查询可能成功.
如果此情况仍然存在,则可能需要重新启动服务器并指定更多SybaseIQ线程.
还有可能是-iqmt为连接数设置的值过低.
用于管理线程使用的SybaseIQ选项使用服务器启动选项-iqmt可以设置最大线程数.
缺省值是从连接数和CPU数计算得到的,通常已足够.
使用服务器启动选项-iqtss可以设置内部执行线程的堆栈大小.
缺省值通常已足够,但如果复杂查询返回一条指示堆栈的深度已超过此限制的错误,则可能会增加.
使用SETOPTIONMAX_IQ_THREADS_PER_CONNECTION命令可以为单个用户设置最大线程数.
SETOPTIONMAX_IQ_THREADS_PER_TEAM可以设置可用于一组线程的线程数.
使用这些选项可以控制特定操作消耗的资源数量.
例如,DBA可在发出INSERT、LOAD、BACKUP或RESTORE命令之前设置此选项.
另请参见性能注意事项(第3页)优化内存使用(第5页)平衡I/O(第15页)用于调优资源使用的选项(第19页)改进资源使用的其它方式(第25页)索引提示(第34页)管理数据库大小和结构(第26页)可用来实现更快装载的UNIONALL视图(第46页)网络性能(第27页)平衡I/O讨论磁盘条带化、随机和顺序文件磁盘访问以及控制消息日志文件大小的方式.
原始I/O(在UNIX操作系统上)您可在原始设备或文件系统文件上创建数据库或数据库空间.
磁盘分区的访问模式通常有两种:文件系统模式(例如,通过UFS文件系统)或原始模式.
原始模式执行无缓冲的I/O,通常使用每个读取或写入系统调用与设备进行双向数据传输.
UFS是缺省的UNIX文件系统,也是缓冲I/O系统,它每次在缓冲区中收集数据,直到它可以传输整个缓冲区.
可以在原始设备或文件系统文件上创建数据库或dbspace.
SybaseIQ自动按照您指定的路径名确定它是原始分区还是文件系统文件.
原始分区可以是任意大小.
管理系统资源性能和调优指南15有关详细信息,请参见《系统管理指南第一卷》中的"使用数据库对象".
另请参见使用磁盘条带化磁盘条带化是一种将单个文件的数据分散到多个磁盘驱动器的常规方法.
与单个磁盘相比,条带化磁盘大幅提高了性能.
内部条带化(第17页)使用多个文件在dbspace中使用多个文件可以提高吞吐量并缩短dbspace的平均延迟时间.
策略文件位置(第17页)用于插入、删除和同步的工作空间SybaseIQ在IQ存储中需要工作空间来插入、删除和同步数据.
在事务提交后,系统将收回此空间以用于其它目的.
设置保留空间选项MAIN_RESERVED_DBSPACE_MB和TEMP_RESERVED_DBSPACE_MB控制SybaseIQ为某些操作而保留的空间数量.
SybaseIQ和磁盘条带化对多个磁盘上的数据进行条带化处理是获得良好性能的重要技术.
磁盘条带化可以在系统中不同的位置执行,通常作为RAID硬件或软件的一部分执行,例如:在设备层,例如磁盘阵列或控制器.
在操作系统或专用设备管理软件(例如Veritas)中.
在应用程序中.
缺省情况下,IQ从内部对dbspace中所有文件的页进行条带化处理,因此出于性能考虑,无需在软件或硬件级别再进行额外的条带化处理.
当然,实施数据库的存储冗余时(例如,在使用RAID-5时),可能有必要进行额外的条带化处理.
在SybaseIQ含有存储冗余的情况下,通过简单的监控或"RAID-1"即可实现最好的性能.
如上所述,SybaseIQ将在dbspace的所有2个磁盘镜像集中分布数据.
出于开销考虑,大多数SybaseIQ数据库不会使用镜像,而是通过RAID-5或类似的RAID级别实施以实现冗余.
利用RAID-5,选择合适的块大小(移到下一个磁盘前向一个磁盘写入多少数据)将对系统产生重大的性能影响,因为RAID-5会产生大量写入开销.
如果您的应用程序会执行频繁的或时间敏感的装载、更新或删除操作,或者查询经常执行临时dbspaceI/O,则SybaseIQ数据库页25-50%大小范围内较小的块大小可能会提供最佳的性能.
如果您的应用程序大多数执行读取操作,很少有写入活动,则IQ页大小75-100%的较大块大小可能会提供最佳的性能.
由于SybaseIQ通常尝试并行预取多个读取操作或刷新多个写入操作,即使只有一个有效查询也是如此,因此,使用非常小的块大小跨多个磁盘分布每页读取或写入操作将不会获得多少好处,并且通常会影响性能.
使用RAID时,通过基于硬件(例如控制器或阵列)的RAID通常会获得最佳的性能.
基于软件的RAID工具可以正常运行,但可能对服务器的CPU增加一点额外的性能负载.
管理系统资源16SybaseIQ内部条带化磁盘条带化利用多个磁盘主轴,并提供并行磁盘写入的速度.
SybaseIQ提供磁盘条带化选项,而不使用第三方软件.
如果您已经有通过第三方软件和硬件实现的磁盘条带化解决方案,请改用该方法.
可以通过为CREATEDBSPACE命令指定STRIPINGON选项启用磁盘条带化.
打开或关闭磁盘条带化在创建dbspace时更改缺省条带化:SETOPTION"PUBLIC".
DEFAULT_DISK_STRIPING={ON|OFF}对于所有平台,DEFAULT_DISK_STRIPING选项的缺省值均为ON.
当磁盘条带化为ON时,传入数据将分散到有可用空间的所有数据库空间.
当磁盘条带化为OFF时,数据库空间(磁盘段)在逻辑文件上从前面填充,每次填充一个磁盘段.
如果更改DEFAULT_DISK_STRIPING的值,将影响不指定分条首选项的所有后续CREATEDBSPACE操作.
磁盘条带化处于打开状态时,可以使用ALTERDBSPACEDROP命令从dbspace中删除文件.
但是,在删除dbspace之前,必须使用sp_iqemptyfile存储过程在此dbspace中重新定位所有数据.
由于磁盘条带化使数据分散在多个文件中,因此sp_iqemptyfile进程可能需要重新定位多个表和索引.
请使用sp_iqdbspaceinfo和sp_iqdbspace存储过程来确定哪些表和索引驻留在dbspace上.
另请参见原始I/O(在UNIX操作系统上)(第15页)使用磁盘条带化磁盘条带化是一种将单个文件的数据分散到多个磁盘驱动器的常规方法.
与单个磁盘相比,条带化磁盘大幅提高了性能.
使用多个文件在dbspace中使用多个文件可以提高吞吐量并缩短dbspace的平均延迟时间.
策略文件位置(第17页)用于插入、删除和同步的工作空间SybaseIQ在IQ存储中需要工作空间来插入、删除和同步数据.
在事务提交后,系统将收回此空间以用于其它目的.
设置保留空间选项MAIN_RESERVED_DBSPACE_MB和TEMP_RESERVED_DBSPACE_MB控制SybaseIQ为某些操作而保留的空间数量.
策略文件位置提供其它存储资源以改进文件磁盘I/O.
通过增加专门用于存储随机访问的文件的磁盘驱动器数,并由此增加每秒对这些文件执行的操作数,可以提高与这些文件相关的性能.
随机文件包括用于IQ存储、临时存储、Catalog存储的文件,以及程序(包括SybaseIQ可执行文件、用户及存储过程和应用程序)和操作系统文件.
管理系统资源性能和调优指南17相反,通过将这些文件放在专用磁盘驱动器上,由此消除与其它进程的争用,可以提高与顺序访问的文件相关的性能.
顺序文件包括事务日志文件和消息日志文件.
要避免磁盘瓶颈,请遵循以下建议:将随机磁盘I/O和顺序磁盘I/O分开.
此外,为了达到最佳性能,每个数据库空间应仅使用物理设备(磁盘或硬件RAID集)的一个分区.
将SybaseIQ数据库I/O与其它数据库(例如AdaptiveServerEnterprise)或任何其它I/O密集型应用程序中的I/O隔离.
将数据库文件、临时数据库空间和事务日志文件放在与数据库服务器相同的物理计算机上.
事务日志事务日志文件包含恢复和审计信息.
若要移动或重命名事务日志文件,请使用事务日志实用程序(dblog).
请参见《实用程序指南》>"数据库管理实用程序">"事务日志实用程序(dblog)".
警告!
SybaseIQ事务日志文件与大多数关系数据库事务日志文件不同.
如果由于某个原因而丢失了数据库文件,则会失去数据库(除非丢失的是日志文件).
但是,如果有合适的备份,则可以重新装载数据库.
截断事务日志随时间推移,事务日志可能会占用大量磁盘空间.
请定期截断日志以节省磁盘空间.
何时截断日志应当由支持SybaseIQ系统的DBA负责,并取决于日志文件的增长情况和在现场的操作过程.
另请参见消息日志(第19页)截断停止的数据库的事务日志(第18页)截断停止的数据库的事务日志使用–m启动开关可以截断事务日志.
–m服务器仅用于启动SybaseIQ以执行事务日志截断.
不要永久设置–m开关.
如何执行该操作由DBA负责,但以下过程提供了一个建议.
1.
以一个将文件标识为日志截断配置设置的名称,创建服务器开关.
cfg文件的副本,并编辑此文件副本以添加–m开关.
2.
用包含–m选项的配置文件启动SybaseIQ.
请注意,这时不允许有任何用户访问或事务发生.
3.
关闭SybaseIQ,并使用未设置–m选项的配置文件重新启动.
管理系统资源18SybaseIQ另请参见截断事务日志(第18页)消息日志(第19页)消息日志限制消息日志大小以节省磁盘空间.
SybaseIQ会在消息日志文件中记录所有消息,包括错误、状态和插入通知消息.
可以在LOAD和INSERT语句中使用参数关闭通知消息.
在某些站点上,由于插入次数、LOAD选项和低NOTIFY_MODULUS数据库选项设置或某些其它条件,消息日志文件常常会迅速增长.
SybaseIQ允许您回卷消息日志或设置最大文件大小以及在活动SybaseIQ消息日志已满时存档日志文件,从而限制此文件的大小.
有关设置最大日志文件大小、存档消息日志文件以及启用消息日志回卷的信息,请参见《系统管理指南第一卷》>"SybaseIQ系统管理概述"中的"消息记录".
另请参见截断事务日志(第18页)截断停止的数据库的事务日志(第18页)用于调优资源使用的选项调优资源以更快执行查询.
限制并发查询设置-iqgovern开关可以指定特定服务器上的并发查询数量.
这与连接数不同,连接数是由许可证控制的.
-iqgovern存在一个最佳值,可提供并发查询访问的准确数量以实现最佳的吞吐量.
如果-iqgovern设置高于此阈值,则会出现争用或资源匮乏的情况,从而减缓所有请求.
通过指定-iqgovern开关,您可以帮助SybaseIQ优化将缓冲区数据分页调度到磁盘上,避免过量使用内存.
-iqgovern的缺省值是(2xCPU数)+10.
您可能需要试验确定理想值.
对于使用大量活动连接的站点,请尝试将-iqgovern设置得略低些.
另请参见设置可用CPU数(第20页)限制查询使用的临时数据库空间(第20页)限制按行返回的查询(第21页)强制游标为非滚动游标(第21页)限制游标数(第22页)限制语句数(第23页)管理系统资源性能和调优指南19预取高速缓存页(第23页)针对典型使用进行优化(第24页)控制预取行数(第24页)设置可用CPU数设置-iqnumbercpus启动开关可以指定可用CPU数.
此参数会出于资源规划目的覆盖实际的CPU数目.
仅在以下情况下建议使用-iqnumbercpus开关:在配有IntelCPU且已启用超线程的计算机上,可将-iqnumbercpus设置为实际核数在已使用操作系统实用程序将SybaseIQ限制为仅可使用其内CPU子集的计算机上请参见《系统管理指南第一卷》>"运行SybaseIQ"中的"设置CPU数".
另请参见限制并发查询(第19页)限制查询使用的临时数据库空间(第20页)限制按行返回的查询(第21页)强制游标为非滚动游标(第21页)限制游标数(第22页)限制语句数(第23页)预取高速缓存页(第23页)针对典型使用进行优化(第24页)控制预取行数(第24页)限制查询使用的临时数据库空间设置QUERY_TEMP_SPACE_LIMIT可以指定拒绝查询前临时空间的最大估计量.
如果查询的估计临时空间使用量超出指定大小,则QUERY_TEMP_SPACE_LIMIT选项将导致查询被拒绝.
缺省情况下,对查询使用的临时存储没有限制.
SybaseIQ会估计完成该查询所需的临时空间.
如果估计值超过当前QUERY_TEMP_SPACE_LIMIT设置,SybaseIQ将返回错误:Queryrejectedbecauseitexceedstotalspaceresourcelimit如果此选项设置为0(缺省值),则表示没有限制,并且没有任何查询基于其临时空间需求被拒绝.
若要限制每个连接的实际临时存储使用情况,请为所有DML语句设置MAX_TEMP_SPACE_PER_CONNECTION选项,包括查询.
MAX_TEMP_SPACE_PER_CONNECTION监控和限制语句的实际运行时临时存储使用管理系统资源20SybaseIQ情况.
如果连接超过MAX_TEMP_SPACE_PER_CONNECTION选项设置的限额,则系统会返回错误,当前语句将回退.
另请参见限制并发查询(第19页)设置可用CPU数(第20页)限制按行返回的查询(第21页)强制游标为非滚动游标(第21页)限制游标数(第22页)限制语句数(第23页)预取高速缓存页(第23页)针对典型使用进行优化(第24页)控制预取行数(第24页)限制按行返回的查询设置QUERY_ROWS_RETURNED_LIMIT选项的值可以防止优化程序拒绝具有大结果集的查询.
QUERY_ROWS_RETURNED_LIMIT选项告诉查询优化程序拒绝可能消耗太多资源的查询.
如果查询优化程序估计来自查询的结果集将超过此选项的值,则它会拒绝该查询,并返回消息:Queryrejectedbecauseitexceedresource:Query_Rows_Returned_Limit如果使用此选项,则设置它,以便它仅拒绝消耗大量资源的查询.
另请参见限制并发查询(第19页)设置可用CPU数(第20页)限制查询使用的临时数据库空间(第20页)强制游标为非滚动游标(第21页)限制游标数(第22页)限制语句数(第23页)预取高速缓存页(第23页)针对典型使用进行优化(第24页)控制预取行数(第24页)强制游标为非滚动游标消除返回很大结果集的查询中的临时存储节点以提高性能.
使用没有声明宿主变量的滚动游标时,SybaseIQ将创建临时存储节点,用于缓冲查询结果.
此存储与临时存储缓冲区高速缓存分隔开.
通过临时存储节点,可以在应用程序搜索结果集时有效向前和向后滚动.
管理系统资源性能和调优指南21然而,如果查询返回很多(数百万)行输出,并且如果您的应用程序主要执行向前滚动操作,则临时存储节点的内存要求可能会降低查询性能.
若要提高性能,请通过发出以下命令消除临时存储节点:SETTEMPORARYOPTIONFORCE_NO_SCROLL_CURSORS='ON'注意:如果您的应用程序通常执行向后滚动,则将FORCE_NO_SCROLL_CURSORS选项设置为ON实际上可能会降低查询性能,因为如果不存在临时高速缓存,系统将强制SybaseIQ对每个向后滚动重新执行查询.
如果您的应用程序很少执行向后滚动,请将FORCE_NO_SCROLL_CURSORS='ON'作为永久PUBLIC选项.
它将使用更少内存,并提高查询性能.
另请参见限制并发查询(第19页)设置可用CPU数(第20页)限制查询使用的临时数据库空间(第20页)限制按行返回的查询(第21页)限制游标数(第22页)限制语句数(第23页)预取高速缓存页(第23页)针对典型使用进行优化(第24页)控制预取行数(第24页)限制游标数设置MAX_CURSOR_COUNT选项可以防止单个连接占用过多的可用内存或CPU资源.
MAX_CURSOR_COUNT选项限制连接一次可以使用的最大游标数.
缺省值为50.
如果将此选项设置为0,则允许无限数目的游标.
另请参见限制并发查询(第19页)设置可用CPU数(第20页)限制查询使用的临时数据库空间(第20页)限制按行返回的查询(第21页)强制游标为非滚动游标(第21页)限制语句数(第23页)预取高速缓存页(第23页)针对典型使用进行优化(第24页)控制预取行数(第24页)管理系统资源22SybaseIQ限制语句数设置MAX_STATEMENT_COUNT选项可以限制连接可以使用的预准备语句数.
MAX_STATEMENT_COUNT选项限制连接一次可以使用的最大预准备语句数.
如果服务器在任一时间对任一连接需要支持的预准备语句数超过缺省值(50),则您可以将MAX_STATEMENT_COUNT选项设置为更高的值.
另请参见限制并发查询(第19页)设置可用CPU数(第20页)限制查询使用的临时数据库空间(第20页)限制按行返回的查询(第21页)强制游标为非滚动游标(第21页)限制游标数(第22页)预取高速缓存页(第23页)针对典型使用进行优化(第24页)控制预取行数(第24页)预取高速缓存页设置BT_PREFETCH_MAX_MISS选项可以控制预取内存行为.
BT_PREFETCH_MAX_MISS选项可以确定是否继续为给定查询预取页.
如果使用HG索引的查询的运行速度比预期慢很多,请尝试逐步增大此选项的值.
另请参见限制并发查询(第19页)设置可用CPU数(第20页)限制查询使用的临时数据库空间(第20页)限制按行返回的查询(第21页)强制游标为非滚动游标(第21页)限制游标数(第22页)限制语句数(第23页)针对典型使用进行优化(第24页)控制预取行数(第24页)管理系统资源性能和调优指南23针对典型使用进行优化设置USER_RESOURCE_RESERVATION选项可以调整用于当前用户数的内存使用量.
SybaseIQ可跟踪打开的游标数,并相应地分配内存.
在某些环境中,可以设置USER_RESOURCE_RESERVATION选项,以调整SybaseIQ认为当前正在使用该产品的当前最少游标数,并因此更节省地从临时高速缓存分配内存.
应当仅在仔细的分析显示实际需要它之后,才设置此选项.
如果需要设置此选项,请与Sybase技术支持部门联系,以了解详细信息.
另请参见限制并发查询(第19页)设置可用CPU数(第20页)限制查询使用的临时数据库空间(第20页)限制按行返回的查询(第21页)强制游标为非滚动游标(第21页)限制游标数(第22页)限制语句数(第23页)预取高速缓存页(第23页)控制预取行数(第24页)控制预取行数设置PrefetchRows和PrefetchBuffer参数可以在特定条件下提高游标性能.
这是客户端选项,您可以在ODBC连接对话框或.
odbc.
ini文件中对其进行设置.
预取可以提高仅提取relative1或relative0的游标的性能.
两个连接参数允许您更改游标预取缺省值.
PrefetchRows(PROWS)可以设置预取行数;PrefetchBuffer(PBUF)可以设置此连接可用来存储预取行的内存.
在某些情况下,增加预取的行数有可能提高性能:应用程序较少使用绝对读取来读取许多行(几百或更多).
应用程序以高速率提取行,客户端和服务器位于同一台计算机上或通过快速网络连接.
客户端/服务器通信是通过速度较慢的网络(如拨号链接或广域网)进行的.
另请参见限制并发查询(第19页)设置可用CPU数(第20页)限制查询使用的临时数据库空间(第20页)限制按行返回的查询(第21页)强制游标为非滚动游标(第21页)管理系统资源24SybaseIQ限制游标数(第22页)限制语句数(第23页)预取高速缓存页(第23页)针对典型使用进行优化(第24页)改进资源使用的其它方式可以通过多种方式调整系统以获得最高性能或更好利用磁盘空间.
管理Multiplex数据库中的磁盘空间让用户定期提交其当前事务,并允许写入服务器删除旧的表版本以释放磁盘块.
指定auto_commit选项有助于最大程度地减少版本增量,从而最大程度地减少空间.
由于任何服务器上的任何用户都可能处在可能需要旧版表的事务中,所以SybaseIQ不能删除这些旧版表.
在Multiplex数据库中同时发生表更新和查询时,SybaseIQ可能因此消耗非常多的磁盘空间.
所消耗的空间数量取决于数据和索引的性质以及更新率.
通过允许写入服务器删除查询不再需要的过时版本,可以释放磁盘块.
所有服务器上的所有用户都应当定期提交其当前事务,以允许恢复旧版表.
服务器可能始终正常工作,并完全可用.
sp_iqversionuse存储过程可用于显示远程服务器的版本使用情况.
另请参见查询服务器间的负载平衡(第25页)限制数据库访问安排在需求较低时进行更新以提高查询性能.
磁盘高速缓存保持大量内存处于活动备用状态,从而使对真实内存的需求与对磁盘数据的需求保持平衡.
使用逻辑服务器管理Multiplex资源逻辑服务器让您能够最有效地管理Multiplex资源的使用.
使用逻辑服务器可将几组不同的Multiplex服务器分配到不同应用程序,以满足它们各自的性能要求.
在Multiplex中,每个连接都在单个逻辑服务器环境下运行.
当您将查询提交到Multiplex服务器时,其执行可能分布到一个或多个Multiplex服务器,具体取决于连接的逻辑服务器的配置.
若要动态调整分配给逻辑服务器的资源,请从逻辑服务器添加或删除Multiplex服务器,以满足它所服务的应用程序的不断变化的需求.
查询服务器间的负载平衡要使用IQ网络客户端在Multiplex查询服务器间平衡查询负载,需要一个能够将客户端连接调度到池内计算机的中间系统.
要使用此方法,请通过使用此中间负载平衡系统的IP地址和端口号、常规服务器名称以及设置为NO的VerifyServerName连接参数,在客户端系统上创建特殊ODBC管理系统资源性能和调优指南25DSN.
当客户端使用此DSN进行连接时,负载平衡器将与它确认的有最低负载的计算机建立连接.
有关如何定义在查询服务器负载平衡中使用的ODBCDSN的详细信息,请参见《系统管理指南第一卷》>"连接和通信参数"中的"VerifyServerName参数[Verify]".
注意:需要使用第三方软件.
VerifyServerName只允许使用此方法.
另请参见管理Multiplex数据库中的磁盘空间(第25页)限制数据库访问安排在需求较低时进行更新以提高查询性能.
磁盘高速缓存保持大量内存处于活动备用状态,从而使对真实内存的需求与对磁盘数据的需求保持平衡.
管理数据库大小和结构数据库大小在很大程度上取决于索引和数据量.
创建索引有利于更快进行查询.
删除不需要的对象可以释放磁盘空间并缩短装载时间.
索引碎片当索引页未被使用到最大量时,就会出现内部索引碎片.
当删除行时,会出现行碎片.
删除行的整个页可以释放该页,但如果页上的某些行是未使用的,则未使用的空间会留在磁盘上.
对表执行的DML操作(INSERT、UPDATE、DELETE)可能导致索引碎片.
运行以下存储过程可以了解有关碎片问题的信息:sp_iqrowdensity报告FP索引级别的行碎片.
请参见《参考:构件块、表和过程》的"系统过程"中的"sp_iqrowdensity过程".
sp_iqindexfragmentation报告在补充索引中的内部碎片.
请参见《参考:构件块、表和过程》>"系统过程"中的"sp_iqindexfragmentation过程".
查看输出并决定是要重新创建索引、重组索引还是要重新生成索引.
可以创建其它索引,以补充FP索引.
最大程度地减少目录文件增长目录文件的增长是正常情况,它根据应用程序和目录内容不同而各不相同.
.
db文件的大小对性能没有影响,并且系统会根据需要重用.
db文件中的可用页.
最大程度地减少Catalog文件增长:避免对CREATETABLE语句使用INSYSTEM运行系统存储过程之后发出COMMIT语句在长时间运行的事务期间发出COMMIT语句管理系统资源26SybaseIQ网络性能环境中的微小更改可以解决某些网络性能问题.
要提高网络吞吐量,请提供多个网络适配器.
根据服务级别协议,可以将各类用户分配到不同的网络.
在图12-4的示例A中,访问两个不同数据库服务器的客户端使用一个网卡.
也就是,访问服务器A和B的客户端必须争用网络并通过该网卡.
在示例B中,访问服务器A的客户端使用的网卡与访问服务器B的客户端使用的网卡不同.
将数据库服务器放在不同计算机上甚至会更好.
还可以将不同数据库的高负荷用户放在不同计算机上.
图1:隔离重网络负荷用户将少量数据放在较小包中如果通过网络发送少量数据,请保持缺省网络包大小较小(缺省值为512字).
-p服务器启动选项允许您指定最大包大小.
客户端应用程序还可能允许您设置包大小.
管理系统资源性能和调优指南27将大量数据放在较大包中如果大多数应用程序发送和接收大量数据,请增加缺省网络包大小.
这将导致更少(但更大)的传输.
在服务器级处理在服务器级过滤尽可能多的数据.
另请参见性能注意事项(第3页)优化内存使用(第5页)进程线程模型(第14页)平衡I/O(第15页)用于调优资源使用的选项(第19页)改进资源使用的其它方式(第25页)索引提示(第34页)管理数据库大小和结构(第26页)可用来实现更快装载的UNIONALL视图(第46页)管理系统资源28SybaseIQ监控和调优性能介绍用于确定系统是否正在很好地利用可用资源的工具.
使用存储过程获取信息几个存储过程可以显示数据库信息.
表3.
名称统计信息名称描述sp_iqconnection显示有关连接和版本的信息,包括哪些用户使用临时数据库空间、哪些用户使用这些版本、连接在SybaseIQ中做什么、连接状态、数据库版本状态等等.
请参见《参考:构件块、表和过程》>"系统过程">"系统存储过程">"sp_iqconnection过程"sp_iqcontext按照连接跟踪和显示有关当前执行的语句的信息.
请参见《构件块、表和过程》>"系统过程">"系统存储过程">"sp_iqcontext过程"sp_iqcheckdb检查当前数据库的有效性.
(可选)更正dbspace或数据库的分配问题.
请参见《构件块、表和过程》>"系统过程">"系统存储过程">"sp_iqcheckdb过程"sp_iqdbstatistics报告最近一次执行sp_iqcheckdb的结果.
请参见《构件块、表和过程》>"系统过程">"系统存储过程">"sp_iqdbstatistics过程"sp_iqdbsize显示当前数据库的大小.
请参见《构件块、表和过程》>"系统过程">"系统存储过程">"sp_iqdbsize过程"sp_iqspaceinfo显示数据库中每个对象的空间使用情况请参见《构件块、表和过程》>"系统过程">"系统存储过程">"sp_iqspaceinfo过程"sp_iqstatus显示有关数据库的杂项状态信息.
请参见《构件块、表和过程》>"系统过程">"系统存储过程">"sp_iqstatus过程"监控和调优性能性能和调优指南29名称描述sp_iqtablesize显示当前数据库中每个对象使用的块数和对象所在的dbspace的名称.
请参见《构件块、表和过程》>"系统过程">"系统存储过程">"sp_iqtablesize过程"有关所有SybaseIQ存储过程的语法详细信息和示例,请参见《参考:构件块、表和过程》.
分析数据库过程过程分析可以跟踪过程、触发器和其它系统事件的执行时间.
使用SybaseCentral中的分析可以确定数据库或数据库对象的性能问题.
查看过程分析统计信息设置SybaseCentral中的数据库分析选项可以监控存储过程、函数、事件和触发器的执行时间.
数据库分析信息属性表4.
数据库分析信息属性.
属性名称描述名称列出对象的名称.
所有者列出对象的所有者.
表列出触发器属于哪个表(此列仅出现在数据库"分析"选项卡上).
事件显示系统触发器的触发器类型.
可以是Update或Delete.
类型列出对象的类型,例如,过程.
执行次数列出每个对象已被调用的次数.
毫秒数列出各个对象的总执行时间.
监控和调优性能30SybaseIQ数据库对象分析信息数据库对象包括存储过程、函数、事件和触发器.
数据库对象分析信息属性逐行显示并汇总执行时间.
表5.
对象分析信息属性.
属性名称描述调用次数列出对象已被调用的次数.
毫秒列出各个对象的总执行时间.
行号列出每个过程行旁边的行号.
源逐行显示SQL过程.
在SybaseCentral中设置数据库分析属性在SybaseCentral中设置数据库分析属性需要DBA权限.
您的服务器必须正在运行,而且您必须连接到数据库.
1.
在SybaseCentral中,右键单击数据库,然后选择"属性".
2.
单击"分析设置"选项卡.
3.
有关其它分析选项,请参见联机帮助.
查看某一类数据库对象的分析信息若要在SybaseCentral中显示有关某一类数据库对象的分析信息,请单击父文件夹,然后查看对象的分析信息.
1.
打开对象文件夹:过程和函数事件触发器系统触发器2.
单击右窗格中的"分析"选项卡.
有关该对象的分析信息随即出现在右窗格中的"分析"选项卡上.
查看特定数据库对象的分析信息若要在SybaseCentral中显示有关特定数据库对象的分析信息,请选择对象,然后查看对象的分析信息.
1.
打开对象文件夹:过程和函数监控和调优性能性能和调优指南31事件触发器系统触发器2.
单击父文件夹中的对象.
3.
单击右窗格中的"分析"选项卡.
有关该对象的分析信息随即出现在右窗格中的"分析"选项卡上.
过程分析统计信息设置数据库分析选项,然后使用分析选项来返回存储过程、函数、事件和触发器的性能统计信息.
sa_procedure_profile_summarysa_procedure_profile_summary是一个系统过程,可以报告已经在数据库中执行的所有过程、函数、事件或触发器的执行时间的摘要信息.
此过程为这些对象提供的信息与SybaseCentral中"分析"选项卡上的信息相同.
表6.
sa_procedure_profile_summary统计信息列名描述object_type确定对象类型:P(存储过程)F(函数)T(触发器)E(事件)S(系统触发器)object_name列出对象的名称.
executions列出每个对象已被调用的次数.
owner_name列出对象的所有者.
table_name指定要分析触发器的表.
executions列出对象已被调用的次数.
Milliseconds确定该行的执行时间(以毫秒为单位).
foreign_owner确定拥有系统触发器外表的数据库用户.
foreign_table确定系统触发器外表的名称.
监控和调优性能32SybaseIQ过程分析信息sa_procedure_profile报告数据库中执行的过程、函数、事件或触发器中每一行的执行时间信息.
表7.
sa_procedure_profile统计信息列名描述object_type确定对象类型:P(存储过程)F(函数)T(触发器)E(事件)S(系统触发器)object_name列出对象的名称.
owner_name列出对象的所有者.
table_name确定与触发器关联的表(对于其它对象类型,该值为空值).
Line_number确定过程中的行号.
executions列出对象已被调用的次数.
Milliseconds列出对象的执行时间.
percentage确定特定行所需要的总执行时间的百分比.
foreign_owner确定拥有系统触发器外表的数据库用户.
foreign_table确定系统触发器外表的名称.
使用InteractiveSQL设置数据库分析选项使用sa_server_option可以设置InteractiveSQL中的数据库分析选项.
您的服务器必须正在运行,而且您必须具有DBA权限并连接到数据库.
在InteractiveSQL中,运行sa_server_option,然后设置procedure_profiling选项.
例如:CALLsa_server_option('procedure_profiling','ON')有关其它选项,请参见"SQLAnywhereServer-SQL参考">"系统过程">"按字母顺序排列的系统过程列表">"sa_server_option系统过程".
注意:此参考指向SQLAnywhere文档.
监控和调优性能性能和调优指南33使用InteractiveSQL生成分析信息sa_procedure_profile和sa_procedure_profile_summary可以生成过程、函数、事件和触发器的执行统计信息.
在InteractiveSQL中,运行sa_procedure_profile或sa_procedure_profilesummary.
例如:CALLsa_server_option('procedure_profiling','ON')有关其它选项,请参见"SQLAnywhereServer-SQL参考".
注意:此参考指向SQLAnywhere文档.
数据模型推荐良好的数据库性能从良好的数据库设计开始.
在开发时,请花些时间在您的模式中加入SybaseIQ独特的设计功能,以便缩短响应时间并加快返回查询结果的速度.
索引提示选择正确的列索引类型,以加快查询运行速度.
SybaseIQ自动提供某些索引(在所有列上用于优化投影的索引,以及用于UNIQUE、PRIMARYKEYS和FOREIGNKEYS的HG索引).
虽然这些索引对某些用途来说非常有用,但您可能需要其它索引以尽快处理特定查询.
索引顾问索引顾问可以在查询中生成优化器何时会从一个或多个列的其它索引中受益的消息.
要激活索引顾问,请将INDEX_ADVISOR选项设置为ON.
如果不启用查询计划,则消息作为查询计划的一部分或作为单独消息显示在消息日志(.
iqmsg)中,并且输出采用OWNER.
TABLE.
COLUMN格式.
有关详细信息,请参见《参考:语句和选项》的"数据库选项"中的"INDEX_ADVISOR选项".
LF或HG索引如果列未使用枚举FP存储,则应考虑对连接查询中的WHERE子句引用的分组列创建一个LF或HG索引.
SybaseIQ优化程序可能需要枚举FP或HG/LF索引中的元数据以生成最佳查询计划.
HAVING子句中引用的非集合列也可能从LF或HG索引中受益以帮助优化查询.
例如:SELECTc.
name,SUM(l.
price*(1-l.
discount))FROMcustomerc,orderso,lineitemlWHEREc.
custkey=o.
custkeyANDo.
orderkey=l.
orderkeyANDo.
orderdate>="1994-01-01"ANDo.
orderdate0.
50ORDERBY2desc添加索引会增加存储要求和装载时间.
只有在对查询性能有益的情况下,才应添加索引.
另请参见使用索引的时间和位置(第35页)简单索引选择标准(第36页)HG索引装载(第37页)多列索引(第38页)使用索引的时间和位置索引是SybaseIQ中的主要调优机制.
知道何时以及在何处使用索引可加快查询运行速度.
在以下列中始终使用索引:连接列(与基数无关的HG索引)可搜索列(基于基数的HG或LF索引)DATE、TIME和DATETIME/TIMESTAMP列(DATE、TIME、DTTM)根据数据基数,DATE、TIME或DATETIME/TIMESTAMP列还应具有LF或HG索引.
如果您不确定是否会大量使用该列,请在该列放置LF或HG索引.
随后,可启用负载管理来监控索引的使用情况.
在必要的情况下,请使用PRIMARYKEY、UNIQUECONSTRAINT或UNIQUEHG索引,因为它们可以为IQ提供有关索引列中独特数据的更多信息.
带有HNG或CMP索引的列应具有对应的LF或HG索引对于仅向客户端(投影)返回数据的列,无需使用索引另请参见HG索引装载(第37页)适当确定数据类型的大小(第41页)IQUNIQUE和MINIMIZE_STORAGE(第42页)空值(第42页)无符号数据类型(第43页)LONGVARCHAR和LONGVARBINARY(第43页)简单索引选择标准(第36页)多列索引(第38页)连接列(第39页)主键(第40页)外键(第40页)监控和调优性能性能和调优指南35临时表(第45页)简单索引选择标准一些简单问题的解答,可帮助您为列选择正确的索引.
要确定数据模型的最佳索引,而不考虑查询,请针对每列询问自己以下简单问题:基数是否大于1500-2000如果答案为是,请在此列放置HG索引.
如果为否,请在该列放置LF索引.
该列是否包含DATE、TIME、DATETIME或TIMESTAMP数据如果答案为是,请在此列放置DATE、TIME或DTTM索引.
还应在该列放置LF或HG.
该列是否将用于范围搜索或集合如果答案为是,请在该列放置HNG索引.
还应在该列放置LF或HG.
如果集合包含多个列,则HNG可能不合适.
大多数情况下,无需使用HNG索引,因为LF或HG索引具有足够的能力来执行集合.
这不适用于DATE、TIME,或DATETIME类型.
此列是否用于单词搜索如果答案为是,请在该列放置WD索引.
无需LF或HG索引,它们将占用大量空间.
此列是否用于全文本搜索如果答案为是,请在该列放置TEXT索引.
无需LF或HG,它们将占用大量空间.
同一表中的两列是否会相互比较(A=B,AB,A+B)如果答案为是,请在这两列中放置CMP索引.
此列或这组列是否用于GROUPBY或ORDERBY语句如果答案为是,请在GROUPBY或ORDERBY语句中的列放置HG索引.
每列还应具有对应的HG或LF索引.
此列是否是多列主键、约束或索引的一部分如果答案为是,请在该多列索引中的每列放置HG或LF索引.
另请参见HG索引装载(第37页)适当确定数据类型的大小(第41页)IQUNIQUE和MINIMIZE_STORAGE(第42页)空值(第42页)无符号数据类型(第43页)LONGVARCHAR和LONGVARBINARY(第43页)大对象存储(第44页)使用索引的时间和位置(第35页)多列索引(第38页)监控和调优性能36SybaseIQ连接列(第39页)主键(第40页)外键(第40页)临时表(第45页)HG索引装载相对于其它IQ索引,HG索引在数据装载和删除期间的维护费用更高.
HG索引对性能的主要贡献是数据在HG索引结构中的位置:操作稀疏或密集.
密集HG操作是指受影响的行围绕某些键紧密组合的操作.
稀疏操作是指每个键只会影响到少数几行的操作.
例如,数据日期通常围绕操作记录时间、数据修改时间等进行组合.
这意味着新数据将放在HG索引结构的末尾.
在删除日期HG索引中的数据时,所述数据通常以包含日、周、月等信息的块截断,然后从HGB树的开头去除或围绕删除的若干键紧密组合.
相对而言,这些操作非常快,因为IQ将针对几页操作并影响大量的行.
稀疏的数据(例如价格、客户ID、城市、国家/地区等)则极为不同.
例如,在装载"价格"数据时,每个值都与索引中已存在的所有数据大不相同.
如果列正在跟踪数值字段要存储的股票价格,该数据将会密集更新,因为变化的数据几乎跨越已装载的值的整个范围.
这些操作较为缓慢,因为针对受影响的每行必须保留的索引页非常多.
最坏的情况是,系统强迫IQ为要装载或删除的EACHROW写入1页.
尽管这样小于最佳状态,但SybaseIQ设计需要并行处理HG索引装载和删除的第2阶段,以便大大降低影响.
所有一切都非常好,但它对数据模型设计和索引会有什么影响呢SybaseIQ中常见的调优和优化通常归结为索引或缺少索引.
在决定使用和去除哪些索引时,了解数据和装载对这些索引的影响,是非常重要的一个方面.
由于相对而言,HG索引的装载时间比其它索引要长,因此在使用和设计时,它们通常是关注的重点.
当然,HG索引有助于提高查询性能.
但是,有些时候,添加索引可能对查询具有一些积极的影响,但对数据装载却造成更多影响.
在这些情况下,了解为什么装载或删除花费较长时间以及对此可执行哪些操作非常重要.
针对当前装载数据的新数据稀疏或密集在此具有重要的作用.
如果必须对客户ID相对随机的列建立索引,以便提高查询性能,则该列中必须存在一个索引.
不过,假设表中存在主键,该主键为客户ID和用于存储事务日期时间的"日期"字段.
如果顺序为(customer_id、transaction_date),则大多数情况下,系统将向表中稀疏地装载数据或从中删除数据.
这样,要装载的数据将按事务日期进行装载.
但由于"客户ID"列在多列索引中是第一列,因此它将强迫IQ在整个HG索引结构中接触数据.
简单更改顺序(transaction_date、customer_id)即可更改此行为.
系统将仍然使用该索引来控制主键的参照完整性.
列的顺序对于主键强制实施没有多大关系.
因此,我们可以更改列顺序,而不会对下游造成任何不利影响.
现在,这种简单的更改会强制按事务日期进行装载的所有新数据,以非常密集的方式插入到HG索监控和调优性能性能和调优指南37引结构的末尾.
随时间推移,装载执行将会保持一致,因为数据通常始终放到HG结构的末尾.
只更改多列索引中的列顺序可能对性能造成严重的影响.
HG索引的大小不会发生很大变化,因为无论顺序如何,数据宽度始终都相同.
会发生变化的将是向表装载数据或从中删除数据的速度.
另请参见适当确定数据类型的大小(第41页)IQUNIQUE和MINIMIZE_STORAGE(第42页)空值(第42页)无符号数据类型(第43页)LONGVARCHAR和LONGVARBINARY(第43页)大对象存储(第44页)使用索引的时间和位置(第35页)简单索引选择标准(第36页)多列索引(第38页)连接列(第39页)主键(第40页)外键(第40页)临时表(第45页)多列索引当前,只有HG、UNIQUEHG、UNIQUECONSTRAINT和PRIMARYKEY索引在索引创建中支持多列,但多列索引对于GROUPBY和ORDERBY语句也非常有用.
从统计信息角度来看,多列索引能够在多列表连接中提供足够的信息,使优化程序知道连接的确切统计信息以及它是多对多连接还是一对多连接.
此外,优化程序还具有较高的智能,可以使用统计信息进行优化,而将单独的HG/LF索引用于实际工作.
优化程序会计算所有连接和排序情形的开销,并确定最适合该操作的索引.
统计信息可帮助完成该任务.
关于HG索引,需要注意以下项目:HG插入在SybaseIQ中开销最大尽量确保在索引末尾进行插入在索引列表开头放置一般增量数据,例如事务日期或批处理号码(顺序数据).
尽力确保顺序键的事物请参见HG索引装载的前一部分.
另请参见HG索引装载(第37页)监控和调优性能38SybaseIQ适当确定数据类型的大小(第41页)IQUNIQUE和MINIMIZE_STORAGE(第42页)空值(第42页)无符号数据类型(第43页)LONGVARCHAR和LONGVARBINARY(第43页)大对象存储(第44页)使用索引的时间和位置(第35页)简单索引选择标准(第36页)连接列(第39页)主键(第40页)外键(第40页)临时表(第45页)连接列对于连接,请尽量缩小数据类型,以降低磁盘I/O和内存需求.
由于整数压缩比字符压缩要快,因此请在连接中使用整数数据类型(如果可以,请使用无符号类型).
尽量缩小数据类型可降低磁盘I/O和内存需求,从而提高连接性能.
从连接角度来看,由于HG索引稍微拥有更多的功能,因此请在连接列中使用HG索引,而非基数适当的索引(LF或HG).
这种情况需要进行权衡,相对于LF索引,HG索引的装载时间可能会增加.
另请参见HG索引装载(第37页)适当确定数据类型的大小(第41页)IQUNIQUE和MINIMIZE_STORAGE(第42页)空值(第42页)无符号数据类型(第43页)LONGVARCHAR和LONGVARBINARY(第43页)大对象存储(第44页)使用索引的时间和位置(第35页)简单索引选择标准(第36页)多列索引(第38页)主键(第40页)外键(第40页)临时表(第45页)监控和调优性能性能和调优指南39主键多列主键应在主键中指定的每列放置额外的LF或HG索引.
此操作必须手动执行,因为IQ只在组合列上创建HG索引.
UNIQUEconstraint、UNIQUEHG和主键共享相同的结构.
该结构使用无G-Array的HG索引来存储行ID.
如果可以,请在表中使用主键.
这样,即使未使用该索引,也有助于优化程序更为明智地确定查询路径.
该索引结构提供详细的统计信息,可帮助优化程序作出更好的选择并提供遍历数据的结构.
另请参见HG索引装载(第37页)适当确定数据类型的大小(第41页)IQUNIQUE和MINIMIZE_STORAGE(第42页)空值(第42页)无符号数据类型(第43页)LONGVARCHAR和LONGVARBINARY(第43页)大对象存储(第44页)使用索引的时间和位置(第35页)简单索引选择标准(第36页)多列索引(第38页)连接列(第39页)外键(第40页)临时表(第45页)外键同主键一样,使用外键可以提高查询连接性能.
这使IQ包含更多有关表连接方式以及这些连接背后的统计信息的信息.
IQ将自动对外键列创建一个HG索引,因此无需额外的HG或LF索引.
外键要求被引用表中存在主键.
另请参见HG索引装载(第37页)适当确定数据类型的大小(第41页)IQUNIQUE和MINIMIZE_STORAGE(第42页)空值(第42页)无符号数据类型(第43页)LONGVARCHAR和LONGVARBINARY(第43页)大对象存储(第44页)使用索引的时间和位置(第35页)监控和调优性能40SybaseIQ简单索引选择标准(第36页)多列索引(第38页)连接列(第39页)主键(第40页)临时表(第45页)适当确定数据类型的大小尽可能准确地确定所有数据类型(特别是基于字符的数据类型)的大小.
要确定对某列使用哪种数据类型,请考虑以下因素:SybaseIQ包括大量od数据类型.
对应用程序使用正确的数据类型将使性能增益达到最佳.
如果无需HOUR、MINUTE和SECOND信息,请使用DATE,而不是DATETIME如果数据适合TINYINT或SMALLINT数据类型,请使用上述类型,不要使用INTEGER或BIGINT定义NUMERIC()或DECIMAL()时不要过多分配存储,否则对于无需该级别精确度的数据而言开销过高CHAR()和VARCHAR()类型在缺省平面FP索引中为固定宽度.
唯一不同之处在于,为每个代表所用字节数的VARCHAR()行添加了1字节.
SybaseIQ包括新的压缩算法,会对BINARY()、CHAR()、VARCHAR()和VARBINARY()数据类型中常见的大型重复模式进行压缩.
另请参见HG索引装载(第37页)IQUNIQUE和MINIMIZE_STORAGE(第42页)空值(第42页)无符号数据类型(第43页)LONGVARCHAR和LONGVARBINARY(第43页)大对象存储(第44页)使用索引的时间和位置(第35页)简单索引选择标准(第36页)多列索引(第38页)连接列(第39页)主键(第40页)外键(第40页)临时表(第45页)监控和调优性能性能和调优指南41IQUNIQUE和MINIMIZE_STORAGE使用IQUNIQUE和MINIMIZE_STORAGE可节省磁盘空间并提高性能.
在可能的情况下,使用IQUNIQUE和MINIMIZE_STORAGE有助于最大程度地减少缺省FP索引类型的存储用量.
缺省情况下,未通过这些选项启用最佳数据压缩,否则可能导致额外占用一些空间.
使用数据模型中的这些选项之一有助于尽可能地压缩数据,以获得最大的存储量和最高的性能.
另请参见HG索引装载(第37页)适当确定数据类型的大小(第41页)空值(第42页)无符号数据类型(第43页)LONGVARCHAR和LONGVARBINARY(第43页)大对象存储(第44页)使用索引的时间和位置(第35页)简单索引选择标准(第36页)多列索引(第38页)连接列(第39页)主键(第40页)外键(第40页)临时表(第45页)空值将列定义为NULL或NOTNULL有助于提高优化程序的工作效率.
指定NULL或NOTNULL,可通过获得有关数据特征的更多信息,允许优化程序对连接和搜索条件作出更为明智的决策.
NULL数据不会像其它数据库一样节省数据库页中的空间.
但是,由于IQ压缩算法和优化索引,NULL数据在磁盘上存储时将会进行压缩.
始终指定NULL或NOTNULLOpenClient和ODBC连接在创建表时拥有不同的缺省行为为优化程序提供有关连接和搜索参数数据特征的更多信息另请参见HG索引装载(第37页)适当确定数据类型的大小(第41页)IQUNIQUE和MINIMIZE_STORAGE(第42页)无符号数据类型(第43页)监控和调优性能42SybaseIQLONGVARCHAR和LONGVARBINARY(第43页)大对象存储(第44页)使用索引的时间和位置(第35页)简单索引选择标准(第36页)多列索引(第38页)连接列(第39页)主键(第40页)外键(第40页)临时表(第45页)无符号数据类型在某些情况下,使用无符号数据类型可避免符号比较,从而创建更快的查询.
在所有数据始终大于或等于零,而数据符号不太重要的情况下,请使用无符号数据类型.
没有符号的存储在进行列比较时,将不必执行符号比较.
这样可以提高性能,并在连接和搜索数据(特别是键列的数据)时减少一个步骤.
另请参见HG索引装载(第37页)适当确定数据类型的大小(第41页)IQUNIQUE和MINIMIZE_STORAGE(第42页)空值(第42页)LONGVARCHAR和LONGVARBINARY(第43页)大对象存储(第44页)使用索引的时间和位置(第35页)简单索引选择标准(第36页)多列索引(第38页)连接列(第39页)主键(第40页)外键(第40页)临时表(第45页)LONGVARCHAR和LONGVARBINARY使用VARCHAR()和VARBINARY()可以增加列存储,而不必使用大对象存储机制.
通常,开发人员和DBA认为VARBINARY()和VARCHAR()数据限制为255字节.
IQ支持的VARCHAR()和VARBINARY()宽度最大为32K(也称为LONGVARCHAR或LONGVARBINARY).
这样可以存储更多文本或二进制数据,而无需迁移到高度专用的BLOB/CLOB或IMAGE/TEXT数据类型等大对象存储机制.
监控和调优性能性能和调优指南43可用于存储中等数量的文本或二进制数据最大宽度为32K(对于VARBINARY()为64KASCII十六进制数据)WORD和TEXT索引是VARCHAR()数据上唯一允许宽度大于255字节的索引存储将按256字节块进行分配257字节的字符串将需要512字节的存储空间511字节的字符串也将需要512字节的存储空间另请参见HG索引装载(第37页)适当确定数据类型的大小(第41页)IQUNIQUE和MINIMIZE_STORAGE(第42页)空值(第42页)无符号数据类型(第43页)大对象存储(第44页)使用索引的时间和位置(第35页)简单索引选择标准(第36页)多列索引(第38页)连接列(第39页)主键(第40页)外键(第40页)临时表(第45页)大对象存储对于需要32K以上存储的数据,请使用大对象数据类型.
大对象数据类型用于存储ASCII(TEXT/CLOB)和二进制(IMAGE/BLOB)数据.
每个BLOB/CLOB数据单元格将在一页或多页中存储假设页大小为128K如果数据为129K,则需要2页来存储信息如果数据为1K,则需要1页来存储数据在任一情况下,磁盘中都会将页压缩成块大小的倍数可用于存储二进制或基于文本的对象将长二进制数据类型的最大大小从6K扩展至无限大小TEXT索引是唯一的可变索引可利用TEXT索引及其搜索功能进行全部搜索返回对象大小的特殊函数(byte_length64)返回对象一部分(而非完整内容)的特殊函数(byte_substr64)使用BFILE()函数可将二进制对象的内容提取到单独的文件监控和调优性能44SybaseIQ另请参见HG索引装载(第37页)适当确定数据类型的大小(第41页)IQUNIQUE和MINIMIZE_STORAGE(第42页)空值(第42页)无符号数据类型(第43页)LONGVARCHAR和LONGVARBINARY(第43页)使用索引的时间和位置(第35页)简单索引选择标准(第36页)多列索引(第38页)连接列(第39页)主键(第40页)外键(第40页)临时表(第45页)临时表如果您希望数据在事务提交过程中保持原样,请在创建全局临时表或声明本地临时表时使用ONCOMMITPRESERVEROWS选项.
临时表有三种类型:#表CREATETABLEtemptable(col1int)本地临时表DECLARELOCALTEMPORARYTABLEtemptable(col1int)本地临时表的行为与#表相似全局临时表CREATEGLOBALTEMPORARYTABLEtabletemptable(col1int)全局临时表结构在连接和重新启动过程中为静态正常散列(#)表无需使用ONCOMMITPRESERVEROWS选项,因为散列表中的数据在事务提交过程中始终保持原样.
另请参见HG索引装载(第37页)适当确定数据类型的大小(第41页)IQUNIQUE和MINIMIZE_STORAGE(第42页)空值(第42页)无符号数据类型(第43页)LONGVARCHAR和LONGVARBINARY(第43页)监控和调优性能性能和调优指南45大对象存储(第44页)使用索引的时间和位置(第35页)简单索引选择标准(第36页)多列索引(第38页)连接列(第39页)主键(第40页)外键(第40页)非规范化以提高性能尽管非规范化数据库可以提高性能,但也存在一些风险和缺点.
风险非规范化只能在您全面了解应用程序时才能成功执行,并且仅当性能问题指示需要这样做时,才应当执行它.
请考虑使数据保持最新所需的工作量.
这是决策支持应用程序(它们经常需要大量数据的摘要)与事务处理需求(它们执行不连续的数据修改)的差异的良好示例.
非规范化通常以其它处理的开销来支持某些处理.
非规范化有潜在的数据完整性问题,必须仔细记录它们,并在应用程序设计中加以解决.
决定非规范化分析环境中应用程序的数据访问需求及其实际性能特征,包括:关键查询是什么,以及期望的响应时间是多少它们使用什么表或列每个访问有多少行常用排序顺序是什么并发预期是什么最常访问的表有多大任何进程都计算汇总吗可用来实现更快装载的UNIONALL视图UNIONALL视图可以在为表中的所有行保留次级索引代价过高的情况下提高装载性能.
SybaseIQ允许您将数据拆分至多个单独的基表中(例如,按日期).
数据将装载到这些较小的表中.
然后,通过UNIONALL视图,将表重新连接在一起,形成一个逻辑整体,之后可以对其执行查询.
此策略可以提高装载性能,但是可能会对一些类型的查询的性能产生负面影响.
针对单个基表或较小基表的UNIONALL视图执行的大多数类型的查询都具有大致相似的性能,只要视图定义满足所有约束.
然而,与针对单个大型基表执行相比,针对UNIONALL视图执行时,一些类型的查询的执行速度可能会显著降低,特别是那些监控和调优性能46SybaseIQ涉及DISTINCT或涉及多个连接列的连接的查询.
在选择使用此策略之前,请确定装载性能的提高是否值得以降低应用程序的查询性能为代价.
UNIONALL视图对管理员来说非常高效.
例如,如果数据按月分区,则通过删除表和正确更新UNIONALL视图定义,就可以删除整个月份的数据值.
您可以有年份、季度等的许多视图定义,而不必添加额外的日期范围谓词.
要创建UNIONALL视图,请选择可以将基表划分到多个单独物理表中的逻辑方式.
最常见的划分方式是按月划分.
例如,要创建包括第一季度的所有月份的视图,请输入:CREATEVIEWSELECT*JANUARYUNIONALLSELECT*FEBRUARYUNIONALLSELECT*MARCHUNIONALL在每个月,可以将数据装载到单个基表中(在此示例中为JANUARY、FEBRUARY或MARCH).
在下一月,则将数据装载到有相同列和相同索引类型的新表中.
有关语法的详细信息,请参见《参考:语句和选项》中的UNION操作.
注意:不能在UNIONALL视图中执行INSERT.
.
.
SELECT.
UNIONALL运算符在此版本中不是完全并行的.
使用这些运算符可能会限制查询并行度.
优化引用UNIONALL视图的查询若要调整引用UNIONALL视图的查询的性能,请设置JOIN_PREFERENCE选项,该选项影响UNIONALL视图之间的连接.
UNIONALL视图中的所有分区都必须有一组为工作优化定义的完整索引.
有DISTINCT查询在使用UNIONALL视图时通常运行速度比基表更慢.
SybaseIQ包括针对UNIONALL视图的优化技术,包括:在UNIONALL视图上拆分GROUPBY将连接下推到UNIONALL视图中仅当UNION满足以下所有约束时,才能将它视为分区表:它只包含一个或多个UNIONALL.
UNION的每个分支在其FROM子句中只有一个表,并且该表是物理基表.
UNION的任何分支都没有DISTINCT、RANK、集合函数或GROUPBY子句.
UNION的每个分支中的SELECT子句中的每一项都是一列.
在第一个UNION分支的SELECT列表中的列的数据类型序列与UNION的每个随后分支中的序列相同.
监控和调优性能性能和调优指南47另请参见管理UNIONALL视图性能(第48页)管理UNIONALL视图性能结构化查询,以便首先评估DISTINCT运算符,然后再执行ORDERBY,排序顺序为ASC.
当ORDERBY为DESC时,系统不会应用某些特定优化(例如将DISTINCT运算符推入UNIONALL视图),因为评估UNION下的DISTINCT的优化不适用于DESC顺序.
例如,下面的查询将对性能产生负面影响:SELECTDISTINCTstateFROMtestVUORDERBYstateDESC;要解决此性能问题,查询应先评估DISTINCT运算符,然后才能执行ORDERBY,在这种情况下,排序顺序为ASC,并且可应用优化:SELECTc.
stateFROM(SELECTDISTINCTstateFROMtestVUA)cORDERBYc.
stateDESC;另请参见优化引用UNIONALL视图的查询(第47页)监控性能统计信息使用SybaseCentral中的性能监视器可以显示Simplex和Multiplex服务器的统计信息.
统计信息实时显示在动态图表中.
注意:本节中的主题仅涵盖Simplex服务器.
有关Multiplex服务器,请参见《使用SybaseIQMultiplex》.
在服务器级监控性能使用SybaseCentral中的性能监视器可以监控Simplex或Multiplex服务器的统计信息.
1.
要启动性能监视器,请在SybaseCentral文件夹视图中单击服务器名.
2.
在右窗格中,单击"性能监视器"选项卡.
有关详细信息和选项,请参见SybaseIQ帮助中的"服务器">"监控性能".
另请参见内存使用统计信息(第49页)高速缓存统计信息(第49页)CPU使用率统计信息(第51页)线程统计信息(第51页)监控和调优性能48SybaseIQ连接统计信息(第52页)请求统计信息(第53页)事务统计信息(第53页)存储I/O统计信息(第54页)数据库空间使用情况统计信息(第55页)网络统计信息(第55页)内存使用统计信息内存使用统计信息显示服务器内存统计信息.
表8.
内存使用名称描述缺省情况下是否监控分配的内存由IQ服务器分配的内存(以兆字节计)是分配的最大内存由IQ服务器分配的最大内存(以兆字节计)否另请参见高速缓存统计信息(第49页)CPU使用率统计信息(第51页)线程统计信息(第51页)连接统计信息(第52页)请求统计信息(第53页)事务统计信息(第53页)存储I/O统计信息(第54页)数据库空间使用情况统计信息(第55页)网络统计信息(第55页)在服务器级监控性能(第48页)高速缓存统计信息高速缓存统计信息描述了高速缓存的使用情况.
表9.
高速缓存统计信息名称描述缺省情况下是否监控目录高速缓存命中数每秒目录高速缓存命中数.
否临时高速缓存命中数每秒临时高速缓存命中数.
否主高速缓存命中数每秒主高速缓存命中数.
否监控和调优性能性能和调优指南49名称描述缺省情况下是否监控目录高速缓存读取数每秒查找目录高速缓存页的次数.
是临时高速缓存读取数每秒查找临时高速缓存页的次数.
否主高速缓存读取数每秒的主高速缓存页查找次数.
否目录高速缓存当前大小当前目录高速缓存大小(以兆字节计).
否临时高速缓存当前大小当前临时高速缓存大小(以兆字节计).
否主高速缓存当前大小当前主高速缓存大小(以兆字节计).
否正在使用的目录高速缓存百分比正在使用的目录高速缓存百分比.
否正在使用的临时高速缓存百分比正在使用的临时高速缓存百分比.
否正在使用的主高速缓存百分比正在使用的主高速缓存百分比.
否已固定的目录高速缓存已固定的目录高速缓存页数.
否已固定的临时高速缓存已固定的临时高速缓存页数.
否已固定的主高速缓存已固定的主高速缓存页数.
否已固定的目录高速缓存百分比已固定的目录高速缓存的百分比.
否已固定的临时高速缓存百分比已固定的临时高速缓存的百分比.
否已固定的主高速缓存百分比已固定的主高速缓存百分比.
否目录高速缓存脏页百分比目录高速缓存脏页的百分比.
否临时高速缓存脏页百分比临时高速缓存脏页的百分比.
否主高速缓存脏页百分比主高速缓存脏页的百分比.
否另请参见CPU使用率统计信息(第51页)线程统计信息(第51页)连接统计信息(第52页)请求统计信息(第53页)事务统计信息(第53页)存储I/O统计信息(第54页)数据库空间使用情况统计信息(第55页)网络统计信息(第55页)在服务器级监控性能(第48页)监控和调优性能50SybaseIQCPU使用率统计信息CPU使用率统计信息显示占用的CPU资源的百分比.
表10.
CPU使用率名称描述缺省情况下是否监控CPU使用率IQ进程CPU使用百分比,包括系统和用户使用率.
是CPU系统使用率IQ进程CPU系统使用百分比.
否CPU用户使用率IQ进程CPU用户使用百分比.
否另请参见内存使用统计信息(第49页)高速缓存统计信息(第49页)线程统计信息(第51页)连接统计信息(第52页)请求统计信息(第53页)事务统计信息(第53页)存储I/O统计信息(第54页)数据库空间使用情况统计信息(第55页)网络统计信息(第55页)在服务器级监控性能(第48页)线程统计信息线程统计信息描述了线程的使用情况.
表11.
线程统计信息名称描述缺省情况下是否监控正在使用的IQ线程IQ服务器使用的线程数否可用IQ线程IQ服务器中可用的线程数否正在使用的SA线程数SQLAnywhere引擎使用的线程数.
否另请参见内存使用统计信息(第49页)高速缓存统计信息(第49页)CPU使用率统计信息(第51页)连接统计信息(第52页)监控和调优性能性能和调优指南51请求统计信息(第53页)事务统计信息(第53页)存储I/O统计信息(第54页)数据库空间使用情况统计信息(第55页)网络统计信息(第55页)在服务器级监控性能(第48页)连接统计信息连接统计信息显示连接活动.
表12.
连接统计信息名称描述缺省情况下是否监控连接总计连接总数包括用户和INC连接.
是用户连接数用户连接数.
否INC进来的连接数INC进来的连接数否INC外发的连接数INC外发的连接数否每分钟的用户连接数每分钟的用户连接数否每分钟断开的用户连接数每分钟断开的用户连接数否另请参见内存使用统计信息(第49页)高速缓存统计信息(第49页)CPU使用率统计信息(第51页)线程统计信息(第51页)请求统计信息(第53页)事务统计信息(第53页)存储I/O统计信息(第54页)数据库空间使用情况统计信息(第55页)网络统计信息(第55页)在服务器级监控性能(第48页)监控和调优性能52SybaseIQ请求统计信息请求统计信息描述了专用于响应来自客户端应用程序请求的活动.
表13.
请求统计信息名称描述缺省情况下是否监控请求为使服务器能够处理新请求或继续处理现有的请求每秒进入服务器的次数.
否未调度的请求当前排队等待可用服务器线程的请求的数量.
否IQ正在等待操作正在等待资源调控器的IQ操作数否IQ活动的操作活动的IQ操作数否另请参见内存使用统计信息(第49页)高速缓存统计信息(第49页)CPU使用率统计信息(第51页)线程统计信息(第51页)连接统计信息(第52页)事务统计信息(第53页)存储I/O统计信息(第54页)数据库空间使用情况统计信息(第55页)网络统计信息(第55页)在服务器级监控性能(第48页)事务统计信息事务统计信息显示事务活动.
表14.
事务统计信息名称描述缺省情况下是否监控事务总数包括用户事务和INC事务在内的活动事务的总数.
否用户事务计数活动的用户事务数否INC事务计数活动的INC事务数否活动LoadTable语句活动LOADTABLE语句数否监控和调优性能性能和调优指南53另请参见内存使用统计信息(第49页)高速缓存统计信息(第49页)CPU使用率统计信息(第51页)线程统计信息(第51页)连接统计信息(第52页)请求统计信息(第53页)存储I/O统计信息(第54页)数据库空间使用情况统计信息(第55页)网络统计信息(第55页)在服务器级监控性能(第48页)存储I/O统计信息存储I/O统计信息描述了磁盘的读取和写入情况.
表15.
存储I/O统计信息名称描述缺省情况下是否监控目录存储磁盘读取数每秒从目录存储读取的千字节数.
否临时存储磁盘读取数每秒从临时存储读取的千字节数.
否主存储磁盘读取数每秒从主存储读取的千字节数.
否目录存储磁盘写入数每秒写入目录存储的千字节数.
否临时存储磁盘写入数每秒写入临时存储的千字节数.
否主存储磁盘写入数每秒写入主存储的千字节数.
否另请参见内存使用统计信息(第49页)高速缓存统计信息(第49页)CPU使用率统计信息(第51页)线程统计信息(第51页)连接统计信息(第52页)请求统计信息(第53页)事务统计信息(第53页)数据库空间使用情况统计信息(第55页)网络统计信息(第55页)在服务器级监控性能(第48页)监控和调优性能54SybaseIQ数据库空间使用情况统计信息数据库空间使用情况统计信息可以确定数据库空间的可用性.
表16.
DBSpace使用情况名称描述缺省情况下是否监控正在使用的DBSpace文件大小正在使用的DBSpace大小.
每个dbspace均有一项此类统计信息.
否可用的DBSpace大小的百分比可用于每个dbspace文件的可用空间百分比.
每个文件的每个dbspace均有一项此类统计信息.
否另请参见内存使用统计信息(第49页)高速缓存统计信息(第49页)CPU使用率统计信息(第51页)线程统计信息(第51页)连接统计信息(第52页)请求统计信息(第53页)事务统计信息(第53页)存储I/O统计信息(第54页)网络统计信息(第55页)在服务器级监控性能(第48页)网络统计信息网络统计信息显示网络活动.
表17.
网络统计信息名称描述缺省情况下是否监控收到的字节客户端/服务器通信过程中每秒收到的字节数.
是收到的未压缩字节禁用压缩时,在客户端/服务器通信过程中每秒收到的字节数.
否发送的字节客户端/服务器通信过程中每秒发送的字节数.
是发送的未压缩字节禁用压缩时,在客户端/服务器通信过程中每秒发送的字节数.
否可用通信缓冲区数可用网络通信缓冲区的数量.
否监控和调优性能性能和调优指南55名称描述缺省情况下是否监控通信缓冲区总数网络通信缓冲区的总数.
否另请参见内存使用统计信息(第49页)高速缓存统计信息(第49页)CPU使用率统计信息(第51页)线程统计信息(第51页)连接统计信息(第52页)请求统计信息(第53页)事务统计信息(第53页)存储I/O统计信息(第54页)数据库空间使用情况统计信息(第55页)在服务器级监控性能(第48页)监控缓冲区高速缓存缓冲区高速缓存性能是总体性能中的关键因素.
缓冲区高速缓存监控器可以记录缓冲区高速缓存、内存和I/O统计信息.
使用缓冲区高速缓存监控器可以调优主缓冲区高速缓存和临时缓冲区高速缓存的内存分配.
如果一个高速缓存执行明显比另一个高速缓存更多的I/O,则重新分配少量内存,例如以迭代方式分配百分之十的高速缓存.
在重新分配之后,请重新运行负载,并监控性能变化.
另请参见查看SybaseIQ环境调优SybaseIQ性能的第一步是查看环境.
监控性能统计信息(第48页)缓冲区高速缓存结构(第68页)避免缓冲区管理器抖动(第69页)监控CPU使用的系统实用程序(第74页)缓冲区高速缓存监控清单(第71页)启动缓冲区高速缓存监控器从InteractiveSQL运行缓冲区高速缓存监控器.
在每次启动监控器时,它都会在SybaseIQ中作为单独内核线程运行.
使用以下语法启动监控器:监控和调优性能56SybaseIQIQUTILITIES{MAIN|PRIVATE}INTOdummy_table_nameSTARTMONITOR'monitor_options[…]'MAIN启动对主缓冲区高速缓存的监控,监控针对您所连接的数据库的IQ存储中的所有表进行.
PRIVATE启动对临时缓冲区高速缓存的监控,监控针对您所连接的数据库的临时存储区中的所有表进行.
您需要发出单独的命令,以监控每个缓冲区高速缓存.
在监控器收集结果时,必须使每个会话保持打开状态;关闭其连接时,监控器的运行会停止.
一个连接可以运行最多两个监控器运行,一个用于主缓冲区高速缓存,另一个用于临时缓冲区高速缓存.
dummy_table_name可以是任何SybaseIQ基表或临时表.
为了与其它IQUTILITIES命令语法兼容,必须提供表名.
最好使用仅用于监控的表.
若要控制监控器输出文件的目录位置,请设置MONITOR_OUTPUT_DIRECTORY选项.
如果不设置此选项,则监控器会将输出发送到数据库所在的相同目录.
所有监控器输出文件均用于监控器运行期间.
在监控器运行已停止之后,这些文件会保留下来.
在创建任何Multiplex查询服务器之前,要么声明在监控中使用的临时表,要么在创建新数据库时创建永久性伪表.
这些解决方案避免了DDL更改,以便在生产运行期间数据在查询服务器上一直保持工作状态.
注意:若要简化监控器的使用,请创建存储过程以声明伪表,并指定其输出位置,然后启动监控器.
注意:间隔(有两个例外)应用于每行输出,而不是每页.
例外是-cache_by_type和-debug,这时,每个显示内容以新页开始.
另请参见输出选项(第57页)在监控器运行时检查结果(第67页)停止缓冲区高速缓存监控器(第67页)检查并保存监控器结果(第67页)输出选项缓冲区高速缓存监控器输出取决于monitor_options参数包括的开关.
监控和调优性能性能和调优指南57-summary显示主缓冲区高速缓存和临时缓冲区高速缓存的摘要信息.
如果不指定任何监控器选项,则会收到摘要报告.
用法monitor_options-summary输出表18.
-summary输出字段输出字段描述Users连接到缓冲区高速缓存的用户数IO由缓冲区高速缓存执行的组合物理读取数和写入数另请参见-cache(第58页)-cache_by_type(第60页)-file_suffix(第60页)-io(第61页)-bufalloc(第62页)-contention(第63页)-threads(第64页)-interval(第65页)-append|-truncate(第65页)-debug(第66页)-cache详细显示主缓冲区高速缓存或临时缓冲区高速缓存的活动.
关键字段是Finds、HR%和BWaits.
用法monitor_options-cache监控和调优性能58SybaseIQ输出表19.
-cache输出字段输出字段描述Finds对缓冲区高速缓存的查找请求数.
如果Finds值突然降到零并保持不变,则服务器被死锁.
当服务器有任何活动时,Finds值应当是非零值.
Creats在数据库中创建页的请求数Dests在数据库中销毁页的请求数Dirty缓冲区脏化(修改)的次数HR%命中率,在不请求任何I/O的情况下,缓冲区高速缓存满足查询的百分比.
命中率越高越好,如果高速缓存设置得足够大,通常是90%-100%.
对于大型查询,命中率可能一开始很低,但预取开始工作时则会增加.
BWaits强制等待繁忙页(页帧争用)的查找请求数.
通常它很低,但在某些特殊情况下它可能很高.
例如,如果同时启动相同查询,则都需要相同页,因此第二个请求必须等待第一个请求从磁盘获取页.
ReReads在相同事务中存储区的相同部分需要重读到高速缓存中的大约次数.
应当始终很低,但对SybaseIQ12.
4.
2和以上版本来说,高数字也没关系.
FMiss假丢失数,缓冲区高速缓存需要多次查找才能在内存中找到页的次数.
此数字应当是0或非常小.
如果该值很高,则可能发生了回退,并且需要重复某些操作.
ClonedSybaseIQ为了给写入程序建立新版本而需要的缓冲区数,而它必须为并发读取程序保留早期版本.
仅当其它用户正在查看某页时,才复制该页.
Reads/Writes由缓冲区高速缓存执行的物理读取和写入PF/PFRead预取请求数和为预取完成的读取数.
GDirtyLRU缓冲区被脏抢夺并且SybaseIQ在使用它之前必须将其写出的次数.
此值不应当长时间大于0.
如果是,则可能需要增加清理程序线程数,或移动清洗标记.
Pin%缓冲区高速缓存中正在使用和锁定的页的百分比.
Dirty%被修改的缓冲块的百分比.
不要尝试让此值超过85-90%;否则,GDirty将变为大于0.
另请参见-summary(第58页)监控和调优性能性能和调优指南59-cache_by_type(第60页)-file_suffix(第60页)-io(第61页)-bufalloc(第62页)-contention(第63页)-threads(第64页)-interval(第65页)-append|-truncate(第65页)-debug(第66页)-cache_by_type按照IQ页类型细分-cache结果.
(例外是Bwaits列,此列仅显示总计.
)当需要向Sybase技术支持部门提供信息时,此格式最有用.
用法monitor_options-cache_by_type另请参见-summary(第58页)-cache(第58页)-file_suffix(第60页)-io(第61页)-bufalloc(第62页)-contention(第63页)-threads(第64页)-interval(第65页)-append|-truncate(第65页)-debug(第66页)-file_suffix创建名为.
--的监控器输出文件.
如果您没有指定可选文件扩展名,则文件扩展名缺省为iqmon.
用法monitor_options-file_suffix{extension}另请参见-summary(第58页)-cache(第58页)-cache_by_type(第60页)监控和调优性能60SybaseIQ-io(第61页)-bufalloc(第62页)-contention(第63页)-threads(第64页)-interval(第65页)-append|-truncate(第65页)-debug(第66页)-io显示在指定时段内主缓冲区高速缓存或临时(专用)缓冲区高速缓存I/O率和压缩率.
这些计数器表示服务器的所有活动;这些信息不会被设备断开.
用法monitor_options-io输出表20.
-io输出字段输出字段描述Reads由缓冲区高速缓存执行的物理读取数Lrd(KB)读入的逻辑KB数(页大小乘以请求数)Prd(KB)读入的物理KB数Rratio逻辑对物理读入数据的压缩率,用于衡量磁盘读取的压缩效率Writes缓冲区高速缓存执行的物理写入数Lwrt(KB)逻辑写入KB数Pwrt(KB)物理写入KB数Wratio逻辑与物理写入数据的压缩率另请参见-summary(第58页)-cache(第58页)-cache_by_type(第60页)-file_suffix(第60页)-bufalloc(第62页)-contention(第63页)-threads(第64页)-interval(第65页)监控和调优性能性能和调优指南61-append|-truncate(第65页)-debug(第66页)-bufalloc显示有关主缓冲区分配器或临时缓冲区分配器的信息,该分配器可在缓冲区高速缓存中保留空间以供排序、散列和位图等对象使用.
用法monitor_options-bufalloc输出表21.
-bufalloc输出字段输出字段描述OUUser_Resource_Reservation选项设置(以前是Optimize_For_This_Many_Users)AU当前活动用户数MaxBuf缓冲区分配器控制下的缓冲区数Availpin配额分配的当前可用缓冲区数AvPF预取配额分配的当前可用缓冲区数Slots使用缓冲区高速缓存配额的当前注册对象数PinUser使用pin配额的对象数(例如散列、排序和B树对象)PFUsr使用预取配额的对象数Posted预先计划配额用户的对象数UnPost作为特别配额用户的对象数Locks在缓冲区分配器上执行的互斥锁定数Waits线程必须等待锁定的次数另请参见-summary(第58页)-cache(第58页)-cache_by_type(第60页)-file_suffix(第60页)-io(第61页)-contention(第63页)-threads(第64页)监控和调优性能62SybaseIQ-interval(第65页)-append|-truncate(第65页)-debug(第66页)-contention显示很多关键的缓冲区高速缓存和内存管理器锁定.
这些锁定和互斥计数器显示在缓冲区高速缓存和堆内存中的活动,以及解除这些锁定的速度.
如果超时数超过20%,则表示有问题.
用法monitor_options-contention输出表22.
-contention输出字段输出字段描述AU当前活动用户数LRULksLRU的锁定次数(对临时高速缓存重复)woTO授予锁定而没有超时的次数(对临时高速缓存重复)Loops在授予锁定之前SybaseIQ重试的次数(对临时高速缓存重复)TOsSybaseIQ超时并且必须等待锁定的次数(对临时高速缓存重复)BWaits高速缓存中的缓冲区"忙等待"数(对临时高速缓存重复)IOLockSybaseIQ锁定压缩I/O池的次数(对临时高速缓存重复);可以被忽略IOWaitSybaseIQ必须等待对压缩I/O池的锁定的次数(对临时高速缓存重复);可以被忽略HTLockSybaseIQ锁定块映射散列表的次数(对临时高速缓存重复)HTWaitSybaseIQ必须等待块映射散列表的次数(对临时高速缓存重复);HTLock和HTWait指示您正在使用多少块映射FLLockSybaseIQ必须锁定空闲列表的次数(对临时高速缓存重复)FLWaitSybaseIQ必须等待对空闲列表的锁定的次数(对临时高速缓存重复)MemLksSybaseIQ取得内存管理器(堆)锁定的次数MemWtsSybaseIQ必须等待内存管理器锁定的次数注意:由于操作系统的改进,SybaseIQ不再使用旋转锁定.
因此,很少使用woTO、Loops和TOs统计信息.
监控和调优性能性能和调优指南63另请参见-summary(第58页)-cache(第58页)-cache_by_type(第60页)-file_suffix(第60页)-io(第61页)-bufalloc(第62页)-threads(第64页)-interval(第65页)-append|-truncate(第65页)-debug(第66页)-threads显示处理线程管理器计数.
值是全服务器范围的(即无论对主或专用选择此选项都没关系).
它们表示在报告的最后一页后出现的新事件.
用法monitor_options-threads输出表23.
-threads输出字段输出字段描述cpusSybaseIQ正在使用的CPU数;它可能小于系统上的数字LimitSybaseIQ可以使用的最大线程数NTeams当前在使用中的线程组数MaxTms曾经在使用中的最大组数NThrds当前的现有线程数Resrvd为系统(连接)使用而保留的线程数Free可供分配的线程数.
请监控此值,如果它非常低,则指示线程匮乏Locks对线程管理器使用的锁定数WaitsSybaseIQ必须等待对线程管理器的锁定的次数另请参见-summary(第58页)-cache(第58页)监控和调优性能64SybaseIQ-cache_by_type(第60页)-file_suffix(第60页)-io(第61页)-bufalloc(第62页)-contention(第63页)-interval(第65页)-append|-truncate(第65页)-debug(第66页)-interval指定报告间隔(以秒为单位).
缺省值为每60秒.
最小值为每2秒.
通过在查询期间或有性能问题的时间按缺省间隔运行监控器,通常可以获取有用的结果.
较短的间隔可能不会给出有意义的结果.
间隔应当与作业时间成比例;通常,一分钟就足够了.
用法monitor_options-interval输出第一个显示内容显示自服务器启动以来的计数器.
后续显示则显示与前一显示不同的地方.
另请参见-summary(第58页)-cache(第58页)-cache_by_type(第60页)-file_suffix(第60页)-io(第61页)-bufalloc(第62页)-contention(第63页)-threads(第64页)-append|-truncate(第65页)-debug(第66页)-append|-truncate将输出追加到现有输出文件或截断现有输出文件.
Truncate是缺省值.
用法monitor_options-append|-truncate监控和调优性能性能和调优指南65另请参见-summary(第58页)-cache(第58页)-cache_by_type(第60页)-file_suffix(第60页)-io(第61页)-bufalloc(第62页)-contention(第63页)-threads(第64页)-interval(第65页)-debug(第66页)-debug显示性能监视器可用的所有信息,无论是否有覆盖相同信息的标准显示模式.
-debug主要用于向Sybase技术支持部门提供信息.
用法monitor_options-debug输出页首是按磁盘块类型分类的统计信息阵列.
其后是其它缓冲区高速缓存统计信息、内存管理器统计信息、线程管理器统计信息、空闲列表统计信息、CPU利用率和最终缓冲区分配器统计信息.
然后,缓冲区分配器统计信息按客户端类型(散列、排序等)分类,并显示最近分配的缓冲区柱状图.
内存分配指示有多少是在报告的最后一页后分配的.
另请参见-summary(第58页)-cache(第58页)-cache_by_type(第60页)-file_suffix(第60页)-io(第61页)-bufalloc(第62页)-contention(第63页)-threads(第64页)-interval(第65页)-append|-truncate(第65页)监控和调优性能66SybaseIQ在监控器运行时检查结果在UNIX系统上,可以在查询正在运行时监视监控器输出.
例如,可以使用以下命令启动监控器:iqutilitiesmainintomonitor_tabstartmonitor"-cache-interval2-file_suffixiqmon"此命令将输出发送到名为dbname.
conn#-[main|temp]-iqmon的ASCII文件.
因此,对于数据库iqdemo,结果会发送到iqdemo.
2-main-iqmon.
若要监视结果,请在系统提示下发出以下命令:$tail-fiqdemo.
2-main-iqmon另请参见启动缓冲区高速缓存监控器(第56页)输出选项(第57页)停止缓冲区高速缓存监控器(第67页)检查并保存监控器结果(第67页)停止缓冲区高速缓存监控器用于停止监控器运行的命令与用于启动它的命令相似,只是不需要指定任何选项.
使用以下语法可以停止SybaseIQ缓冲区高速缓存监控器:IQUTILITIES{MAIN|PRIVATE}INTOdummy_table_nameSTOPMONITOR注意:为了让某些选项设置生效,必须重新启动数据库.
如果监控器正在运行,则需要关闭它,以便数据库可以重新启动.
另请参见启动缓冲区高速缓存监控器(第56页)输出选项(第57页)在监控器运行时检查结果(第67页)检查并保存监控器结果(第67页)检查并保存监控器结果缓冲区高速缓存监控器记录每次运行的结果.
日志的缺省名:dbname.
connection#-main-iqmon用于主缓冲区高速缓存结果dbname.
connection#-temp-iqmon用于临时缓冲区高速缓存结果监控和调优性能性能和调优指南67前缀dbname.
connection#表示数据库名称和连接号.
如果看见多个连接号,并且不能确定哪个是您的,则可以运行目录存储过程sa_conn_info.
此过程将显示与数据库的每个活动连接的连接号、用户ID和其它信息.
可以在IQUTILITIES命令中使用-file_suffix参数,将后缀iqmon更改为您选择的后缀.
若要查看监控器运行的结果,请使用您通常用于显示或打印文件的文本编辑器或任何其它方法.
当再次从相同数据库和连接号运行监控器时,缺省情况下它将覆盖以前的结果.
如果需要保存监控器运行的结果,请在从相同数据库再次启动监控器之前将文件复制到另一个位置,或使用-append选项.
另请参见启动缓冲区高速缓存监控器(第56页)输出选项(第57页)在监控器运行时检查结果(第67页)停止缓冲区高速缓存监控器(第67页)缓冲区高速缓存结构更改CACHE_PARTITIONS值可以提高多CPU配置中的装载或查询性能.
SybaseIQ按照系统的CPU数自动计算缓冲区高速缓存的高速缓存分区数.
如果多CPU配置中的装载或查询性能比期望值慢,可能能够通过更改CACHE_PARTITIONS数据库选项的值来提高它.
有关详细信息,请参见《参考:语句和选项》中的CACHE_PARTITIONS选项.
当缓冲区接近高速缓存的最近使用最少(LRU)末尾时,它们将越过清洗标记.
SybaseIQ会将最旧页(那些越过清洗标记的页)写出到磁盘中,以便可以重用它们占据的高速缓存空间.
一组SybaseIQ处理线程(名为清理程序线程)将清除(写入)最旧的缓冲区.
当SybaseIQ需要将一页数据读取到高速缓存中时,它会抢夺LRU缓冲区.
如果缓冲区仍然是"脏的"(已修改),则它必须首先写入到磁盘中.
监控器-cache报告中的Gdirty列会显示LRU缓冲区被脏抢夺并且SybaseIQ在使用它之前必须先将它写出到磁盘的次数.
通常,SybaseIQ能够使Gdirty值保持为0.
如果此值在较长时段内大于0,则可能需要调整某个用于控制清理程序线程数和清洗标记的数据库选项.
请参见《参考:语句和选项》中的"SWEEPER_THREADS_PERCENT选项"或"WASH_AREA_BUFFERS_PERCENT选项".
另请参见查看SybaseIQ环境调优SybaseIQ性能的第一步是查看环境.
监控和调优性能68SybaseIQ监控性能统计信息(第48页)监控缓冲区高速缓存(第56页)避免缓冲区管理器抖动(第69页)监控CPU使用的系统实用程序(第74页)缓冲区高速缓存监控清单(第71页)避免缓冲区管理器抖动系统必须先写入脏页然后才能读取请求页的情况下会发生抖动,这会显著降低系统速度.
为获得最佳性能,请始终分配足够可用的高速缓存,从而使页写入程序满足可用空间需求.
缓冲区高速缓存抖动缓冲区高速缓存抖动与系统抖动类似,且在没有足够可用于读取的清洁缓冲区的情况下发生.
这导致在高速缓存中出现相同类型的"先写入然后读取"延迟,且可能会在没有足够大的缓冲区高速缓存来容纳查询中引用的所有对象的情况下发生.
若要消除缓冲区高速缓存抖动,必须为缓冲区高速缓存分配更多内存.
请不要过多分配缓冲区高速缓存.
分配过多内存可能会导致为数据库缓冲区高速缓存分配内存时发生系统抖动.
在极端情况下,没有解决缓冲区高速缓存抖动问题时分配过多内存可能会引起多级别的抖动.
在多用户环境中,或者查询复杂性导致的曲解或不确定性使优化程序在某情况下(在该情况中需要用明显多于查询可用的高速缓存所容纳的值数目生成HASH对象)选择HASH算法时可能会出现其它不易发现形式的缓冲区高速缓存抖动.
设置缓冲区大小设置缓冲区大小时,请记住以下事项:如果SybaseIQ缓冲区高速缓存太大,则在SybaseIQ尝试使用所有这部分内存时,操作系统将强制分页.
如果SybaseIQ缓冲区高速缓存太小,则SybaseIQ会发生抖动,因为它不能将足够的查询数据填到高速缓存中.
如果正在遇到剧烈的性能问题,则应当监视分页,以确定是否是抖动问题.
如果是,请重置缓冲区大小.
查询和散列算法如果您监控分页并确定存在抖动问题,您还可以限制在执行包含涉及散列算法的查询的语句过程中的抖动量.
通过调整HASH_THRASHING_PERCENT数据库选项,可以控制在语句回退且返回错误之前允许的硬盘I/O百分比.
HASH_THRASHING_PERCENT的缺省值为10%.
增大HASH_THRASHING_PERCENT将允许在回退之前对磁盘进行更多分页,而减小HASH_THRASHING_PERCENT将减少在回退之前允许的分页.
监控和调优性能性能和调优指南69如果查询涉及SybaseIQ的早期版本中执行的散列算法,则这些查询现在可能在达到缺省的HASH_THRASHING_PERCENT限制时发生回退.
SybaseIQ报告错误Hashinsertthrashingdetected或Hashfindthrashingdetected.
执行以下一项或多项操作可为查询提供执行所需的资源:通过增大HASH_THRASHING_PERCENT的值来放宽分页限制.
增加临时高速缓存的大小(仅限DBA).
请切记,增加临时高速缓存的大小要求在主高速缓存分配中减少相等大小以防止系统抖动的可能性.
对于此语句,尝试确定SybaseIQ错误估计一个或多个散列大小的原因并缓解该错误估计所产生的后果.
例如,请检查需要LF或HG索引的所有列都有一个.
而且,请考虑多列索引是否合适.
减少数据库选项HASH_PINNABLE_CACHE_PERCENT的值.
有关这些数据库选项的详细信息,请参见《参考:语句和选项》中的"HASH_THRASHING_PERCENT选项"和"HASH_PINNABLE_CACHE_PERCENT选项".
要发现查询中可能存在的问题,请用临时数据库选项QUERY_PLAN='ON'和QUERY_DETAIL='ON',运行查询,以生成查询计划,然后检查查询计划中的估计值.
生成的查询计划存在于消息日志文件中.
另请参见管理缓冲区高速缓存(第7页)监控Windows系统上的分页使用Windows性能工具可以监控分页和对象内存.
若要访问系统监控器,请选择对象"LogicalDisk"(包含文件PAGEFILE.
SYS,的磁盘实例)和计数器DiskTransfers/Sec.
将Windows页面文件放在不同于数据库的数据库空间设备的磁盘上.
还可以监控对象"Memory"和计数器Pages/Sec.
但是,该值是包括软故障和硬故障的所有内存故障的总和.
另请参见监控UNIX之类的操作系统上的分页(第70页)监控UNIX之类的操作系统上的分页使用vmstat、top或topas可以监控诸如分页之类的系统活动.
表24.
监控UNIX之类的操作系统上的实用程序命令平台描述vmstatSolaris、Linux、HP-UXvmstat显示虚拟内存统计信息.
topSolaris、Linux、HP-UXtop显示顶层CPU处理器活动.
监控和调优性能70SybaseIQ命令平台描述topasAIXtopas生成本地系统统计信息.
注意:有关语法和选项,请参见操作系统文档.
另请参见监控Windows系统上的分页(第70页)缓冲区高速缓存监控清单请查看此清单以调整超出正常范围的高速缓存行为.
表25.
缓冲区高速缓存监控清单统计信息正常行为需要调整的行为建议操作HR%(高速缓存命中率)高于90%.
对于单个内部数据结构,比如garray、barray、位图(bm)、散列对象、排序对象、变长btree(btreev)、定长btree(btreef)、位向量(bv)、dbext、dbid、vdo、存储、检查点块(ckpt),在查询运行时命中率应当是超过90%.
它可能首先低于90%.
一旦预取开始工作(PF或PrefetchReqs>0),则命中率应当逐渐增长到超过90%.
在预取工作之后,命中率低于90%.
注意:某些对象不执行预取,因此其命中率在正常情况下可能很低.
尝试通过调整-iqmc和-iqtc重新平衡主高速缓存大小和临时高速缓存大小.
还应通过调整PREFETCH_THREADS_PERCENT选项,尝试增加预取线程数.
监控和调优性能性能和调优指南71统计信息正常行为需要调整的行为建议操作Gdirty(脏抢夺)在有中等高速缓存大小(0注意:仅当脏页的数目达到清洗区的某个百分比时,系统才会激活清理程序线程.
如果GDirty/GrabbedDirty大于0并且I/O率(写入)很低,则系统可能直接被轻装载,并且不需要执行操作.
调整SWEEPER_THREADS_PERCENT选项(缺省值10%)或WASH_AREA_BUFFERS_PERCENT选项(缺省值20%),以增加清洗区的大小.
BWaits(缓冲区忙等待)0持久>0,表示多个作业正在争夺同一个缓冲区.
如果I/O率(写入)很高,则忙等待可能是高速缓存抖动导致的.
请检查高速缓存报告中的命中率,以确定是否需要重新平衡主高速缓存与临时高速缓存.
如果批量作业正在同时启动很多几乎相同的查询,请尝试错开启动时间.
LRU等待(debug报告中的LRUNumTimeOuts百分比)20%或更少>20%,指示发生严重争用问题.
检查操作系统修补程序级别和其它环境设置.
此问题常常是操作系统问题.
IOWait(IONum-Waits)10%或更低>10%检查是否有磁盘错误或I/O重试FLWait(FLMu-texWaits)20%或更低>20%检查dbspace配置:数据库空间即将不足DISK_STRIPING是否为ONsp_iqcheckdb是否报告大于15%的碎片监控和调优性能72SybaseIQ统计信息正常行为需要调整的行为建议操作HTWait(BmapHTNum-Waits)MemWts(Mem-NtimesWaited)(PFMgrCondVar-Waits)10%或更低>10%与Sybase技术支持部门联系.
CPU时间(调试报告中的CPUSysSeconds,CPUTotalSeconds)CPU系统时间(秒)20%如果CPUTotalSeconds还报告低利用率,并有让系统忙的足够作业,则高速缓存可能正在抖动,或可能丢失平行性.
调整-iqgovern以减少允许的并发查询总数.
检查高速缓存报告中的命中率和I/O率,确定是否有高速缓存抖动.
还应查看cache_by_type(或debug)报告中散列对象的命中率,以确定散列对象是否正在抖动:在I/O率(写入)很高时,它是否90到95%,指示系统正在危险地接近缓冲区不足条件,而这会导致事务回退尝试重新平衡主高速缓存与临时高速缓存的大小.
如果不可能重新平衡缓冲区高速缓存大小,请尝试减少-iqgovern,以限制并发运行的作业数.
监控和调优性能性能和调优指南73统计信息正常行为需要调整的行为建议操作可用线程(ThrNumFree)可用线程数>保留线程数如果可用线程数降低至保留计数,则系统可能发生线程空闲.
尝试下列操作之一:通过设置-iqmt,增加线程数.
减少与线程相关的选项:MAX_IQ_THREADS_PER_CON-NECTION,MAX_IQ_THREADS_PER_TEAM.
通过设置USER_RESOURCE_RESERVATION,限制查询引擎资源分配.
通过设置-iqgovern,限制作业数.
FlOutOfSpace(仅调试)0,指示此存储区的空闲列表不完整;未分配的页可用1,指示已完全分配此存储(主存储或临时存储)将更多dbspace添加到该存储另请参见查看SybaseIQ环境调优SybaseIQ性能的第一步是查看环境.
监控性能统计信息(第48页)监控缓冲区高速缓存(第56页)缓冲区高速缓存结构(第68页)避免缓冲区管理器抖动(第69页)监控CPU使用的系统实用程序(第74页)监控CPU使用的系统实用程序有一些特定于操作系统的实用程序可用于监控CPU使用率.
表26.
特定于操作系统的监控实用程序OS实用程序描述UNIXtop(Solaris、Linux、HP-UX)、topas(IBM-AIX)实时地持续查看处理器活动.
ps报告进程状态.
监控和调优性能74SybaseIQOS实用程序描述vmstat显示有关系统进程、内存、分页、块IQ、捕获和CPU活动的信息.
iostat-x显示磁盘子系统信息.
Windows系统监控器任务管理器提供有关计算机性能和正在运行的应用程序、进程、CPU使用率及其它系统服务的详细信息.
另请参见查看SybaseIQ环境调优SybaseIQ性能的第一步是查看环境.
监控性能统计信息(第48页)监控缓冲区高速缓存(第56页)缓冲区高速缓存结构(第68页)避免缓冲区管理器抖动(第69页)缓冲区高速缓存监控清单(第71页)监控和调优性能性能和调优指南75监控和调优性能76SybaseIQ优化查询和删除帮助您计划、结构化和控制查询的建议.
实现结构化查询的提示改进查询结构可以加快查询运行速度.
有些情况下,包含子查询的命令语句也可表示为连接,从而有可能加快运行速度.
如果对GROUPBY子句中的多列进行分组,请按唯一值的数目降序列出这些列(如果可以).
这将提供最佳的查询性能.
您可以通过使用附加列提高性能,以便存储频繁计算的结果.
增强ORDERBY查询性能使用多列HG索引可以增强ORDERBY查询的性能.
可以通过对单表查询中多列的引用,使用多列HG索引增强ORDERBY查询的性能.
此更改对于用户来说是透明的,但改进了查询性能.
使用多列HG索引,ORDERBY子句中具有多列的查询可以加快运行速度.
例如,如果在表T上用户具有多列索引HG(x,y,z),则此索引用于有序投影:SELECTabs(x)FROMTORDERBYx,y在以上示例中,HG索引按照排序顺序垂直投射x和y.
如果ROWID()函数位于SELECT列表表达式中,则系统还会使用多列HG索引.
例如:SELECTrowid()+x,zFROMTORDERBYx,y,z如果ROWID()位于ORDERBY列表的末尾,而且该列表的列(ROWID()除外)位于该索引内,且排序键与前导HG列依序匹配,则系统会在查询中使用多列索引.
例如:SELECTz,yFROMTORDERBYx,y,z,ROWID()另请参见提高了子查询性能(第78页)使用高速缓存方法(第78页)GROUPBY与UNIONALL配合使用时对查询性能的影响在某些情况下,使用拆分GROUPBY方法可以减少查询处理时间.
优化查询和删除性能和调优指南77提高了子查询性能使用SUBQUERY_FLATTENING_PREFERENCE和SUBQUERY_FLATTENING_PERCENT控制子查询展平.
子查询展平是一种优化技术,使用此技术,优化程序会将包含子查询的查询重新写入使用连接的查询中.
SybaseIQ会展平多个子查询但不是所有子查询.
当优化程序选择使用此优化方式时,请使用SUBQUERY_FLATTENING_PREFERENCE和SUBQUERY_FLATTENING_PERCENT来进行控制.
在SybaseIQ15.
0中,不建议使用FLATTEN_SUBQUERIES选项.
另请参见GROUPBY与UNIONALL配合使用时对查询性能的影响在某些情况下,使用拆分GROUPBY方法可以减少查询处理时间.
使用高速缓存方法(第78页)增强ORDERBY查询性能(第77页)使用高速缓存方法设置SUBQUERY_CACHING_PREFERENCE选项,为相关子查询选择高速缓存方法.
相关子查询包含对子查询范围外的一个或多个表的引用,且相关子查询在每次被引用列中的值更改时都会重新执行.
使用SUBQUERY_CACHING_PREFERENCE选项,为执行相关子查询选择高速缓存方法.
另请参见提高了子查询性能(第78页)增强ORDERBY查询性能(第77页)GROUPBY与UNIONALL配合使用时对查询性能的影响在某些情况下,使用拆分GROUPBY方法可以减少查询处理时间.
计划查询生成查询计划可帮助您了解优化程序开发的执行计划.
如果您已创建正确的索引,SybaseIQ查询优化程序通常能够以最有效的方式执行查询,即使您并未使用最有效的语法也可以做到这一点.
执行任何查询之前,SybaseIQ查询优化程序会创建查询计划.
SybaseIQ使您能够通过下面几节介绍的选项来检查和影响查询计划,以帮助您评估查询.
有关如何指定这些选项的详细信息,请参见《参考:语句和选项》.
优化查询和删除78SybaseIQ查询评估选项设置相应选项可帮助您评估查询计划.
INDEX_ADVISOR-当设置为ON时,索引顾问会将索引建议作为SybaseIQ查询计划中的一部分或作为SybaseIQ消息日志文件中单独的消息(如果未启用查询计划)进行打印.
这些消息以字符串"IndexAdvisor:"开头,并且您可以使用该字符串在SybaseIQ消息文件中对其进行搜索和过滤.
此选项以OWNER.
TABLE.
COLUMN格式输出消息,缺省情况下为OFF.
另请参见《参考:构件块、表和过程》的"系统过程"中的"sp_iqindexadvice过程".
INDEX_ADVISOR_MAX_ROWS-用于限制由索引顾问所存储的消息数.
一旦达到指定限制,INDEX_ADVISOR将不会存储新的建议.
但是它将继续为现有设备更新计数和时间戳.
NOEXEC-当设置为ON时,SybaseIQ会生成查询计划,但不会执行整个查询.
当EARLY_PREDICATE_EXECUTION选项为ON时,系统仍会执行查询的某些部分.
如果EARLY_PREDICATE_EXECUTION为OFF,则查询计划可能与正常运行查询时具有很大区别,因此不建议将它设置为OFF.
QUERY_DETAIL-当此选项以及QUERY_PLAN或QUERY_PLAN_AS_HTML均为ON时,SybaseIQ将在生成查询计划时显示有关查询的其它信息.
当QUERY_PLAN和QUERY_PLAN_AS_HTML为OFF时,系统将忽略此选项.
QUERY_PLAN-当设置为ON(缺省值)时,SybaseIQ会生成有关查询的消息.
其中包括针对查询的有关使用连接索引、连接顺序及连接算法的消息.
QUERY_PLAN_TEXT_ACCESS-当将此选项设置为ON时,您可以从InteractiveSQL客户端查看、保存和打印IQ查询计划.
当QUERY_PLAN_ACCESS_FROM_CLIENT设置为OFF时,系统将不会对查询计划进行高速缓存,并且与查询计划相关的其它数据库选项对InteractiveSQL客户端的查询计划显示不起任何作用.
缺省情况下,此选项为OFF.
请参见《参考:构件块、表和过程》中的"GRAPHICAL_PLAN函数[字符串]"和"HTML_PLAN函数[字符串]".
QUERY_PLAN_AFTER_RUN-当设置为ON时,系统会在查询结束运行之后打印查询计划.
这将允许该计划包括其它信息,例如从查询的每个节点传递过来的实际行数.
为使此选项有效,QUERY_PLAN必须为ON.
缺省情况下,此选项为OFF.
QUERY_PLAN_AS_HTML-生成HTML格式的图形化查询计划,以便在Web浏览器中查看.
节点之间的超链接使得.
iqmsg文件中的HTML格式比文本格式更易于使用.
使用QUERY_NAME选项,以便将查询名称包含在查询计划文件名中.
缺省情况下,此选项为OFF.
QUERY_PLAN_AS_HTML_DIRECTORY-当QUERY_PLAN_AS_HTML为ON并用QUERY_PLAN_AS_HTML_DIRECTORY指定一个目录时,SybaseIQ会将HTML查询计划写入该指定目录中.
优化查询和删除性能和调优指南79QUERY_PLAN_TEXT_CACHING-为用户提供了一种机制,用于控制对计划进行高速缓存的资源.
在此选项为OFF(缺省值)的情况下,不会针对该用户连接对查询计划进行高速缓存.
如果针对某个用户关闭QUERY_PLAN_TEXT_ACCESS选项,则对于来自该用户的连接,无论QUERY_PLAN_TEXT_CACHING如何设置都不会对查询计划进行高速缓存.
另请参见《参考:构件块、表和过程》中的"GRAPHICAL_PLAN函数[字符串]"和"HTML_PLAN函数[字符串]".
QUERY_TIMING-控制对查询引擎中有关子查询及其它某些重复函数的计时统计信息的收集活动.
通常该选项应为OFF(缺省值),这是因为对于非常短的相关子查询来说,就性能而言每个子查询执行的计时成本可能很高.
注意:查询计划可向您的.
iqmsg文件添加大量文本.
当QUERY_PLAN为ON(缺省值)时,尤其是如果QUERY_DETAIL为ON,可能需要启用消息日志回卷或消息日志存档,以避免填满消息日志文件.
有关详细信息,请参见《系统管理指南第一卷》的"SybaseIQ系统管理概述"中的"消息日志回卷".
另请参见查询树(第80页)使用查询计划(第80页)查询树查询树表示查询的数据流.
查询树由节点组成.
每个节点代表一个工作阶段.
树上最低的节点是叶节点.
每个叶节点代表查询中的一个表.
在查询计划的顶部是运算符树的根.
信息流从表开始向上流动,流经任何表示连接、排序、过滤、存储、集合和子查询的运算符.
另请参见查询评估选项(第79页)使用查询计划(第80页)使用查询计划设置QUERY_PLAN_AS_HTML选项可以生成HTML版本的查询计划,您可以在Web浏览器中查看此文件.
在HTML查询计划中,树中的每个节点都是连接至详细信息的超链接.
每个框都被链接至树.
您可以单击任何节点,以便快速浏览整个计划.
用户还可以在InteractiveSQL计划窗口中显示、打印和保存查询计划,而不用访问服务器上的.
iqmsg文件或查询计划文件.
优化查询和删除80SybaseIQSQL函数GRAPHICAL_PLAN和HTML_PLAN分别返回XML和HTML格式的IQ查询计划,作为字符串结果集.
数据库选项QUERY_PLAN_TEXT_ACCESS和QUERY_PLAN_TEXT_CACHING控制新函数的行为.
采用以下方式从InteractiveSQL计划窗口中查看查询计划:执行查询并打开计划窗口.
根据从"计划"选项("工具">"选项">"计划")中选择的计划类型,计划窗口显示相应计划.
仅当选择GRAPHICAL_PLAN选项时,该窗口才会显示IQ查询计划.
其它计划会返回错误消息"计划类型不受支持".
在SQL语句窗口中输入查询,并从菜单"SQL">"获取计划"中进行选择.
根据从"计划"选项("工具">"选项">"计划")中选择的计划类型,计划窗口显示相应计划.
仅当选择GRAPHICAL_PLAN选项时,该窗口才会显示IQ查询计划.
其它计划会返回错误消息"计划类型不受支持".
使用SQL函数GRAPHICAL_PLAN和HTML_PLAN返回查询计划,作为字符串结果.
要访问查询计划,请对下列查询使用SQL函数GRAPHICAL_PLAN和HTML_PLAN:SELECT、UPDATE、DELETE、INSERTSELECT和SELECTINTO.
若要从InteractiveSQL保存查询计划,请使用GRAPHICAL_PLAN或HTML_PLAN检索查询计划并使用OUTPUT语句将输出保存到文件中.
若要查看保存的计划,请从InteractiveSQL客户端菜单中选择"文件">"打开",导航到保存计划的目录.
还可以通过选择"文件">"打印"来打印计划窗口中显示的计划.
有关详细信息,请参见《参考:构件块、表和过程》中的"GRAPHICAL_PLAN函数[字符串]"和"HTML_PLAN函数[字符串]".
有关支持这些查询计划函数的选项,请参见《参考:语句和选项》中的"QUERY_PLAN_TEXT_ACCESS选项"和"QUERY_PLAN_TEXT_CACHING选项".
另请参见查询评估选项(第79页)查询树(第80页)控制查询处理任何用户都可以对用在处理特定查询上的时间量设置限制.
具有DBA特权的用户能够给予某些用户高于其他用户的查询优先级,或者更改处理算法以影响查询处理速度.
优化查询和删除性能和调优指南81设置查询时间限制设置MAX_QUERY_TIME选项可以限制查询能够运行的时间.
如果查询的执行时间长于MAX_QUERY_TIME,SybaseIQ会停止查询并显示相应的错误.
注意:SybaseIQ会截去option-value设置的小数部分,只保留整数值.
例如,值3.
8将被截断为3.
另请参见设置查询优先级(第82页)设置查询优化选项(第83页)设置用户提供的条件提示(第83页)监控负载(第84页)设置查询优先级设置查询优先级选项可按用户分配查询处理优先级.
队列中等待处理的查询首先按照提交查询的用户优先级顺序排队以等待运行,其次是按照查询提交的顺序进行排队.
在高优先级查询全部执行完毕之前,不会执行低优先级查询.
下列选项可按用户为查询分配处理优先级.
IQGOVERN_PRIORITY-为队列中等待处理的查询分配数字优先级(1、2或3,1表示优先级最高).
IQGOVERN_MAX_PRIORITY-允许DBA为用户或组设置IQGOVERN_PRIORITY的上限.
IQ_GOVERN_PRIORITY_TIME-如果高优先级(优先级为1)查询在-iqgovern队列中等候的时间超过了指定时间,则允许高优先级用户开始执行查询.
若要查看查询的优先级,请查看sp_iqcontext存储过程返回的IQGovernPriority属性.
另请参见设置查询时间限制(第82页)设置查询优化选项(第83页)设置用户提供的条件提示(第83页)监控负载(第84页)优化查询和删除82SybaseIQ设置查询优化选项优化选项影响查询处理速度.
AGGREGATION_PREFERENCE-控制用于处理集合(GROUPBY、DISTINCT、SET函数)的算法的选择.
此选项主要供内部使用;除非您是经验丰富的数据库管理员,否则请不要使用它.
DEFAULT_HAVING_SELECTIVITY_PPM-设置查询中所有HAVING谓词的选择性,以覆盖优化程序对HAVING子句要过滤的行数所做的估计.
DEFAULT_LIKE_MATCH_SELECTIVITY_PPM-为一般LIKE谓词设置缺省选择性,例如LIKE'string%string',其中%是通配符.
如果未提供其它选择性信息,并且匹配字符串不是以一组常量字符后跟单个通配符开头,则优化程序会使用此选项.
DEFAULT_LIKE_RANGE_SELECTIVITY_PPM-设置前导为常量字符的LIKE谓词的缺省选择性,形式如LIKE'string%',其中匹配字符串是一组常量字符,后接单个通配符(%).
如果未提供其它选择性信息,优化程序会使用此选项.
MAX_HASH_ROWS-设置查询优化程序将考虑执行散列算法的最大预计行数.
缺省值为2,500,000行.
例如,如果两表之间有连接,而这两个表中参与该连接的估计行数超过该选项值,则优化程序将不会考虑散列连接.
在TEMP_CACHE_MEMORY_MB值超过每用户50MB的系统上,需要为该选项考虑更高的值.
MAX_JOIN_ENUMERATION-设置在应用优化程序简化之后要进行连接顺序优化的表的最大数量.
通常无需设置此选项.
另请参见设置查询时间限制(第82页)设置查询优先级(第82页)设置用户提供的条件提示(第83页)监控负载(第84页)设置用户提供的条件提示选择性提示可以帮助优化程序选择适当的查询策略.
SybaseIQ查询优化程序使用来自可用索引的信息选择用于执行查询的适当策略.
对于查询中的每个条件,优化程序将决定是否可以使用索引执行该条件,如果可以,优化程序会选择使用的索引以及相对于该表中其它条件的执行顺序.
在这些决策中最重要的因素是条件的选择性;即,表的行中满足该条件的部分.
优化程序通常在没有用户干预的情况下做出决定,并且一般可提供最佳决策.
但在某些情况下,优化程序可能无法在条件执行之前准确确定其选择性.
通常只有以下两种条件之一成立时,才会出现这些情况:一种是条件所处的列没有适当的可用索引,另一种是条件涉及某些算术或函数表达式,因而过于复杂,使优化程序无法准确估计.
优化查询和删除性能和调优指南83有关语法、参数和示例,请参见《参考:构件块、表和过程》的"SQL语言元素"中的"用户提供的条件提示".
另请参见设置查询时间限制(第82页)设置查询优先级(第82页)设置查询优化选项(第83页)监控负载(第84页)监控负载使用存储过程来监控表、列和索引的使用情况,从而提高查询性能.
通常,创建索引的目的是为了提供优化元数据以及强制唯一性和主/外键关系.
但是,创建索引之后,DBA面临对索引带来的优势进行定量的挑战.
通常,表是在IQ主存储区中创建的,用于临时存储必须由多个连接访问或在较长时间内访问的数据.
您可能会遗忘这些表,然而它们却继续使用宝贵的磁盘空间.
此外,数据仓库中的表的数目过大且负载非常复杂,从而无法手动分析使用情况.
因此,未使用的索引和表会浪费磁盘空间,增加备份时间,并降低DML性能.
SybaseIQ提供了用于收集和分析已定义负载的统计信息的工具.
DBA可快速确定查询正在引用并应该由此而保留的数据库对象.
可删除未使用的表/列/索引,以便减少浪费的空间,提高DML性能,并缩短备份时间.
负载监控是使用存储过程实现的,这些存储过程控制对表、列和索引信息的详细使用情况的收集和报告.
这些过程是对INDEX_ADVISOR功能的补充,该功能生成相应消息,这些消息建议增加列索引以提高一个或多个查询的性能.
添加推荐的索引之后,即可跟踪其使用情况,以确定这些索引是否值得保留.
有关负载监控过程的详细信息,请参见《参考:构件块、表和过程》中的"sp_iqcolumnuse过程"、"sp_iqindexadvice过程"、"sp_iqindexuse过程"、"sp_iqtableuse过程"、"sp_iqunusedcolumn过程"、"sp_iqunusedindex过程"、"sp_iqunusedtable过程"和"sp_iqworkmon过程".
另请参见《参考:语句和选项》中的"INDEX_ADVISOR选项".
另请参见设置查询时间限制(第82页)设置查询优先级(第82页)设置查询优化选项(第83页)设置用户提供的条件提示(第83页)优化查询和删除84SybaseIQ优化删除操作SybaseIQ选择最佳算法来处理带有HG和WD索引的列的删除操作.
HG删除操作SybaseIQ在三种算法中选择任意一种算法来处理带有HG(High_Group)索引的列的删除操作.
当从非常少的组中删除行时,少量删除会表现出最佳性能.
当只删除1行或删除操作对带有HG索引的列使用相等谓词时,通常会选择它.
少量删除算法可以随机访问HG.
最坏情况下,I/O也会与访问的组数成正比.
当从若干组中删除行,而组数又足够少使得所访问的HG页面不多时,中型删除会表现出最佳性能.
中型删除算法可提供对HG的有序访问.
最坏情况下,I/O也不会超过索引页面的数量.
中型删除会因为对要删除的记录进行排序而产生新的开销.
从大量组中删除行时,大型删除会表现出最佳性能.
大型删除按顺序扫描HG,直至删除所有行为止.
最坏情况下,I/O也不会超过索引页面的数量.
大型删除也为并行操作,但其并行操作受索引内部结构和待删除记录所属组的分布的约束.
HG列上的范围谓词可用于缩小大型删除的扫描范围.
HG删除的开销删除开销模型将考虑多种因素,包括I/O开销、CPU开销、可用资源、索引元数据、并行处理和查询中可用的谓词.
在带HG、LF或enumeratedFP索引的列上指定谓词,会大大改善开销.
要让HG开销选择大型删除以外的算法,必须能够确定受删除影响的不同值(组)的数量.
离散值个数初始假定为索引组数和被删除行数中的较小者.
谓词可以提供更完善、更精确的离散值个数估计值.
当前开销不考虑范围谓词对大型删除的影响.
这会导致在采用大型删除将更快的情况下选择中型删除.
在这种情况下,您可以根据需要按照下一节所述方法强制使用大型删除算法.
使用HG删除性能选项您可以使用HG_DELETE_METHOD选项来控制HG删除的性能.
通过HG_DELETE_METHOD选项指定的参数值会强制使用指定的删除算法,如下所示:1=少量删除2=大型删除3=中型删除优化查询和删除性能和调优指南85DML_OPTIONS5=4(禁用推式删除谓词).
缺省值0-禁止将范围谓词推入HG大型删除.
有关HG_DELETE_METHOD数据库选项的详细信息,请参见《参考:语句和选项》中的"HG_DELETE_METHOD选项".
另请参见WD删除操作(第86页)TEXT删除操作(第87页)WD删除操作SybaseIQ在三种算法中选择任意一种算法来处理带有WD(Word)索引的列的删除操作.
当被删除行中几乎不包含任何非重复字时,并不需要访问很多WD页面,因此少量删除会表现出最佳性能.
WD少量删除算法执行WD有序访问.
最坏情况下,I/O也不会超过索引页面的数量.
少量删除包含对要删除记录中的文字和记录ID进行排序的开销.
WD中型删除是WD少量删除的变换形式,适用于与少量删除相同的条件,即,当被删除行几乎不包含任何非重复字时.
WD中型删除仅对要删除记录中的文字进行排序.
排序为并行操作,其并行操作受文字数和CPU可用线程数的约束.
对于文字索引,中型删除方法通常比少量删除更快.
当被删除行包含大量非重复文字时,需要访问索引中的大量"组",此时大型删除会表现出最佳性能.
大型删除按顺序扫描WD,直至删除所有行为止.
最坏情况下,I/O也不会超过索引页面的数量.
大型删除也为并行操作,但其并行操作受索引内部结构和待删除记录所属组的分布的约束.
WD删除的开销WD删除的开销模型会考虑很多因素,包括I/O开销、CPU开销、可用资源、索引元数据和并行.
您可以使用WD_DELETE_METHOD数据库选项来控制WD删除的性能.
使用WD删除性能选项通过WD_DELETE_METHOD选项指定的参数值会强制使用指定的删除算法,如下所示:0=开销模型选定的中型删除或大型删除1=少量删除2=大型删除3=中型删除有关WD_DELETE_METHOD数据库选项的详细信息,请参见《参考:语句和选项》的"数据库选项"中的"WD_DELETE_METHOD选项".
优化查询和删除86SybaseIQ另请参见HG删除操作(第85页)TEXT删除操作(第87页)TEXT删除操作SybaseIQ在两种算法中选择任意一种算法来处理带有TEXT索引的列的删除操作.
当被删除行中几乎不包含任何非重复字时,并不需要访问很多TEXT页面,因此少量删除会表现出最佳性能.
TEXT少量删除算法执行TEXT有序访问.
最坏情况下,I/O也不会超过索引页面的数量.
少量删除包含对要删除记录中的文字和记录ID进行排序的开销.
当被删除行包含大量非重复文字时,需要访问索引中的大量"组",此时大型删除会表现出最佳性能.
大型删除按顺序扫描TEXT,直至删除所有行为止.
最坏情况下,I/O也不会超过索引页面的数量.
大型删除也为并行操作,但其并行操作受索引内部结构和待删除记录所属组的分布的约束.
TEXT删除的开销TEXT删除的开销模型会考虑很多因素,包括I/O开销、CPU开销、可用资源、索引元数据和并行.
您可以使用TEXT_DELETE_METHOD数据库选项来控制TEXT删除的性能.
使用TEXT删除性能选项通过TEXT_DELETE_METHOD选项指定的参数值会强制使用指定的删除算法,如下所示:0=开销模型选定的中型删除或大型删除1=少量删除2=大型删除有关TEXT_DELETE_METHOD数据库选项的详细信息,请参见《SybaseIQ中的非结构化数据分析》的"TEXT索引和文本配置对象"中的"TEXT_DELETE_METHOD选项".
另请参见HG删除操作(第85页)WD删除操作(第86页)优化查询和删除性能和调优指南87优化查询和删除88SybaseIQ索引符号-append|-truncate65-bufalloc62-cache58-cache_by_type60-ch12-cl12-contention63-debug66-file_suffix60-gm11-interval65-io61-summary58-threads64AAGGREGATION_ALGORITHM_PREFERENCE83BBT_PREFETCH_MAX_MISS23表连接34折叠34CCACHE_PARTITIONS68CPU监控74监控(UNIX)70监控(Windows)70可用性20设置数目20统计信息51策略文件位置17查询83HG删除操作85ORDERBY,增强77TEXT删除操作87WD删除操作86查询处理81查询计划80查询树80查询优先级82负载监控84高速缓存方法78计划78控制83连接83评估选项79删除操作85时间限制82条件提示83限制按行21限制并发19优化34,83优化,删除选项85优化程序简化83子查询性能78查询,结构化77优化查询77查询处理监控84控制81,83优先级82查询服务器平衡负载25查询计划78评估选项79生成但不执行79使用80图形80查询计划,选项INDEX_ADVISOR79NOEXEC79QUERY_DETAIL79QUERY_PLAN79QUERY_PLAN_AFTER_RUN79QUERY_PLAN_AS_HTML79QUERY_PLAN_AS_HTML_DIRECTORY79QUERY_PLAN_TEXT_ACCESS79QUERY_PLAN_TEXT_CACHING79QUERY_TIMING79索引性能和调优指南89查询树80查询优化选项AGGREGATION_ALGORITHM_PREFERENCE83DEFAULT_HAVING_SELECTIVITY83DEFAULT_LIKE_MATCH_SELECTIVITY83DEFAULT_LIKE_RANGE_SELECTIVITY83EARLY_PREDICATE_EXECUTION83IN_SUBQUERY_PREFERENCE83INDEX_PREFERENCE83JOIN_ALGORITHM_PREFERENCE83MAX_HASH_ROWS83查询执行分布式25超线程服务器开关20磁盘空间Multiplex数据库25交换空间5磁盘条带化内部17存储I/O统计信息54存储过程查看分析数据30性能监控29DDEFAULT_HAVING_SELECTIVITY83DEFAULT_LIKE_MATCH_SELECTIVITY83DEFAULT_LIKE_RANGE_SELECTIVITY83大对象存储44低碎片堆12调优性能29动态性能监视器48抖动,缓冲区管理器HASH_PINNABLE_CACHE_PERCENT69HASH_THRASHING_PERCENT69要执行的操作69堆低碎片12多列索引38,77多线程性能影响14EEARLY_PREDICATE_EXECUTION83FFLATTEN_SUBQUERIES78FORCE_NO_SCROLL_CURSORS21FROM子句47非规范化原因46分布式查询处理25分区定义15分区表47分页管理5在UNIX上监控70在Windows上监控70服务器监控性能48负载监控84负载平衡在查询服务器间25G高速缓存IQ主缓冲区大小和临时缓冲区大小10另请参见缓冲区高速缓存56统计信息49预取页23高速缓存方法使用78管理,资源5缓冲区高速缓存3,7过程,系统sp_iqcolumnuse84sp_iqindexuse84sp_iqtableuse84sp_iqunusedcolumn84sp_iqunusedindex84sp_iqunusedtable84sp_iqworkmon84过程分析sa_procedure_profile34sa_procedure_profile_summary34过程30过程摘要32在InteractiveSQL中查看数据32过程分析信息ISQL33索引90SybaseIQsa_procedure_profile33HHASH_PINNABLE_CACHE_PERCENT69HASH_THRASHING_PERCENT69HG索引多列77HG索引装载37函数查看分析数据30缓冲区禁用操作系统缓冲12缓冲区高速缓存IQ主缓冲区和临时缓冲区10布局68大小要求9高速缓存大小10管理7监控器56监控器输出选项57监控清单71开销8块大小10临时9临时存储10内存,操作系统7内存,节省10内存,应用程序7内存使用8确定大小7设置,目录11设置大小10数据库访问,多用户8数据压缩10物理内存9线程堆栈8页大小10主9主数据库10注意事项9缓冲区高速缓存监控器56缓冲区高速缓存选项MAIN_CACHE_MEMORY_MB10TEMP_CACHE_MEMORY_MB10缓冲区管理器抖动69缓冲区管理器抖动HASH_PINNABLE_CACHE_PERCENT69HASH_THRASHING_PERCENT69要执行的操作69II/O性能建议15直接12IN_SUBQUERY_PREFERENCE83INDEX_ADVISOR79INDEX_PREFERENCE83IOS_FILE_CACHE_BUFFERING13IQPATH选项选择原始设备15IQUnique和Minimize_Storage42IQ存储缓冲区高速缓存大小10IQ_USE_DIRECTIO13iqgovern开关限制查询以提高性能19IQGOVERN_MAX_PRIORITY选项82IQGOVERN_PRIORITY82IQMSG日志设置最大大小19iqnumbercpus设置CPU数20iqwmem开关12JJAVA_HEAP_SIZE14JOIN_ALGORITHM_PREFERENCE83JOIN_PREFERENCE47计划查询78查询计划80监控事务状态48监控负载84监控器设置输出文件位置57监控器输出选项-append|-truncate65-bufalloc62-cache58-cache_by_type60-contention63-debug66-file_suffix60索引性能和调优指南91-interval65-io61-summary58-threads64简单索引选择标准36键外键40主键40交换磁盘空间要求5监控6交换文件对性能的影响5结构化查询77进程增加12进程线程模型14K开销缓冲区高速缓存8空值42块大小与IQ页大小的关系10LLONGVARCHAR和LONGVARBINARY43连接连接请求11统计信息52限制语句23连接列39连接索引性能影响34连系内存12列大量空值77临时表45临时存储缓冲区高速缓存大小10逻辑服务器25MMAIN_CACHE_MEMORY_MB10MAX_CURSOR_COUNT22MAX_HASH_ROWS83MAX_QUERY_TIME选项82MAX_STATEMENT_COUNT23monitorIQUTILITIESsyntax57startingandstopping57Multiplex性能监视器48Multiplex数据库磁盘空间25内存6Multiplex资源动态调整25目录存储文件增长26目录缓冲区高速缓存设置11NNOEXEC79内部条带化17内存IOS_FILE_CACHE_BUFFERING13IQ_USE_DIRECTIO13JAVA_HEAP_SIZE14Multiplex数据库6操作系统7多线程14服务器6缓冲区高速缓存7缓冲区高速缓存大小7交换6进程线程模型14开销8连接请求11连系12另请参见缓冲区高速缓存10平衡I/O15启动选项11启用Java的数据库14轻量进程14数据库访问,多用户8碎片12特定于平台的内存选项12为用户优化11文件系统缓冲13线程堆栈8应用程序7优化5索引92SybaseIQ原始分区8增加5内存,节省页大小10内存使用其它8内存使用统计信息49OORDERBY查询性能77ORDERBY子句77OS_FILE_CACHE_BUFFERING13OS_FILE_CACHE_BUFFERING_TEMPDB13PPREFETCH_BUFFER_LIMIT23平衡I/O策略文件位置17内部条带化17原始I/O15评估选项查询79Q启动选项11-c11-ch11-cl11-gm11-gn11-iqgovern11-iqmt11轻型进程14清理程序线程68请求统计信息53RRAWDETECT磁盘条带化选项17Ssa_procedure_profile33SETOPTION14sp_iqcolumnuse84sp_iqindexuse84sp_iqtableuse84sp_iqunusedcolumn84sp_iqunusedindex84sp_iqunusedtable84sp_iqworkmon84SUBQUERY_CACHING_PREFERENCE78SUBQUERY_FLATTENING_PERCENT78SUBQUERY_FLATTENING_PREFERENCE78SWEEPER_THREADS_PERCENT68删除操作HG85TEXT87WD86优化85使用典型24使用索引的时间和位置35事件查看分析数据30事务日志关于18截断18停止的数据库18脱机数据库18事务统计信息53事务状态监控48适当确定数据类型的大小41输出选项缓冲区高速缓存监控器57输出选项,监控器65-bufalloc62-cache58-cache_by_type60-contention63-debug66-file_suffix60-interval65-io61-summary58-threads64数据库对象分析31对象分析信息31非规范化以提高性能46分析31索引性能和调优指南93分析设置31分析统计信息30管理26过程30过程分析30数据库访问多用户8数据库空间使用情况统计信息55限制使用20数据类型LONGVARCHAR和LONGVARBINARY43空值42适当确定数据类型的大小41无符号数据类型43数据模型推荐34HG索引装载37IQUnique和Minimize_Storage42LONGVARCHAR和LONGVARBINARY43大对象存储44多列索引38简单索引选择标准36空值42连接列39临时表45使用索引的时间和位置35适当确定数据类型的大小41外键40无符号数据类型43主键40数据压缩页大小10顺序磁盘I/O17碎片12索引HG34,77HG索引装载37LF34多列77多列索引38简单索引选择标准36类型34使用索引的时间和位置35索引顾问34选择34TTEMP_CACHE_MEMORY_MB10条件用户提供的83统计信息动态48吞吐量3UUNIONALL规则47视图47视图性能48装载46USER_RESOURCE_RESERVATION24Vvmstat命令监控UNIX上的缓冲区高速缓存70WWASH_AREA_BUFFERS_PERCENT68WD删除操作86外键40网络大型数据传输27设置27网络27性能27性能建议27网络统计信息55文件定位以达到最佳性能17文件系统缓冲13无符号数据类型43物理内存缓冲区高速缓存9X系统触发器查看分析数据30系统过程sp_iqcolumnuse84索引94SybaseIQsp_iqindexuse84sp_iqtableuse84sp_iqunusedcolumn84sp_iqunusedindex84sp_iqunusedtable84sp_iqworkmon84系统资源管理5连接11内存5启动选项11性能注意事项3资源使用选项19下推连接47线程缓冲区高速缓存68监控64线程堆栈内存8线程统计信息51响应时间3消息日志SybaseIQ19性能定义3动态性能监视器48多用户23监控56监控和调优29平衡I/O15设计3数据库过程分析信息30选择正确索引类型34用iqgovern限制查询19注意事项3子查询78性能监视器服务器级48虚拟内存碎片12选项AGGREGATION_ALGORITHM_PREFERENCE83BT_PREFETCH_MAX_MISS23CACHE_PARTITIONS68DEFAULT_HAVING_SELECTIVITY83DEFAULT_LIKE_MATCH_SELECTIVITY83DEFAULT_LIKE_RANGE_SELECTIVITY83EARLY_PREDICATE_EXECUTION83FLATTEN_SUBQUERIES78HASH_PINNABLE_CACHE_PERCENT69HASH_THRASHING_PERCENT69IN_SUBQUERY_PREFERENCE83INDEX_ADVISOR79INDEX_PREFERENCE83IQ_USE_DIRECTIO13JAVA_HEAP_SIZE14JOIN_ALGORITHM_PREFERENCE83JOIN_PREFERENCE47MAIN_CACHE_MEMORY_MB10MAX_HASH_ROWS83MAX_STATEMENT_COUNT23NOEXEC79OS_FILE_CACHE_BUFFERING13OS_FILE_CACHE_BUFFERING_TEMPDB13PREFETCH_BUFFER_LIMIT23QUERY_DETAIL79QUERY_PLAN79QUERY_PLAN_AFTER_RUN79QUERY_PLAN_AS_HTML79QUERY_PLAN_AS_HTML_DIRECTORY79QUERY_PLAN_TEXT_ACCESS79QUERY_PLAN_TEXT_CACHING79QUERY_TIMING79SETOPTION14SUBQUERY_CACHING_PREFERENCE78SUBQUERY_FLATTENING_PERCENT78SUBQUERY_FLATTENING_PREFERENCE78SWEEPER_THREADS_PERCENT68TEMP_CACHE_MEMORY_MB10USER_RESOURCE_RESERVATION24WASH_AREA_BUFFERS_PERCENT68选项,查询计划INDEX_ADVISOR79NOEXEC79QUERY_DETAIL79QUERY_PLAN79QUERY_PLAN_AFTER_RUN79QUERY_PLAN_AS_HTML79QUERY_PLAN_AS_HTML_DIRECTORY79QUERY_PLAN_TEXT_ACCESS79索引性能和调优指南95QUERY_PLAN_TEXT_CACHING79QUERY_TIMING79选项,查询优化AGGREGATION_ALGORITHM_PREFERENCE83DEFAULT_HAVING_SELECTIVITY83DEFAULT_LIKE_MATCH_SELECTIVITY83DEFAULT_LIKE_RANGE_SELECTIVITY83EARLY_PREDICATE_EXECUTION83IN_SUBQUERY_PREFERENCE83INDEX_PREFERENCE83JOIN_ALGORITHM_PREFERENCE83MAX_HASH_ROWS83选项,缓冲区高速缓存MAIN_CACHE_MEMORY_MB10TEMP_CACHE_MEMORY_MB10选项值截断78Y页大小减少内存10块大小10内存,节省10确定10数据压缩10用户提供的条件查询83优化查询34,77游标强制为非滚动游标21限制数目22语句限制语句23预取的高速缓存页23预取的行控制24原始分区内存使用8文件系统8原始设备对性能的影响15Z在InteractiveSQL中查看过程分析信息32直接I/O12主键40主数据库缓冲区高速缓存大小10资源Multiplex25资源管理缓冲区高速缓存7资源使用Multiplex磁盘空间25负载平衡25使用UNIONALL装载46索引34提高25网络性能27资源使用选项19典型使用24强制为非滚动游标21设置可用CPU20限制按行查询21限制并发查询19限制数据库空间使用20限制游标22限制语句23预取的行24预取高速缓存页23子查询提高性能78展平78子查询性能78子查询展平78索引96SybaseIQ

香港2GB内存DIYVM2核(¥50月)香港沙田CN2云服务器

DiyVM 香港沙田机房,也是采用的CN2优化线路,目前也有入手且在使用中,我个人感觉如果中文业务需要用到的话虽然日本机房也是CN2,但是线路的稳定性不如香港机房,所以我们在这篇文章中亲测看看香港机房,然后对比之前看到的日本机房。香港机房的配置信息。CPU内存 硬盘带宽IP价格购买地址2核2G50G2M1¥50/月选择方案4核4G60G3M1¥100/月选择方案4核8G70G3M4¥200/月选择...

Megalayer(159元 )年付CN2优化带宽VPS

Megalayer 商家我们还算是比较熟悉的,商家主要业务方向是CN2优化带宽、国际BGP和全向带宽的独立服务器和站群服务器,且后来也有增加云服务器(VPS主机)业务。这次中秋节促销活动期间,有发布促销活动,这次活动力度认为还是比较大的,有提供香港、美国、菲律宾的年付VPS主机,CN2优化方案线路的低至年付159元。这次活动截止到10月30日,如果我们有需要的话可以选择。第一、特价限量年付VPS主...

RackNerd提供四款高配美国服务器促销活动低至月$189

RackNerd 商家给的感觉就是一直蹭节日热点,然后时不时通过修改配置结构不断的提供低价年付的VPS主机,不过他们家还是在做事的,这么两年多的发展,居然已经有新增至十几个数据中心,而且产品线发展也是比较丰富。比如也有独立服务器业务,不过在他们轮番的低价年付VPS主机活动下,他们的服务器估摸着销路不是太好的。这里,今天有看到RackNerd商家的独立服务器业务有促销。这次提供美国多个机房的高配独立...

w7系统怎么调烟雾头为你推荐
在线漏洞检测网站检测工具,谁有?sourcegear请问高手这是什么“dynamsoft sourceanywhere for vss”,做项目的时候用的,我是新手不知道这是干什么。网店推广网站怎么免费推广淘宝店铺?中小企业信息化信息化为中小企业发展带来了哪些机遇彩信中心短信中心号码是多少iphone越狱后怎么恢复苹果越狱后如何恢复蘑菇街美丽说蘑菇街、美丽说这类网站前期是怎么推广的?bt封杀BT下载可以封杀迅雷吗?什么原理?能破吗?商标注册查询官网怎么查商标有没有注册分词技术什么是seo分词技术
域名估价 移动服务器租用 免费注册网站域名 域名备案号查询 天猫双十一抢红包 湖南服务器托管 最好的空间 七夕促销 可外链相册 1g空间 中国网通测速 linux使用教程 域名dns 带宽租赁 谷歌台湾 免费蓝钻 广东主机托管 腾讯网盘 腾讯数据库 国外免费网盘 更多