缓冲区删除windows.old

删除windows.old  时间:2021-03-28  阅读:()
性能和调优指南SybaseIQ15.
1文档ID:DC00953-01-1510-01最后修订日期:2009年7月版权所有2009Sybase,Inc.
保留所有权利.
除非新版本或技术声明中另有说明,否则本出版物适用于Sybase软件及所有后续版本.
本文档中的信息如有更改,恕不另行通知.
本出版物中描述的软件按许可协议提供,其使用或复制必须符合许可条款.
要订购其它文档,美国和加拿大的客户请拨打客户服务部门电话(800)685-8225或发传真至(617)229-9845.
持有美国许可协议的其它国家/地区的客户可通过上述传真号码与客户服务部门联系.
所有其它国际客户请与Sybase子公司或当地分销商联系.
仅在软件的定期发布日期提供升级内容.
未经Sybase,Inc.
的事先书面许可,不得以任何形式、任何手段(电子的、机械的、手工的、光学的或其它手段)复制、传播或翻译本手册的任何部分.
可在位于http://www.
sybase.
com/detailid=1011207上的"Sybase商标页面"中查看Sybase商标.
Sybase和所列标记均为Sybase,Inc.
的商标.
表示已在美国注册.
Java和基于Java的所有标记都是SunMicrosystems,Inc.
在美国和其它国家/地区的商标或注册商标.
Unicode和Unicode徽标是Unicode,Inc.
的注册商标.
本书中提到的所有其它公司和产品名均可能是与之相关的相应公司的商标.
美国政府使用、复制或公开本软件受DFARS52.
227-7013中的附属条款(c)(1)(ii)(针对美国国防部)和FAR52.
227-19(a)-(d)(针对美国非军事机构)条款的限制.
Sybase,Inc.
,OneSybaseDrive,Dublin,CA94568.
目录性能和调优指南iii关于本手册.
vii第1章从数据库表中选择数据1前提条件.
2查看表信息2查询结果排序.
4选择列和行5使用搜索条件.
6比较查询中的日期.
7WHERE子句中的复合搜索条件7搜索条件中的模式匹配8通过发音匹配行9对搜索条件使用快捷方式.
9获取集合数据.
10使用集合函数获取分组数据11限制组.
11改善小计计算.
12获取分析数据.
15消除重复行16第2章连接表19使用矢量积连接表20限制连接.
20表的关联方式.
21主键标识符键.
22表关系的外键.
22连接运算符22使用键连接来连接表23使用自然连接来连接表24使用即席连接与连接索引.
25连接和数据类型25支持存储或数据库之间的连接26目录ivSybaseIQ查询远程异构数据库.
27用子查询替换连接28第3章优化查询和删除31实现结构化查询提示.
32GROUPBY与UNIONALL配合使用时对查询性能的影响.
.
.
.
.
32增强ORDERBY查询性能.
34增强了查询内的并行度35改进了子查询性能.
35使用高速缓存方法.
36导致处理所按照的条件SQLAnywhere36计划查询.
36查询评估选项.
37查询树.
38使用查询计划.
39控制查询处理.
40设置查询时间限制.
40设置查询优先级40设置查询优化选项.
41设置用户提供的条件提示.
42监控工作负荷.
42优化删除操作.
43HG删除操作.
43WD删除操作.
44第4章管理系统资源47性能术语简介.
48性能设计.
48内存使用概述.
48分页增加可用内存.
49监控交换的实用程序.
49服务器内存49管理缓冲区高速缓存.
50确定缓冲区高速缓存大小.
51设置缓冲区高速缓存大小.
55指定页大小56节省内存.
57为大量用户进行优化.
58特定于平台的内存选项60获取更多内存的其它方式.
62进程线程模型.
63线程不足错误.
63用于管理线程使用的SybaseIQ选项.
63目录性能和调优指南v平衡I/O64原始I/O(在UNIX操作系统上)64使用磁盘条带化64内部条带化66使用多个文件.
67策略文件位置.
67用于插入、删除和同步的工作空间70设置保留空间选项.
70用于调优资源使用的选项.
70限制并发查询.
71设置可用CPU数.
71限制查询使用的临时dbspace71限制按行返回的查询.
72强制游标为非滚动游标72限制游标数72限制语句数73预取高速缓存页73针对典型使用进行优化73控制预取行数.
73改进资源使用的其它方式.
74管理Multiplex数据库中的磁盘空间.
74查询服务器间的负载平衡.
74限制数据库访问74磁盘高速缓存.
75索引提示.
75选择正确索引类型.
75使用连接索引.
76为删除留出足够磁盘空间.
76管理数据库大小和结构76管理数据库大小77控制索引碎片.
77使Catalog文件增长最少.
77非规范化以提高性能.
78非规范化有风险78非规范化的缺点78非规范化的性能优势.
79决定非规范化.
79使用UNIONALL视图以便更快装载80优化引用UNIONALL视图的查询80管理UNIONALL视图性能.
81改进的大型单(事实)表装载.
82网络性能.
82改进大型数据传输.
82隔离重网络负荷用户.
83目录viSybaseIQ将少量数据放在较小包中.
84将大量数据放在较大包中.
84在服务器级处理84第5章监控和调优性能85查看SybaseIQ环境86监控性能统计信息.
86使用存储过程获取信息93分析数据库过程93监控缓冲区高速缓存.
101启动缓冲区高速缓存监控器102在监控器运行时检查结果.
107停止缓冲区高速缓存监控器107检查并保存监控器结果107监控器结果的示例.
108缓冲区高速缓存结构.
112避免缓冲区管理器抖动113监控Windows系统上的分页.
114监控UNIX系统上的分页.
114缓冲区高速缓存监控清单.
116监控CPU使用的系统实用程序.
119第6章在32位Windows系统上调优服务器121一般性能准则.
122最大化吞吐量.
122防止内存过度分配.
122监控物理内存.
122文件系统.
123监控性能.
123监控虚拟地址空间和工作集124监控页面错误.
124使用NTFS高速缓存125对插入和查询进行调优125合理调优的插入操作的特征125对查询进行调优126对备份操作进行调优.
126索引129性能和调优指南vii关于本手册主题本书介绍了性能和调优建议.
读者本指南面向需要了解性能问题的系统管理员和数据库管理员.
他们熟悉关系数据库系统并具有SybaseIQ产品的入门级用户经验.
请将本指南与文档集中的其它手册结合使用.
如何使用本手册下表列出了满足特定兴趣或需要的章节.
阅读以下章节第1章"从数据库表中选择数据"介绍了基本查询构建.
第2章"连接表"介绍了如何从多个数据库表中检索信息.
第3章"优化查询和删除"介绍了如何提高查询性能.
第4章"管理系统资源"介绍了如何管理内存、磁盘I/O和CPU.
第5章"监控和调优性能"介绍了用于确定系统是否正在对可用资源进行最佳利用的工具.
第6章"在32位Windows系统上调优服务器"介绍了Windows性能和调优.
相关文档SybaseIQ15.
1文档集包括:《发行公告》提供了有关产品和文档的最新更改的信息.
《安装和配置指南》从平台角度出发说明如何针对特定平台安装、迁移到新版本以及配置SybaseIQ.
《SybaseIQ中的高级安全性》涉及如何在SybaseIQ数据存储库中使用用户加密列.
需要有单独的许可证才能安装此产品选件.
《错误消息》列出了由Sybase错误代码、SQLCode和SQLState引用的SybaseIQ错误消息以及SQL预处理器错误和警告.
《IMSL数字库用户指南第二卷(共两卷):CStat库》包含IMSLCStatLibrary时序C函数的简要说明.
《SybaseIQ简介》包括针对不熟悉SybaseIQ或SybaseCentral数据库管理工具的用户的实践练习.
《SybaseIQ中的大对象管理》说明如何在SybaseIQ数据存储库中存储和检索二进制大对象(BLOB)和字符大对象(CLOB).
需要有单独的许可证才能安装此产品选件.
viiiSybaseIQ《SybaseIQ15.
0中的新增功能》说明了15.
0版的新增功能和行为更改.
《SybaseIQ15.
1新增功能摘要》总结了当前版本的新增功能和行为更改.
《快速入门》列出了生成并查询SybaseIQ提供的演示数据库以验证SybaseIQ软件安装的步骤.
其中包括有关将演示数据库转换为Multiplex数据库的信息.
《参考手册》—包括SybaseIQ的两个参考指南:《参考:构件块、表和过程》介绍了SybaseIQ支持的SQL、存储过程、数据类型和系统表.
《参考:语句和选项》介绍了SybaseIQ支持的SQL语句和选项.
《系统管理指南》—包括两卷:《系统管理指南:第一卷》介绍了启动、连接、数据库创建、填充和编制索引、版本控制、归类、系统备份和恢复、故障排除和数据库修复.
《系统管理指南:第二卷》介绍了编写和运行过程和批处理、使用OLAP编程、访问远程数据、将IQ设置为OpenServer、调度和事件处理、使用XML编程以及调试.
《用户定义的函数指南》提供有关用户定义的函数、这些函数的参数以及可能的使用情形的信息.
《使用SybaseIQMultiplex》说明了如何使用用于管理跨多个节点的大量查询负载的Multiplex功能.
《实用程序指南》提供了SybaseIQ实用程序参考资料,如可用的语法、参数和选项.
SybaseIQ和SQLAnywhere因为SybaseIQ是SQLAnywhereServer的扩展(即SQLAnywhere软件包的一个组件),所以SybaseIQ支持许多与SQLAnywhereServer相同的功能.
如果适用,在IQ文档集中会指示您参见SQLAnywhere文档.
SQLAnywhere的文档包括:《SQLAnywhereServer—数据库管理》介绍如何运行、管理和配置SQLAnywhere数据库.
它介绍数据库连接、数据库服务器、数据库文件、备份过程、安全性、高可用性和使用ReplicationServer复制以及管理实用程序和选项.
关于本手册性能和调优指南ix《SQLAnywhereServer—编程》介绍如何使用C、C++、Java、PHP、Perl、Python和.
NET编程语言(如VisualBasic和VisualC#)生成和配置数据库应用程序.
本手册还介绍诸如ADO.
NET和ODBC之类的各种编程接口.
《SQLAnywhereServer—SQL参考》提供系统过程的参考信息和目录(系统表和视图).
它还提供SQL语言的SQLAnywhere实现的说明(搜索条件、语法、数据类型和函数).
《SQLAnywhereServer—SQL用法》介绍如何设计和创建数据库;如何导入、导出和修改数据;如何检索数据以及如何生成存储过程和触发器.
此外,您还可以参见位于http://www.
sybase.
com/support/manuals/上的"ProductManuals"(产品手册)的SQLAnywhere11.
01集合中以及位于http://dcx.
sybase.
com/dcx_home.
php上的"DocCommentXchange"中的SQLAnywhere文档.
Sybase软件资产管理(SySAM)的文档包括:《Sybase软件资产管理(SySAM)2》介绍资产管理概念,并提供有关建立和管理SySAM2许可证的说明.
《SySAM2快速入门指南》介绍如何启动和运行已启用SySAM的Sybase产品.
《FLEXnetLicensing最终用户指南》介绍针对管理员和最终用户的FLEXnetLicensing,并介绍如何从Sybase中使用属于标准FLEXnetLicensing分发工具包的工具.
其它信息来源使用SybaseGettingStartedCD、SyBooksCD和SybaseProductManualsWeb站点可以了解有关产品的详细信息:GettingStartedCD包含PDF格式的发行公告和安装指南,也可能包含SyBooksCD中未收纳的其它文档或更新信息.
GettingStartedCD随软件一起提供.
若要阅读或打印GettingStartedCD上的文档,需要使用AdobeAcrobatReader,该软件可以通过CD上提供的链接从AdobeWeb站点免费下载.
SyBooksCD含有产品手册,随软件一起提供.
基于Eclipse的SyBooks浏览器使您能够阅读以基于HTML的简单易用格式编写的手册.
有些文档可能是以PDF格式提供的,您可以通过SyBooksCD上的PDF目录访问这些文档.
若要阅读或打印PDF文件,需要使用AdobeAcrobatReader.
有关安装和启动SyBooks的说明,请参见GettingStartedCD上的《SyBooks安装指南》或SyBooksCD上的README.
txt文件.
xSybaseIQSybaseProductManualsWeb站点是SyBooksCD的联机版本,您可以使用标准Web浏览器进行访问.
除了产品手册之外,您还可以找到"EBFs/Maintenance"(EBF/维护)、"TechnicalDocuments"(技术文档)、"CaseManagement"(案例管理)、"SolvedCases"(解决的案例)、"Newsgroups"(新闻组)和"SybaseDeveloperNetwork"(Sybase开发人员网络)的链接.
若要访问SybaseProductManualsWeb站点,请转至位于http://www.
sybase.
com/support/manuals/上的"ProductManuals"(产品手册).
Web上的Sybase认证SybaseWeb站点上的技术文档经常更新.
查找有关产品认证的最新信息1将Web浏览器定位到位于http://certification.
sybase.
com/ucr/search.
do上的"TechnicalDocuments"(技术文档).
2在"SearchbyBaseProduct"(按基本产品搜索)下选择产品系列和产品,或在"SearchbyPlatform"(按平台搜索)下选择平台和产品.
3选择"Search"(搜索)以显示所选项目的可用性和认证报告.
查找有关组件认证的最新信息1将Web浏览器定位到位于http://certification.
sybase.
com/上的"AvailabilityandCertificationReports"(可用性和认证报告).
2在"SearchbyBaseProduct"(按基本产品搜索)下选择产品系列和产品,或在"SearchbyPlatform"(按平台搜索)下选择平台和产品.
3选择"Search"(搜索)以显示所选项目的可用性和认证报告.
创建SybaseWeb站点(包括支持页)的个性化视图设置MySybase配置文件.
MySybase是一项免费服务,它允许您创建SybaseWeb页的个性化视图.
1将Web浏览器定位到位于http://www.
sybase.
com/support/techdocs/上的"TechnicalDocuments"(技术文档).
2单击"MySybase"并创建MySybase配置文件.
SybaseEBF和软件维护查找有关EBF和软件维护的最新信息1将Web浏览器定位到位于http://www.
sybase.
com/support上的"SybaseSupport"(Sybase支持)页面.
关于本手册性能和调优指南xi2选择"EBFs/Maintenance"(EBF/维护).
如果出现提示,请输入您的MySybase用户名和口令.
3选择产品.
4指定时间范围并单击"Go"(执行).
随即显示一个EBF/维护版本的列表.
挂锁图标表示您没有注册为"TechnicalSupportContact"(技术支持联系人),因此您没有某些EBF/维护版本的下载授权.
如果您尚未注册,但拥有Sybase代表提供的或通过支持合同获得的有效信息,请单击"EditRoles"(编辑角色)将"TechnicalSupportContact"(技术支持联系人)角色添加到MySybase配置文件中.
5单击"Info"(信息)图标显示"EBF/Maintenance"(EBF/维护)报告,或者单击产品说明下载软件.
语法约定本文档在语法说明中使用以下约定:关键字SQL关键字以大写字母显示.
但SQL关键字不区分大小写,所以您在输入时可以不考虑大小写问题;输入SELECT、Select和select的效果完全相同.
占位符必须以相应的标识符或表达式替代的项显示为斜体.
续行符以省略号(.
.
.
)开头的行为上一行语句的继续.
重复项重复项列表以相应列表元素后跟省略号(.
.
.
)的形式表示.
允许指定一个或多个列表元素.
如果指定了多个元素,则必须用逗号将它们隔开.
可选部分语句的可选部分以中括号括起.
例如:RELEASESAVEPOINT[savepoint-name]中括号表示savepoint-name是可选的.
不要键入括号.
选项如果在一个项列表中只能选择其中的一项或者不能选择任何一项,则这些项以竖线分隔,且整个列表以中括号括起.
例如:[ASC|DESC]中括号表示可以选择ASC或DESC,或两者都不选.
不要键入括号.
替代方法如果必须选择多个选项中的一个选项,则将备选选项以大括号括起.
例如:QUOTES{ON|OFF}大括号表示必须包括ON或OFF.
不要键入括号.
xiiSybaseIQ排版约定表1列出了本文档中采用的排版约定.
表1:排版约定演示数据库SybaseIQ包括用于创建演示数据库(iqdemo.
db)的脚本.
本文档中的许多查询和代码示例都将该演示数据库用作数据源.
该演示数据库包含一家小型公司的内部信息(职员、部门和财务数据)、产品信息(产品)以及销售信息(销售订单、客户和联系人).
请查看适用于所用平台的SybaseIQ安装指南或向您的系统管理员了解有关该演示数据库的详细信息.
易用特点此文档提供专门针对易用性编写的HTML版本.
可以利用适应性技术(如屏幕阅读器)浏览HTML,也可以用屏幕放大器查看.
SybaseIQ15.
1和HTML文档已经过了测试,符合美国政府"第508条易用性"的要求.
符合"第508节"的文档一般也符合非美国的易用性原则,如针对Web站点的WorldWideWeb协会(W3C)原则.
配置辅助工具您可能需要对辅助工具进行配置以实现最优化.
某些屏幕阅读器按照大小写来辨别文本,例如将"ALLUPPERCASETEXT"看作首字母的缩写,而将"MixedCaseText"看作单词.
您可能会发现按语法约定来配置工具更为方便实用.
有关使用屏幕阅读器的信息,请参考您的工具的文档.
有关Sybase如何支持易用性的信息,请参见位于http://www.
sybase.
com/accessibility上的"SybaseAccessibility"(Sybase易用性).
SybaseAccessibility站点包含指向"第508条"和W3C标准有关信息的链接.
如果需要帮助对于购买了支持合同的每项Sybase安装,均指定了一位或多位人员负责与Sybase技术支持部门联系.
如果您通过手册或联机帮助不能解决问题,请让指定的人员与您所在区域的Sybase技术支持部门或Sybase子公司联系.
项说明代码SQL和程序代码以monospaced(固定宽度)字体显示.
用户输入用户输入的文本将以monospaced(固定宽度)字体显示.
强调强调字以斜体显示.
文件名文件名以斜体显示.
数据库对象数据库对象(如表和过程)名在印刷版本中以粗体sansserif字型显示,在联机版本中以斜体显示.
性能和调优指南1第1章从数据库表中选择数据关于本章本章概述了基本查询的构建并建议对产品设计的利用加以改进.
在本教程中,您将查看表内容,对查询结果排序,选择列和行以及使用搜索条件优化查询.
有关高级查询性能的建议,请参见第3章"优化查询和删除".
目录主题页码前提条件2查看表信息2查询结果排序4选择列和行5使用搜索条件6获取集合数据10获取分析数据15消除重复行16前提条件2SybaseIQ前提条件如果您使用图形前端工具而不是InteractiveSQL查询数据库,该工具可能允许您查看其生成的SQL语法.
例如,在InfoMaker中,您可以通过选择"表"绘制工具栏上的"SQL语法"按钮来查看SQL语句.
本教程介绍用于从数据库检索信息的SELECT语句.
由于SELECT语句向数据库服务器询问有关数据库的信息,因此这些语句通常称为查询.
注释SELECT语句属于通用命令.
SELECT语句在应用程序中可能会变得非常复杂,从大型数据库中检索非常具体的信息.
本教程仅使用简单的SELECT语句:更加高级的查询将在以后的教程中进行介绍.
有关select语句的完整语法的详细信息,请参见《参考:语句和选项》第1章"SQL语句"中的SELECT语句.
理想情况下,在学完本教程的课程时,您应该在计算机上运行SybaseIQ软件.
本教程假定您已启动了InteractiveSQL并已连接到样本数据库.
如果您尚未完成这些操作,请参见《实用程序指南》中的第2章"使用InteractiveSQL(dbisql)".
查看表信息在本节中,您将查看Employees表中的数据.
您在本教程中所使用的样本数据库即为《SybaseIQ简介》中所用的虚构公司.
该数据库包含有关雇员、部门、销售订单等方面的信息.
所有信息分布在若干个表中.
列出表在《SybaseIQ简介》中,您已了解到如何通过打开SybaseCentral中的"表"文件夹显示表的列表.
您还可以使用系统存储过程sp_iqtable从InteractiveSQL列出用户表.
系统存储过程是在SybaseIQ中作为存储过程实现的系统函数.
在"SQL语句"窗口中,键入sp_iqtable以运行具有相同名称的系统存储过程.
有关此系统存储过程及其它系统存储过程的完整详细信息,请参见《参考:构件块、表和过程》中的第7章"系统过程".
使用SELECT语句在这一课中,您将查看数据库中的一个表.
所使用的命令将查看名为Employees的表中的任何内容.
第1章从数据库表中选择数据性能和调优指南3执行命令:SELECT*FROMEmployees星号是该表中所有列的简写形式.
SELECT语句会检索Employees表中的所有行和列,而"InteractiveSQL结果"窗口则列出满足以下条件的行和列:Employees表中包含许多分布在多个列中的行.
每列都有一个名称,例如Surname或EmployeeID.
针对公司的每个雇员都有一行,每行在每列中都有一个值.
例如,EmployeeID为102的雇员为FranWhitney,其经理的ManagerID为501.
您还会在"InteractiveSQL消息"窗口中看到一些信息.
稍后将对这些信息进行说明.
注释本文档中显示查询结果的表可能只包含查询返回的某些数据.
具有省略值的列和行表示附加查询结果.
区分大小写即使实际表名均为小写字母,但显示的表名Employees以大写字母E开头.
在其字符串比较中,可以将SybaseIQ数据库创建为区分大小写(缺省值)或不区分大小写,但在它们作为标识符使用时总是不区分大小写.
注释使用CREATEDATABASE限定符CASEIGNORE创建本书中的示例时不区分大小写.
缺省值为CASERESPECT,它可提供更好的性能.
有关创建数据库的信息,请参见《系统管理指南:第一卷》中的第5章"使用数据库对象".
您可以键入select或Select代替SELECT.
SybaseIQ允许您以大写形式、小写形式或这两种形式的任意组合键入关键字.
在本手册中,SQL关键字通常使用大写字母.
EmployeeIDManagerIDSurnameGivenNameDepartmentID.
.
.
102501WhitneyFran100.
.
.
105501CobbMatthew100.
.
.
129902ChinPhilip200.
.
.
1481293JordanJulie300.
.
.
160501BreaultRobert100.
.
.
1841576EspinozaMelissa400.
.
.
191703BertrandJeannette500.
.
.
195902DillMarc200.
.
.
2071576FrancisJane400.
.
.
查询结果排序4SybaseIQ对InteractiveSQL环境的操作和InteractiveSQL的使用特定于操作系统.
有关如何滚动浏览数据以及操作InteractiveSQL环境的信息,请参见《实用程序指南》中的第2章"使用InteractiveSQL(dbisql)".
查询结果排序在本节中,您将向SELECT语句添加ORDERBY子句,以按字母顺序或数值顺序显示结果.
除非另有要求,否则SybaseIQ不会以特定顺序显示表中的行.
通常,以一种更有意义的顺序查看表中的行将十分有用.
例如,您可能要按字母顺序查看雇员.
按字母顺序列出雇员以下示例显示以何种方式向SELECT语句添加ORDERBY子句可导致以字母顺序检索结果.
SELECT*FROMEmployeesORDERBYSurname注意子句的顺序十分重要.
ORDERBY子句必须在FROM子句和SELECT子句之后.
注释如果省略FROM子句,或者查询中的所有表都在SYSTEMdbspace中,则查询将由SQLAnywhere而非SybaseIQ处理且行为可能不同,特别是在关于语法和语义限制和选项设置的影响方面.
有关可能应用到处理的规则,请参见SQLAnywhere文档.
如果您的查询不需要FROM子句,则可以通过添加FROMiq_dummy子句强制SybaseIQ处理查询,在这种情况下,iq_dummy表示在数据库中创建的包含一行和一列的表.
EmployeeIDManagerIDSurnameGivenNameDepartmentID.
.
.
17511576AhmedAlex400.
.
.
1013703BarkerJoseph500.
.
.
5911576BarlettaIrene400.
.
.
191703BertrandJeannette500.
.
.
13361293BigelowJanet300.
.
.
10621576BlaikieBarbara400.
.
.
750703BraunJane500.
.
.
160501BreaultRobert100.
.
.
11911576BucceriMatthew400.
.
.
第1章从数据库表中选择数据性能和调优指南5选择列和行通常,您只关注表中的列.
例如,要为雇员制作生日卡,您可能希望看到Surname、DepartmentID和BirthDate列.
列出每个雇员的姓氏、部门和出生日期在本节中,您将选择每个雇员的出生日期、姓氏和部门ID.
键入以下命令:SELECTSurname,DepartmentID,BirthDateFROMEmployees对列进行重新排列这三个列按照您在SELECT命令中键入的顺序进行显示.
如果您要对列进行重新排列,只要在该命令中更改列名的顺序即可.
例如,若要将BirthDate列放在左边,请使用以下命令:SELECTBirthDate,Surname,DepartmentIDFROMEmployees对行进行排序您可以对行进行排序,但同时只能查看某些列,如以下代码所示:SELECTBirthDate,Surname,DepartmentIDFROMEmployeesORDERBYSurname星号(位于SELECT*FROMEmployees中)是该表中所有列的简写形式.
注释涉及包含大量空值的列的查询比先前版本中的运行速度快.
但是,在将大量空值插入到表的情况下,在该表中插入或更新数据这一过程可能会花费较长时间(同先前版本相比).
SurnameDepartmentIDBirthDateWhitney1001958-06-05Cobb1001960-12-04Chin2001966-10-30Jordan3001951-12-13Breault1001947-05-13使用搜索条件6SybaseIQ使用搜索条件在本节中,您将了解比较日期的过程,以及如何使用WHERE子句中的复合搜索条件、模式匹配和搜索条件快捷方式.
有时,您不想看到有关Employees表中所有雇员的信息.
向SELECT语句添加WHERE子句只允许从表中选择某些行.
例如,假定您要查看名字为John的雇员.
列出所有名为John的雇员:键入以下语句:SELECT*FROMEmployeesWHEREGivenName='John'撇号和区分大小写需要在名字'John'的两边加撇号(单引号).
它们指示John是一个字符串.
引号(双引号)具有不同的含义.
对于列名和其它标识符,可以使用引号使原本无效的字符串有效.
样本数据库是不区分大小写的,因此不管您搜索'JOHN'、'john'还是'John',都将得到相同的结果.
此外,您还可以将所学内容结合起来:SELECTGivenName,Surname,BirthDateFROMEmployeesWHEREGivenName='John'ORDERBYBirthDate注意以何种方式对子句进行排序十分重要.
FROM子句排在第一位,后面是WHERE子句,再后面是ORDERBY子句.
如果以不同的顺序键入子句将出现语法错误.
无需将语句拆分成多行.
您可以在"SQL语句"窗口中以任意格式输入语句.
如果使用的行数超过屏幕所能容纳的限度,文本将在"SQL语句"窗口中滚动.
EmployeeIDManagerIDSurnameGivenNameDepartmentID.
.
.
3181576CrowJohn400.
.
.
862501SheffieldJohn100.
.
.
14831293LetiecqJohn300.
.
.
第1章从数据库表中选择数据性能和调优指南7比较查询中的日期有时,您不知道所查看的值具体为多少,或者您要查看一组值.
您可以在WHERE子句中使用比较来选择一组满足搜索条件的行.
列出1964年3月3日前出生的雇员以下示例显示了日期不等式搜索条件的用法.
键入以下语句:SELECTSurname,BirthDateFROMEmployeesWHEREBirthDate)、大于或等于(>=)、小于或等于().
可以使用AND和OR将这些搜索条件组合起来形成更加复杂的搜索条件.
限定列出的内容列出1964年3月3日前出生的所有雇员(但名为Whitney的雇员除外):SELECTSurname,BirthDateFROMEmployeesWHEREBirthDate'Whitney'SurnameBirthDateWhitney1958-06-05Cobb1960-12-04Jordan1951-12-13Breault1947-05-13Espinoza1939-12-14Dill1963-07-19Francis1954-09-12Shishov1949-04-22.
.
.
.
.
.
使用搜索条件8SybaseIQ搜索条件中的模式匹配查找内容的另一种有效方法是搜索模式.
在SQL中,单词LIKE用于搜索模式.
以下示例可以说明LIKE的用法.
列出特定雇员列出姓以"br"开头的所有雇员:SELECTSurname,GivenNameFROMEmployeesWHERESurnameLIKE'br%'搜索条件中的%表示任何数目的其它字符都可以接在字母BR之后.
限定姓搜索若要列出姓符合以下条件的所有雇员:以BR开头,其后有零个或多个字母,然后有一个T,T后有零个或多个字母,请键入:SELECTSurname,GivenNameFROMEmployeesWHERESurnameLIKE'BR%T%'第一个%符号与字符串"eaul"匹配,而第二个%符号与空字符串(不包含任何字符)匹配.
另一个可以与LIKE一起使用的特殊字符是_(下划线)字符,下划线只与一个字符匹配.
SurnameBirthDateCobb1960-12-04Jordan1951-12-13Breault1947-05-13Espinoza1939-12-14Dill1963-07-19Francis1954-09-12Shishov1949-04-22.
.
.
.
.
.
SurnameGivenNameBreaultRobertBraunJaneSurnameGivenNameBreaultRobert第1章从数据库表中选择数据性能和调优指南9模式BR_U%与所有以BR开头并以U作为第四个字母的名称匹配.
在Braun中,_与字母A匹配,%与N匹配.
通过发音匹配行如果使用SOUNDEX函数,则可以通过发音以及拼写匹配行.
例如,假设有一个电话留言找姓名发音类似"Ms.
Brown"的人.
公司中哪些雇员的姓名发音与Brown类似通过发音搜索姓若要列出姓的发音与Brown类似的雇员,请键入以下代码:SELECTSurname,GivenNameFROMEmployeesWHERESOUNDEX(Surname)=SOUNDEX('Brown')JaneBraun是唯一与搜索条件相符的雇员.
对搜索条件使用快捷方式使用简写形式BETWEENSQL具有两个用于键入搜索条件的简写形式.
第一个简写形式BETWEEN用于查找一系列值.
例如,以下两个示例的查询结果相等:SELECTSurname,BirthDateFROMEmployeesWHEREBirthDateBETWEEN'1964-1-1'AND'1965-3-31'SELECTSurname,BirthDateFROMEmployeesWHEREBirthDate>='1964-1-1'ANDBirthDate55SalesRepresentativeCount()1295719550299114467566675469052856559024794953114257159653获取集合数据12SybaseIQ注释GROUPBY必须始终出现在HAVING之前.
与此相同,WHERE必须出现在GROUPBY之前.
使用WHERE和GROUPBY若要列出其订单数超过55且ID大于1000的所有销售代表,请键入:SELECTSalesRepresentative,count(*)FROMSalesOrdersWHERESalesRepresentative>1000GROUPBYSalesRepresentativeHAVINGcount(*)>55SybaseIQ查询优化程序将谓词从HAVING子句移至WHERE子句,这样做可以提高性能.
例如,如果您指定:GROUPBYSalesRepresentativeHAVINGcount(*)>55ANDSalesRepresentative>1000来替换前面示例中的WHERE子句,查询优化程序会将谓词移至WHERE子句中.
SybaseIQ使用简单的条件(不涉及OR或IN)执行此优化.
为此,在使用WHERE子句和HAVING子句构建查询时,应尤为谨慎地在WHERE子句中列出尽可能多的条件.
改善小计计算如果您已具有在各个维度间变化的数据(如,日期或地点),则可能需要确定数据在每个维度中是如何变化的.
您可以使用ROLLUP和CUBE运算符为对分组列的引用的列表创建多级别的小计和总计.
最详细级别的小计"累计"到总计.
例如,如果您要分析销售数据,则可以使用同一查询按年计算总体平均值和平均销售额.
SalesRepresentativecount(*)1295729911446756114257第1章从数据库表中选择数据性能和调优指南13使用ROLLUP若要选择按年份、车型和颜色合计汽车销售额,请键入:SELECTyear,model,color,sum(sales)FROMsales_tabGROUPBYROLLUP(year,model,color);处理此查询时,SybaseIQ首先按三个指定的分组表达式(年份、车型和颜色)对数据进行分组,然后按除最后一个分组表达式(颜色)之外的其余两个分组表达式对数据进行分组.
在第五行中,NULL表示color列的ROLLUP值,换句话说,它表示该车型所有颜色汽车的总销售额.
343表示1990年所有车型和所有颜色汽车的总销售额,314表示1991年所有车型和所有颜色汽车的总销售额.
最后一行表示所有年份的所有车型和所有颜色汽车的总销售额.
ROLLUP需要分组表达式的有序列表作为参数.
在列出包含其它组的组时,请首先列出较大的组(如在city之前列出state).
您可以对以下集合函数使用ROLLUP:AVG、COUNT、MAX、MIN、STDDEV、SUM和VARIANCE.
不过,ROLLUP不支持COUNTDISTINCT和SUMDISTINCT.
年份车型颜色销售额1990Chevrolet红色51990Chevrolet白色871990Chevrolet蓝色621990ChevroletNULL1541990Ford蓝色641990Ford红色621990Ford白色631990FordNULL1891990NULLNULL3431991Chevrolet蓝色541991Chevrolet红色951991Chevrolet白色491991ChevroletNULL1981991Ford蓝色521991Ford红色551991Ford白色91991FordNULL1161991NULLNULL314NULLNULLNULL657获取集合数据14SybaseIQ使用CUBE以下查询使用Employees表中的数据,其中包括省/市/自治区(地理位置)、性别、教育水平和国民收入.
如果您要计算省/市/自治区的整个人口统计中的人均收入、性别和教育情况,并根据列state、gender及education的所有可能组合形式计算平均收入,而且只扫描表census中的人口统计数据一次,则可以使用GROUPBY子句的CUBE扩展.
例如,如果要计算所有省/市/自治区的所有女性的平均收入,或者要根据所受教育和地理位置计算人口统计中所有人的平均收入,请使用CUBE运算符.
当CUBE对某个组进行计算时,CUBE会将空值置于其组已得到计算的列中.
区分每行表示的组的类型以及确定NULL是存储在数据库中的NULL还是由CUBE生成的NULL十分困难.
如果指定的列已被合并到更高级别的组中,则GROUPING函数通过返回1来解决此问题.
以下查询说明了如何将GROUPING函数与GROUPBYCUBE结合使用.
SELECTcasegrouping(state)WHEN1THEN'ALL'ELSEstateENDASc_state,casegrouping(sex)WHEN1THEN'ALL'ELSEsexendASc_gender,casegrouping(DepartmentId)WHEN1THEN'ALL'ELSEcast(DepartmentIdaschar(4))endASc_dept,COUNT(*),CAST(ROUND(AVG(salary),2)ASNUMERIC(18,2))ASAVERAGEFROMemployeesWHEREstateIN('MA','CA')GROUPBYCUBE(state,sex,DepartmentId)ORDERBY1,2,3;下面显示了此查询的结果.
请注意,由CUBE生成的指示小计行的NULL将按照查询中的指定,在小计行中被替换为ALL.
c_statec_genderc_deptCOUNT()AVERAGEALLALL200352200.
00ALLALLALL352200.
00ALLF200258650.
00ALLFALL258650.
00ALLM200139300.
00ALLMALL139300.
00CAALL200352200.
00CAALLALL352200.
00CAF200258650.
00CAFALL258650.
00CAM200139300.
00CAMALL139300.
00第1章从数据库表中选择数据性能和调优指南15数据仓库管理员发现ROLLUP和CUBE对如下所示的操作特别有用:对诸如地理或时间等的层次维度进行小计,例如年份/月份/日期或国家/地区/省/市/自治区/城市填充摘要表如果采用多级分组而不是对每个级别进行单独查询,则ROLLUP和CUBE允许您使用一个查询来对数据进行计算.
有关ROLLUP和CUBE运算符的详细信息,请参见《参考:语句和选项》"SQL语句"中的SELECT语句.
获取分析数据本节介绍如何构建用于获得分析信息的查询.
分析函数有以下两种类型:rank和逆分布.
rank分析函数排列组中的项、计算分布以及将结果集分成多个组.
逆分布分析函数返回第k个百分点值,该值可用于帮助为一组数据建立可接受阈值.
rank分析函数有RANK、DENSE_RANK、PERCENT_RANK和NTILE.
逆分布分析函数有PERCENTILE_CONT和PERCENTILE_DISC.
假设您要对雇员的薪水划分等级.
在下面的示例中,NTILE函数根据雇员的薪水将雇员分成四组.
其ntile排名为1的雇员是薪水范围中最靠前的25%.
SELECTNameSalary,NTILE(4)OVER(ORDERBYsalaryDESC)asRankingFROMemp1;姓名薪水等级Sandy550001Peter480001Lisa380001Scott290001Tim290002Tom280002Mike280002Adam250003Antonia220003消除重复行16SybaseIQNTILE为一个分析函数,可将查询结果分配到指定数量的表元或在这些表元中对查询结果划分等级,并为表元中的每一行指派相应的表元号.
您可以将结果集分成十组(十等分)、四组(四等分)及其它分组数.
rank分析函数需要使用OVER(ORDERBY)子句.
ORDERBY子句指定对其执行排序的参数以及每组中行的排序顺序.
请注意,此ORDERBY子句仅在OVER子句中使用,而不是用于SELECT的ORDERBY.
OVER子句表示函数对查询结果集进行操作.
结果集是在对FROM、WHERE、GROUPBY和HAVING子句求值完成之后返回的行.
OVER子句定义要包括在rank分析函数计算中的行数据集.
同样,逆分布分析函数需要使用WITHINGROUP(ORDERBY)子句.
ORDERBY指定对其执行百分点函数的表达式以及每组中行的排序顺序.
此ORDERBY子句仅在WITHINGROUP子句中使用,而不是用于SELECT的ORDERBY.
WITHINGROUP子句将查询结果分布到排序数据集中,函数通过此数据集计算结果.
有关分析函数的更多详细信息,请参见《参考:构件块、表和过程》第4章"SQL函数"中的"分析函数".
有关各个分析函数的信息,请参见同一章节中针对各个函数的部分.
消除重复行来自SELECT语句的结果表可以包含重复行.
您可以使用DISTINCT关键字来消除重复项.
例如,以下命令返回多个重复行:SELECTcity,stateFROMEmployees若要只列出城市和省/市/自治区的唯一组合,请使用此命令:SELECTDISTINCTcity,stateFROMEmployees注释ROLLUP和CUBE运算符不支持DISTINCT关键字.
Jim220003Anna180004Jeff180004Amy180004姓名薪水等级第1章从数据库表中选择数据性能和调优指南17本章概述了单表SELECT语句.
有关单表SELECT语句的详细信息,请参见第5章"使用数据库对象"中的《系统管理指南:第一卷》第2章"SQL语言元素"中的《参考:构件块、表和过程》《参考:语句和选项》第1章"SQL语句"中的"SELECT语句"SELECT语句的高级用法将在下一章中进行介绍.
消除重复行18SybaseIQ性能和调优指南19第2章连接表关于本章本章说明如何查看多个表中的信息,并且说明各类连接.
您将完成有关连接表的教程任务.
目录主题页码使用矢量积连接表20限制连接20表的关联方式21连接运算符22使用即席连接与连接索引25连接和数据类型25支持存储或数据库之间的连接26查询远程异构数据库27用子查询替换连接28使用矢量积连接表20SybaseIQ使用矢量积连接表样本数据库中的其中一个表为FinancialData,此表列出公司的财务数据.
每个数据记录均具有code列,此列用于标识记录对应的部门及记录是支出记录还是收入记录.
可以同时从两个表获取信息,方法是在SELECT查询的FROM子句中列出两个表,并用逗号分隔.
示例下面的SELECT命令列出FinancialCodes和FinancialData表中的所有数据:SELECT*FROMFinancialCodes,FinancialData此查询的结果显示在InteractiveSQL数据窗口中,并且将FinancialCodes表中的每一行与FinancialData表中的每一行进行匹配.
此种连接称作完全矢量积,也称作笛卡儿乘积.
每一行都包含FinancialCodes表的所有列,后跟FinancialData表的所有列.
矢量积连接是了解连接的一个简单的起点,但其本身并不是很有用.
本章中的后续小节将介绍如何构造更富选择性的连接,对于这些连接,均可视为对矢量积表应用一些限制.
限制连接要使矢量积连接有用,通常需要在结果中仅包括满足某条件的行.
此条件称作连接条件,它使用比较运算符(=、=>、'1994/01/01'ORDERBYOrderDate使用外部连接教程前几节中的连接的完整名称为内部连接.
显式指定外部连接.
在本例中,还需要GROUPBY子句:SELECTCompanyName,MAX(SalesOrders.
ID),StateFROMCustomersIDOrderDateCompanyName21312000-01-02BoSoxClub21262000-01-03LeisureTime20652000-01-03Bloomfields21272000-01-06CreativeCustomsInc.
21352000-01-06EastCoastTraders21292000-01-07HospitalGifts21322000-01-08ThePepSquad21362000-01-09DivasDesign21332000-01-10TheRoadSideInn20832000-01-13PollysCustomDesign第2章连接表性能和调优指南29KEYLEFTOUTERJOINSalesOrdersWHEREState='WA'GROUPBYCompanyName,State使用子查询要列出库存不足的产品的订单项,请键入:SELECT*FROMSalesOrderItemsWHEREProductIDIN(SELECTIDFROMProductsWHEREQuantity"打开",导航到保存计划的目录.
还可以通过选择"文件">"打印"来打印计划窗口中显示的计划.
有关详细信息,请参见《参考:构件块、表和过程》中的"GRAPHICAL_PLAN函数[字符串]"和第170页上的"HTML_PLAN函数[字符串]".
有关支持这些查询计划函数的选项,请参见《参考:语句和选项》中的"QUERY_PLAN_TEXT_ACCESS选项"和"QUERY_PLAN_TEXT_CACHING选项".
控制查询处理40SybaseIQ控制查询处理任何用户都可以对用在处理特定查询上的时间量设置限制.
具有DBA特权的用户能够给予某些用户高于其他用户的查询优先级,或者更改处理算法以影响查询处理速度.
有关本节中介绍的选项的详细信息,请参见《参考:语句和选项》.
设置查询时间限制通过设置MAX_QUERY_TIME选项,用户能够禁止进行长查询操作.
如果查询的执行时间长于期望值,SybaseIQ会通过显示相应的错误来停止查询.
注释SybaseIQ会截去option-value设置的小数部分,只保留整数值.
例如,值3.
8将被截断为3.
设置查询优先级队列中等待处理的查询首先按照提交查询的用户优先级顺序排队以等待运行,其次是按照查询提交的顺序进行排队.
在高优先级查询全部执行完毕之前,不会执行低优先级查询.
用户通过下列选项为查询分配处理优先级.
IQGOVERN_PRIORITY—为队列中等待处理的查询分配数字优先级(1、2或3,1为最高级).
IQGOVERN_MAX_PRIORITY—允许DBA为用户或组设置IQGOVERN_PRIORITY的上限.
IQ_GOVERN_PRIORITY_TIME—如果高优先级(优先级为1)查询在-iqgovern队列中等候的时间超过了指定的时间,则允许高优先级用户开始执行查询.
若要查看查询的优先级,请查看sp_iqcontext存储过程返回的IQGovernPriority属性.
第3章优化查询和删除性能和调优指南41设置查询优化选项下列选项影响查询处理速度: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%',其中匹配字符串是一组常量字符,后接单个通配符(%).
如果未提供其它选择性信息,优化程序则会使用此选项.
EARLY_PREDICATE_EXECUTION—控制在执行连接优化前是否执行简单本地谓词.
在大多数情况下,不应对其进行更改.
IN_SUBQUERY_PREFERENCE—控制处理IN子查询的算法选择.
此选项主要供内部使用;除非您是经验丰富的数据库管理员,否则请不要使用它.
INDEX_PREFERENCE—为查询处理设置要使用的索引.
SybaseIQ优化程序一般会选择最佳可用索引来处理本地WHERE子句谓词和其它能够在IQ索引内部完成的操作.
此选项用于取代供测试使用的优化程序选择;在大多数情况下,不应对其进行更改.
JOIN_PREFERENCE—控制处理连接时的算法选择.
此选项主要供内部使用;除非您是经验丰富的数据库管理员,否则请不要使用它.
JOIN_SIMPLIFICATION_THRESHOLD—控制在应用任何连接优化程序简化之前要连接到一起的最少表数.
通常,不需要更改此值.
MAX_HASH_ROWS—设置查询优化程序将考虑执行散列算法的最大预计行数.
缺省值为1,250,000行.
例如,如果两表之间有连接,而这两个表中参与该连接的估计行数超过该选项值,则优化程序将不会考虑散列连接.
在TEMP_CACHE_MEMORY_MB值超过每用户50MB的系统上,需要为该选项考虑更高的值.
MAX_JOIN_ENUMERATION—设置在应用优化程序简化之后要进行连接顺序优化的表的最大数量.
通常无需设置该选项.
控制查询处理42SybaseIQ设置用户提供的条件提示SybaseIQ查询优化程序使用来自可用索引的信息选择用于执行查询的适当策略.
对于查询中的每个条件,优化程序将决定是否可以使用索引执行该条件,如果可以,优化程序会选择使用的索引以及相对于该表中其它条件的执行顺序.
在这些决策中最重要的因素是条件的选择性;即,表的行中满足该条件的部分.
优化程序通常在没有用户干预的情况下做出决定,并且一般可提供最佳决策.
但在某些情况下,优化程序可能无法在条件执行之前准确确定其选择性.
通常只有以下两种条件之一成立时,才会出现这些情况:一种是条件所处的列没有适当的可用索引,另一种是条件涉及某些算术或函数表达式,因而过于复杂,使优化程序无法准确估计.
有关语法、参数和示例,请参见《参考:构件块、表和过程》的第2章"SQL语言元素"中的"用户提供的条件提示".
监控工作负荷通常,创建索引的目的是为了提供优化元数据以及强制唯一性和主/外键关系.
但是,创建索引之后,DBA面临对索引带来的优势进行定量的挑战.
通常,表是在IQmain存储区中创建的,用于临时存储必须由多个连接访问或在较长时间内访问的数据.
您可能会遗忘这些表,然而它们却继续使用宝贵的磁盘空间.
此外,数据仓库中的表的数目过大且工作负荷非常复杂,从而无法手动分析使用情况.
因此,未使用的索引和表会浪费磁盘空间,增加备份时间,并降低DML性能.
SybaseIQ提供了用于收集和分析已定义工作负荷的统计信息的工具.
DBA可快速确定查询正在引用并应该由此而保留的数据库对象.
可删除未使用的表/列/索引,以便减少浪费的空间,提高DML性能,并缩短备份时间.
工作负荷监控是使用存储过程实现的,这些存储过程控制对表、列和索引信息的详细使用情况的收集和报告.
这些过程是对INDEX_ADVISOR功能的补充,该功能生成相应消息,建议可提高一个或多个查询性能的其它列索引.
添加推荐的索引之后,即可跟踪其使用情况,以确定这些索引是否值得保留.
第3章优化查询和删除性能和调优指南43有关工作负荷监控过程的详细信息,请参见《参考:构件块、表和过程》中的"sp_iqcolumnuse过程"、"sp_iqindexadvice过程"、"sp_iqindexuse过程"、"sp_iqtableuse过程"、"sp_iqunusedcolumn过程"、"sp_iqunusedindex过程"、"sp_iqunusedtable过程"和"sp_iqworkmon过程".
另请参见《参考:语句和选项》中的"INDEX_ADVISOR选项".
优化删除操作SybaseIQ在三种可能的算法中选择最佳算法处理带有HG和WD索引的列的删除操作.
HG删除操作SybaseIQ在三种算法中选择任意一种算法来处理带有HG(High_Group)索引的列的删除操作:少量删除当从非常少的组中删除行时,少量删除会表现出最佳性能.
当只删除1行或删除操作对带有HG索引的列使用相等谓词时,通常会选择它.
少量删除算法可以随机访问HG.
最坏情况下,I/O也会与访问的组数成正比.
中型删除当从若干组中删除行,而组数又足够少使得所访问的HG页面不多时,中型删除会表现出最佳性能.
中型删除算法可提供对HG的有序访问.
最坏情况下,I/O也不会超过索引页面的数量.
中型删除会因为对要删除的记录进行排序而产生新的开销.
大型删除从大量组中删除行时,大型删除会表现出最佳性能.
大型删除按顺序扫描HG,直至删除所有行为止.
最坏情况下,I/O也不会超过索引页面的数量.
大型删除也为并行操作,但其并行操作受索引内部结构和待删除记录所属组的分布的约束.
HG列上的范围谓词可用于缩小大型删除的扫描范围.
HG删除的开销在SybaseIQ12.
6之前,HG删除开销模型只考虑了最坏情况下的I/O性能,因此大多数情况下首选的是大型删除.
当前的开销模型将考虑多种因素,包括I/O开销、CPU开销、可用资源、索引元数据、并行处理和查询中可用的谓词.
优化删除操作44SybaseIQ在带HG索引的列上指定谓词,会大大改善开销.
若要让HG开销选择大型删除以外的算法,必须能够确定受删除影响的不同的值(组)的数量.
离散值个数初始假定为索引组数和被删除行数中的较小者.
谓词可以提供更完善、更精确的离散值个数估计值.
当前开销不考虑范围谓词对大型删除的影响.
这会导致在采用大型删除将更快的情况下选择中型删除.
在这种情况下,您可以根据需要按照下一节所述方法强制使用大型删除算法.
使用HG删除性能选项您可以使用HG_DELETE_METHOD选项来控制HG删除的性能.
通过HG_DELETE_METHOD选项指定的参数值会强制使用指定的删除算法,如下所示:1=少量删除2=大型删除3=中型删除有关HG_DELETE_METHOD数据库选项的详细信息,请参见《参考:语句和选项》的第2章"数据库选项"中的"HG_DELETE_METHOD选项".
WD删除操作SybaseIQ在三种算法中选择任意一种算法来处理带有WD(Word)索引的列的删除操作:少量删除当被删除行中几乎不包含任何非重复字时,并不需要访问很多WD页面,因此WD少量删除会表现出最佳性能.
WD少量删除算法执行WD有序访问.
最坏情况下,I/O也不会超过索引页面的数量.
少量删除包含对要删除记录中的文字和记录ID进行排序的开销.
中型删除WD中型删除是WD少量删除的变换形式,适用于与少量删除相同的条件,即,当被删除行几乎不包含任何非重复字时.
WD中型删除仅对要删除记录中的文字进行排序.
排序为并行操作,其并行操作受文字数和CPU可用线程数的约束.
对于文字索引,中型删除方法通常比少量删除更快.
大型删除当被删除行包含大量非重复文字时,需要访问索引中的大量"组",此时WD大型删除会表现出最佳性能.
大型删除按顺序扫描WD,直至删除所有行为止.
最坏情况下,I/O也不会超过索引页面的数量.
大型删除也为并行操作,但其并行操作受索引内部结构和待删除记录所属组的分布的约束.
第3章优化查询和删除性能和调优指南45WD删除的开销WD删除的开销模型会考虑很多因素,包括I/O开销、CPU开销、可用资源、索引元数据和并行.
您可以使用WD_DELETE_METHOD数据库选项来控制WD删除的性能.
使用WD删除性能选项通过WD_DELETE_METHOD选项指定的参数值会强制使用指定的删除算法,如下所示:0=表示开销模型选定的中型删除或大型删除1=少量删除2=大型删除3=中型删除有关WD_DELETE_METHOD数据库选项的详细信息,请参见《参考:语句和选项》的第2章"数据库选项"中的"WD_DELETE_METHOD选项".
优化删除操作46SybaseIQ性能和调优指南47第4章管理系统资源关于本章本章描述SybaseIQ使用内存、磁盘I/O和CPU的方式,以及这些因素之间的关系.
它还解释了DBA如何通过调整资源使用来调优性能.
本章中的建议是通用的.
您需要调整它们,以适应具体的硬件和软件配置.
有关针对每个平台的建议,请参见其《安装和配置指南》.
目录主题页码性能术语简介48性能设计48内存使用概述48进程线程模型63平衡I/O64用于调优资源使用的选项70改进资源使用的其它方式74索引提示75管理数据库大小和结构76使用UNIONALL视图以便更快装载80网络性能82性能术语简介48SybaseIQ性能术语简介性能是对计算机化业务应用程序或运行于相同环境中的多个应用程序的效率的度量.
它通常以响应时间和吞吐量进行度量.
响应时间是完成单个任务所用的时间.
影响它的因素是:减少争用和等待时间,特别是磁盘I/O等待时间使用更快的组件减少需要资源的时间(提高并发性)吞吐量是指在固定时间段内完成的工作量.
吞吐量通常以每秒的事务数(tps)进行度量,也可以按每分钟、每小时、每天等进行度量.
性能设计大多数性能增益源自良好的数据库设计、透彻的查询分析以及妥当的索引编排.
最大的性能增益可以通过建立良好的设计和选择正确的索引策略来实现.
其它考查事项(如硬件和网络分析)可确定安装中的瓶颈.
有关详细信息,请参见第3章"优化查询和删除".
内存使用概述SybaseIQ出于以下几个目的使用内存:解析查询时从磁盘读取数据的缓冲区从平面文件中装载时从磁盘读取数据的缓冲区用于管理连接、事务、缓冲区和数据库对象的开销后面的几节解释操作系统如何支持SybaseIQ的内存使用,SybaseIQ如何为各种目的而分配内存,您如何调整内存分配以获得更好的性能,以及您可能需要做什么来配置操作系统以便SybaseIQ有足够的可用内存.
第4章管理系统资源性能和调优指南49分页增加可用内存当系统没有足够内存时,性能会严重降低.
如果发生这种情况,则需要找到某种方式,使更多内存可用.
与任何RDBMS软件一样,SybaseIQ需要很多内存.
分配给SybaseIQ的内存越多越好.
但是,系统的内存数量始终存在固定限制,因此有时操作系统只能将一部分数据放在内存中,而将其余部分放在磁盘上.
如果操作系统为了满足一次内存请求而必须转向磁盘并检索任何数据,则这种情况称为分页或交换.
好的内存管理的主要目标就是避免分页或交换,或者使其最大程度减少分页或交换.
最频繁使用的操作系统文件是交换文件.
当内存用完时,操作系统就会将内存页交换到磁盘,以便为新数据腾出空间.
当再次调用被交换的页时,就会交换其它页,并返回所需的内存页.
对于有很高磁盘使用率的用户,这会非常耗时.
通常,应当尝试组织内存,以避免交换,从而最大程度减少对操作系统文件的使用.
有关配置内存以最大程度减少交换的信息,请参见第60页上的"特定于平台的内存选项".
为了最大程度利用物理内存,SybaseIQ对所有数据库读取和写入均使用缓冲区高速缓存.
注释您的磁盘上的交换空间必须至少有足够多的空间,才能容纳所有物理内存.
监控交换的实用程序可以使用UNIXvmstat命令、UNIXsar命令或Windows任务管理器来获取正在运行的进程数和页交换次数的统计信息.
使用此信息可以发现系统是否分页过多.
然后进行任何必要的调整.
可能需要将交换文件放在特殊的快速磁盘上.
有关vmstat输出的示例,请参见"在UNIX系统上监控分页".
服务器内存SybaseIQ为缓冲区、事务、数据库和服务器分配堆内存.
也许还会使用共享内存,但数量上少得多.
内存使用概述50SybaseIQ在操作系统级别,SybaseIQ服务器内存由堆内存组成.
在大多数情况下,您不需要关注SybaseIQ所使用的内存是堆内存还是共享内存.
所有内存分配都会自动处理.
但是,在运行SybaseIQ之前,可能需要确保正确配置操作系统内核以使用共享内存.
有关详细信息,请参见适用于您的平台的《安装和配置指南》.
管理用于Multiplex的内存Multiplex中的每个服务器都可以在其自己的主机上,也可以与其它服务器共享主机.
相同系统上的两个或更多服务器不会比处理相同工作负荷的单个组合服务器消耗更多CPU时间,但分开的服务器可能比单个组合服务器需要更多物理内存,因为每个服务器都不会与其它任何服务器共享所使用的内存.
用于装载、插入、更新、同步和删除的内存SybaseIQ对大多数装载操作使用缓冲区高速缓存内存.
然而,有些类型的装载仍使用大量堆内存.
若要避免在计算机上过度分配物理内存,可以对发生装载的操作设置LOAD_MEMORY_MB数据库选项.
如果表中有些列的数据类型的值范围较大,则这样做非常重要.
除了LOAD操作以外,此选项还影响INSERT、UPDATE、SYNCHRONIZE和DELETE操作.
LOAD_MEMORY_MB选项可为随后的装载可以使用的堆内存数量设置上限(以MB为单位).
有关装载和缓冲区高速缓存使用情况的信息,请参见第52页上的"装载时的内存要求".
有关LOAD_MEMORY_MB选项的详细信息,请参见《参考:语句和选项》中的第2章"数据库选项".
注销进程影响共享内存警告!
在UNIX系统上终止进程可能导致留下信号或共享内存而不是将其自动清理掉.
在UNIX中关闭SybaseIQ服务器的正确方式是通过stop_iq实用程序进行关闭,《系统管理指南:第一卷》第2章"运行SybaseIQ"中的"停止数据库服务器"对此进行了说明.
有关异常退出后使用ipcs和ipcrm执行清理的信息,请参见《系统管理指南:第一卷》中的第14章"故障排除提示".
管理缓冲区高速缓存SybaseIQ对用于缓冲区高速缓存的内存量超出了用于任何其它用途的内存量.
SybaseIQ有两个缓冲区高速缓存,一个用于IQ存储,另一个用于临时存储.
它将这两个缓冲区高速缓存用于所有数据库I/O操作—分页、插入数据库以及备份和还原.
只要数据在内存中,它就会存储在这两个高速缓存的某一个之中.
所有用户连接都共享这些缓冲区高速缓存.
SybaseIQ会一直跟踪与每个连接关联的数据.
阅读下面几节,了解有关管理缓冲区高速缓存的详细信息:有关如何计算内存要求的信息,请参见"确定缓冲区高速缓存的大小".
第4章管理系统资源性能和调优指南51有关在了解缓冲区高速缓存所需大小后如何进行设置的信息,请参见"设置缓冲区高速缓存大小".
确定缓冲区高速缓存大小为IQ存储和临时存储指定的缓冲区高速缓存大小将基于几个因素而变化.
对于大多数数据库来说,缺省值(主高速缓存为16MB,临时高速缓存为12MB)太低.
应用程序所需的实际值取决于:系统上的物理内存总量SybaseIQ、操作系统和其它应用程序执行其任务时需要此内存的量是否正在执行装载、查询或同时执行这两个操作schema配置和查询工作负荷阅读以下几节,了解确定站点最佳设置的准则.
下图显示了缓冲区高速缓存和其它内存使用量之间的关系.
图4-1:缓冲区高速缓存与物理内存相对比以下几节更详细地介绍了每个部分,并提供帮助您确定每个部分需要多少内存的准则.
内存使用概述52SybaseIQ操作系统和其它应用程序对于不同平台和系统使用方式,此内存数量将各不相同.
例如,UNIX文件系统会比UNIX原始分区执行更多的文件缓冲,因此操作系统有更高的内存要求.
大多数操作系统会将大部分可用内存用于文件系统缓冲.
您应了解针对特定操作系统的缓冲策略以避免过度分配内存.
此外,与SybaseIQ一起运行的其它应用程序(例如查询工具)都有自己的内存需要.
有关这些内存要求的信息,请参见应用程序和操作系统文档.
SybaseIQ内存开销在确定操作系统和其它应用程序使用多少物理内存之后,就可以计算出SybaseIQ需要多少剩余内存来执行其任务.
以下几节介绍影响此开销的因素.
原始分区与文件系统对于UNIX系统,使用文件系统而不是原始分区的数据库可能需要剩余内存的另外30%来处理操作系统的文件缓冲.
在Windows上,应当通过将OS_FILE_CACHE_BUFFERING设置为'OFF'(对于新数据库,为缺省值)来禁用文件系统高速缓存.
有关详细信息,请参见适用于具体平台的《安装和配置指南》.
多用户数据库访问对于数据库的多用户查询,SybaseIQ需要对每个"活动"用户使用大约10MB.
活动用户被定义为同时访问或查询数据库的用户.
例如,30个用户可能连接到SybaseIQ,但仅10个左右用户可能正在任何时间同时频繁使用数据库.
装载时的内存要求SybaseIQ还需要一部分与缓冲区高速缓存分开的内存来执行装载、同步和删除操作.
此内存用于平面文件的缓冲I/O.
SybaseIQ使用内存来缓冲从磁盘读取的数据.
此读取数据的大小等于BLOCKFACTOR乘以输入记录的大小.
BLOCKFACTOR是LOADTABLE命令的选项.
使用10,000作为缺省值时,200字节的输入行数据将导致SybaseIQ使用总计2MB来执行缓冲I/O.
装载操作的内存要求是由列的个数和宽度而不是行数确定的.
仅当使用INSERT.
.
LOCATION或INSERT.
.
SELECT从平面文件装载时,才需要此内存.
删除和更新需要相对少量的内存.
第4章管理系统资源性能和调优指南53用于线程堆栈的内存处理线程需要少量的内存.
您使用的SybaseIQ处理线程越多,需要的内存就越多.
-iqmt服务器开关控制SybaseIQ的线程数.
-iqtss服务器开关控制为每个线程分配的堆内存量.
为IQ堆栈分配的总内存量为-iqmt和iqtss值的乘积.
如果拥有大量用户,则Catalog存储处理线程所需的内存也相应增加,即使此内存量仍然相对较小也是如此.
-gn开关控制Catalog存储处理线程的过程.
线程总数(-iqmt加-gn)不得超过平台允许的数目.
有关详细信息,请参见《实用程序指南》中的第1章"运行数据库服务器".
其它内存使用所有命令和事务都会使用一些内存.
以下操作是除了前面讨论的内存使用以外最重要的内存使用:备份.
用于备份的虚拟内存数量是在创建数据库时所指定的IQPAGESIZE函数.
它大约是2*CPU数*20*(IQPAGESIZE/16).
在某些平台上,通过在BACKUP命令中调整BLOCKFACTOR,可能能够提高备份性能,但增加BLOCKFACTOR也会增加所使用的内存数量.
请参见《系统管理指南:第一卷》第12章"数据备份、恢复和存档"中的"增加备份过程中占用的内存".
数据库验证和修复.
在检查整个数据库时,sp_iqcheckdb过程将在启动任何处理之前打开所有SybaseIQ表及其各自的字段和索引.
根据SybaseIQ表的个数以及这些表中的累积列数和索引数,sp_iqcheckdb可能需要非常少或非常多的虚拟内存.
要限制需要的内存数量,请使用sp_iqcheckdb选项,以检查或修复单个索引或表.
删除泄漏块.
删除漏洞操作也需要打开所有SybaseIQ表、文件和索引,因此它会使用像sp_iqcheckdb在检查整个数据库时所使用的那么多虚拟内存.
它使用SybaseIQ临时缓冲区高速缓存来跟踪所使用的块.
SybaseIQ主要和临时缓冲区高速缓存在确定SybaseIQ需要多少内存开销之后,必须决定如何在主SybaseIQ和临时缓冲区高速缓存之间拆分剩余的内存.
在图4-1中划分两个区域的虚线指示此拆分基于几个因素可能对不同数据库有所不同.
内存使用概述54SybaseIQ与大多数其它数据库不同,SybaseIQ的一般准则是将40%分给主缓冲区高速缓存,而将60%分给临时缓冲区高速缓存.
然而,此准则只是一个开始.
当某些操作(如具有涉及HG索引的大型排序合并连接或插入的查询)可能需要临时缓冲区高速缓存大于main高速缓存,则其它应用程序可能有不同需求.
注释这些准则假定系统上每次有一个活动数据库(即任何SybaseIQ用户一次只访问一个数据库).
如果有多个活动数据库,则需要在期望使用的数据库中进一步拆分剩余的内存.
Sybase强烈建议您首先了解此处提供的一般准则,并通过使用SybaseIQ的监控工具(如第101页上的"监控缓冲区高速缓存"中所述)和适用于您的平台的《安装和配置指南》中所述的任何特定工具,观察其性能.
缓冲区高速缓存和物理内存用于SybaseIQ主和临时缓冲区高速缓存的内存总量,加上SybaseIQ内存开销,以及用于操作系统和其它应用程序的内存,不得超过系统的物理内存.
几乎在所有情况下,8MB的缺省临时缓冲区高速缓存都是过低的.
为了获得最佳性能,请尽可能多地为IQ的主缓冲区高速缓存和临时缓冲区高速缓存分配内存.
例如,如果计算机上有4GB的物理内存可供SybaseIQ使用,则可拆分该内存量供主缓冲区高速缓存和临时缓冲区高速缓存使用.
注释在某些UNIX平台上,可能需要设置其它服务器开关,以便使更多内存可用作缓冲区高速缓存.
有关详细信息,请参见第60页上的"特定于平台的内存选项".
其它注意事项根据使用方式的不同,SybaseIQ缓冲区高速缓存大小可能对于不同数据库有所不同.
若要获取最佳性能,您需要在插入、查询数据库和混合使用之间更改设置.
但是,在混合使用环境中,为了重置缓冲区高速缓存选项而要求所有用户退出数据库并不始终可行.
在这些情况下,可能需要照顾到装载或查询性能.
缓冲区高速缓存和内存开销准则也可能对于不同平台而有所不同.
有关任何其它问题,请参见《安装和配置指南》.
第4章管理系统资源性能和调优指南55设置缓冲区高速缓存大小缺省情况下,SybaseIQ分别将主和临时缓冲区高速缓存的大小设置为32MB和24MB.
大多数应用程序都需要更高的值(受物理内存总量限制).
请参见前面几节,以确定系统的正确设置.
知道需要什么设置以后,请使用表4-1中所述的选项设置缓冲区高速缓存大小.
还可以使用表4-2中所述的选项,使更多内存可用作缓冲区高速缓存.
表4-1:更改缓冲区高速缓存大小的设置表4-2:影响可用作缓冲区高速缓存的内存的设置设置缓冲区高速缓存大小服务器开关必须重新启动服务器才能更改缓冲区高速缓存大小.
-iqmc和-iqtc服务器启动选项只在服务器运行时保持有效,因此每次重新启动服务器时需要包括这些选项.
方法何时使用它设置一直有效的时间有关详细信息,请参见-iqmc和-iqtc服务器开关推荐的方法.
当数据库和服务器未运行时设置高速缓存大小.
允许高速缓存大小>4GB.
对于64位平台,或在将高速缓存大小数据库选项设置为超过系统容量的情况下,尤其有用.
从服务器启动时到服务器停止第55页上的"设置缓冲区高速缓存大小服务器开关"方法何时使用它设置一直有效的时间有关详细信息,请参见LOAD_MEMORY_MB数据库选项通过控制可以用于负载的内存,间接影响缓冲区高速缓存大小.
在某些平台上,允许负载占有无限制的内存意味着可供缓冲区高速缓存使用的内存更少.
重置该选项后立即生效第50页上的"用于装载、插入、更新、同步和删除的内存"内存使用概述56SybaseIQ指定页大小创建数据库时,可设置SybaseIQ页大小.
该参数与缓冲区高速缓存的大小配合使用可影响该数据库的内存使用和磁盘I/O吞吐量.
注释页大小无法更改,并且决定某些数据库对象的大小上限以及是否可以使用LOB功能.
设置页大小SybaseIQ以页为单位与内存双向交换数据.
创建数据库时,应为Catalog存储和IQ存储指定单独的页大小.
临时存储的页大小与IQ存储相同.
有关为获取最佳性能而推荐的SybaseIQ页大小,请参见《系统管理指南:第一卷》第5章"使用数据库对象"中的"选择IQ页大小".
因为Catalog存储帐户仅占I/O的很小一部分,所以Catalog存储的页大小对性能不会产生实际影响.
缺省值4096字节应当足够.
IQ页大小确定其它两个性能因素:缺省I/O传输块大小和数据库最大数据压缩.
这些因素将在后面的几节中讨论.
块大小所有I/O均以块为单位发生.
在创建SybaseIQ数据库时,将设置这些块的大小;除非重新创建数据库,否则不能更改它.
缺省情况下,IQ页大小确定I/O传输块大小.
例如,128KB的缺省IQ页大小导致8192字节的缺省块大小.
通常,SybaseIQ使用此缺省块大小与页大小的比率,但它还会考虑其它因素.
缺省块大小应当导致大多数系统的I/O传输率和磁盘空间使用量达到最佳平衡.
但是,与性能相比,它更有益于节省空间.
如果缺省块大小表现不佳,则可以按照每页中不能有少于2个和多于16个块的约束,将它设置为4096和32,768之间的2的任何次幂.
在某些情况下,可能需要显式设置块大小:对于使用磁盘阵列的原始磁盘安装,更大的块可能获得更好的磁盘空间使用性能.
对于文件系统安装,若要通过磁盘空间优化性能,IQ块大小应当大于或等于操作系统的本机块大小(如果有).
如果IQ块大小与文件系统的块大小匹配,则可能获得更好的I/O率.
第4章管理系统资源性能和调优指南57表4-3列出了每个IQ页大小的缺省块大小.
表4-3:缺省块大小数据压缩SybaseIQ在磁盘上存储数据时,将压缩所有数据.
数据压缩会减少磁盘空间要求,还会提高性能.
压缩量基于IQ页大小自动确定.
节省内存如果计算机没有足够内存,为了节省内存,可以尝试以下调整措施.
减少缓冲区高速缓存设置通过减少缓冲区高速缓存大小,可能能够节省内存.
请记住,如果缓冲区高速缓存减少得太多,则由于缓冲区不足,可能使数据装载或查询效率降低或无法完成.
减少用于装载的内存可以设置LOAD_MEMORY_MB选项,以限制用于装载和其它相似操作的堆内存数量.
请参见第50页上的"用于装载、插入、更新、同步和删除的内存".
调整装载的阻塞系数从平面文件装载时,请使用BLOCKFACTOR对I/O吞吐量进行调优.
LOAD命令的BLOCKFACTOR选项指定在创建输入文件时所使用的阻塞系数,即每块的记录数.
缺省BLOCKFACTOR为10,000.
此装载选项的语法如下:BLOCKFACTOR=integerIQ页大小(KB)缺省块大小(字节)644096128(新数据库的缺省值)81922561638451232768内存使用概述58SybaseIQ请使用以下准则确定BLOCKFACTOR:记录大小*BLOCKFACTOR=所需内存除了用于缓冲区的内存以外,此选项还需要额外内存.
如果有很多内存可用,或没有其它用户处于并发活动状态,则增加BLOCKFACTOR的值可以提高装载性能.
为大量用户进行优化SybaseIQ在32位平台上最多处理200个用户连接,在64位平台上最多处理1000个用户连接.
要在64位系统上支持最大用户数,则可能需要调整操作系统参数和start_iq服务器参数.
有关建议,请参见《安装和配置指南》及后面几节.
更改SybaseIQ命令行选项以满足大量用户以下start_iq开关影响有大量用户的操作:-gm#_connections_to_support-iqgovern#_ACTIVE_queries_to_support-gn#_catalog_store_front_end_threads-ccatalog_store_cache_size-chsize-clsize-gm这是服务器将支持的连接总数.
根据统计,其中某些应当已连接并处于空闲状态,而其它的部分则已连接并频繁使用数据库.
-iqgovern尽管1000个用户可以连接到SybaseIQ,但为了获得最佳吞吐量,应当确保每次允许远低于该数字的用户数执行查询,以便他们中的每个人都有足够的资源,从而能够高效工作.
-iqgovern值限制同时执行的最大查询数.
如果超过-iqgovern限制的用户已经提交查询,则新查询将排队,直到某个活动查询完成.
-iqgovern的最佳值取决于查询的性质、CPU数和SybaseIQ缓冲区高速缓存的大小.
缺省值为2*numCPU+10.
在有很多连接用户的情况下,您可能发现将此选项设置为2*numCPU+4可以提供更好的吞吐量.
-gn-gn的正确值取决于-gm的值.
start_iq实用程序将计算-gn并进行相应设置.
将-gn设置得太低会阻止服务器正确操作.
建议不要将-gn设置为超过480.
第4章管理系统资源性能和调优指南59-cCatalog存储缓冲区高速缓存还是Catalog存储的常规内存池.
若要以MB为单位指定,请使用-cnM格式,例如-c64M.
Sybase建议使用下列值:表4-4:Catalog缓冲区高速缓存设置例如,在某些情况下,标准Catalog高速缓存大小可能太小,无法适合某些需要很多分析的查询.
在这类情况下,设置-cl和-ch也许能有所帮助.
例如,在32位平台上,尝试这些设置-cl128M-ch256M不得将-c和-ch或-cl用于同一配置文件或命令行中.
相关信息,请参见-chcache-size选项.
警告!
要显式控制Catalog存储高速缓存大小,必须在服务器启动时在配置文件(.
cfg)或UNIX命令行中执行以下任意一项操作,但不要两项操作都执行:设置-c参数使用-ch和-cl参数设置Catalog存储高速缓存大小的特定上限和下限.
如不按上述说明指定参数组合,则可能产生意外结果.
-iqmt如果您的计算机拥有多个CPU核心以防线程匮乏,则可能需要增加-iqmt.
如果为指定的连接数将-iqmt设置得太低,则线程数将增加,以处理所请求的连接数.
就是说,-gm覆盖-iqmt.
然而,如果通过-iqmt选项提升SybaseIQ线程数,则需要在设置限制中使用该因素,如"为大量用户设置操作系统参数"中所述.
为大量用户增加SybaseIQ临时空间您可能需要增加临时dbspace以满足更多用户.
针对此数目的用户在这些平台上将-c设置为此最小值或更高最高1000仅64位64MB最高20064位48MB(64位系统的start_iq缺省值);更多用户可能受益于64MB最高20032位32MB(32位系统的start_iq缺省值)内存使用概述60SybaseIQ新连接和现有连接的相对优先级如果SybaseIQ正忙于处理已连接的用户,则响应新连接请求的速度可能会变慢.
在极端情况(例如,测试脚本在服务器忙于执行插入时触发数百个循环连接)下,新连接可能会出现连接请求超时的情况.
在此情况下,服务器可能看似已停机,而实际上它只是非常繁忙.
遇到此行为的用户应尝试再次连接并应考虑增加连接超时参数.
特定于平台的内存选项在所有平台上,SybaseIQ均为四个主要目的而使用内存:主缓冲区高速缓存临时缓冲区高速缓存SybaseIQ内存开销(包括线程堆栈)装载缓冲区有关SybaseIQ内存使用情况的图示,请参见第51页上的图4-1.
在所有64位平台上,可用内存总量实际上是无限的.
唯一限制的是系统的虚拟内存.
有关HP-UX系统上的性能调优提示,请参见适用于该平台的《安装和配置指南》.
在32位平台上限制适用;有关详细信息,请参见下表.
表4-5:32位平台上的总计可用内存由于在SybaseIQ服务器上使用了虚拟内存模式,虚拟内存碎片可能会导致Windows平台上的处理工作大幅增加.
为了减少发生此情况的可能性,SybaseIQ支持在WindowsXP和WindowsServer2003上使用Microsoft的低碎片堆(LFH).
平台总计可用内存RedHatLinux2.
1大约有1.
7GB可供SybaseIQ使用RedHatLinux3.
0大约有2.
7GB可供SybaseIQ使用Windows2000/2003/XPa2.
75GB可用于SybaseIQa您需要Windows2000AdvancedServer或DatacenterServer、WindowsServer2003Standard、Enterprise或DatacenterEdition或者WindowsXPProfessional,才能获得这么多内存,并且必须设置/3GB开关.
如果没有开关,则限制为2GB.
此数量是可用于进程的总计内存.
在Windows服务器上,即使有/3GB设置,缓冲区高速缓存的总计大小也不得超过2GB.
有关详细信息,请参见适用于Windows的《安装和配置指南》.
第4章管理系统资源性能和调优指南61有关Windows平台上的更多性能调优提示,请参见第6章"在32位Windows系统上调优服务器".
仅对于UNIX系统,SybaseIQ提供了可以帮助您管理内存的两个命令行选项.
连系内存池在HP和Sun平台上,可以指派指定数量的内存作为"连系"内存.
连系内存是锁定到物理内存中的共享内存.
内核不能从物理内存中对该部分内存进行分页.
当其它应用程序正同时运行于相同计算机上时,连系内存可能提高SybaseIQ性能.
但是,为SybaseIQ分配专用连系内存会使它对该计算机上的其它应用程序不可用.
若要仅在这些UNIX平台上创建"连系"内存池,请指定-iqwmem命令行开关,以指示连系内存的MB数.
(除在Sun上以外,您必须是用户root,才能设置-iqwmem.
)在64位平台上,-iqwmem的唯一上限是计算机的物理内存.
例如,在有14GB内存的计算机上,您可能能够留出10GB连系内存.
为此,请指定:-iqwmem10000警告!
仅当您有足够内存可专用于为此目的而指定的数量时,才使用此开关.
否则,可能导致性能大幅下降.
注释对于此版本:在SunSolaris上,-iqwmem始终提供连系内存.
在HP上,如果您作为root启动服务器,则-iqwmem提供连系内存.
如果启动服务器时您不是root,则它提供非连系内存.
此行为可能在未来版本中有更改.
其它应用程序和数据库的影响请记住,用于服务器的内存来自由所有应用程序和数据库使用的内存池.
如果尝试同时在相同计算机上运行多个服务器或多个数据库,或者有其它正在运行的应用程序,则可能需要减少服务器所请求的内存数量.
还可以发出UNIX命令ipcs-mb以查看实际段数HP内存问题疑难解答如果在HP-UX上有内存问题,请检查maxdsiz_64bit内核参数的值.
此参数限制在64位HP处理器上可用于SybaseIQ的虚拟内存数量.
有关建议值,请参见《安装和配置指南》.
内存使用概述62SybaseIQ控制文件系统缓冲仅在SolarisUFS和Windows文件系统上,可以控制是否打开文件系统缓冲.
如果关闭文件系统缓冲,则将数据副本从文件系统缓冲区高速缓存保存到IQ的主缓冲区高速缓存.
通常,这样做会减少分页,并因此提高性能.
但有一个例外:如果数据库的IQ页大小小于文件系统的块大小(通常仅在测试情况下),那么,尤其是在多用户操作期间,关闭文件系统缓冲可能降低性能.
对于最近创建的SybaseIQ数据库,缺省情况下会关闭文件系统缓冲.
若要对现有数据库禁用文件系统缓冲,请发出以下语句:SETOPTION"PUBLIC".
OS_FILE_CACHE_BUFFERING=OFF只能为PUBLIC组设置此选项.
数据库必须关闭并重新启动,才能使更改生效.
注释Solaris没有内核参数来约束其文件系统缓冲区高速缓存的大小.
一段时间以后,文件系统缓冲区高速缓存将增长并转移IQ缓冲区高速缓存页,从而导致过度的操作系统分页活动,并使SybaseIQ性能降低.
Windows可以通过耗用文件系统来调整分页算法的偏差,以使应用程序受益.
为了提高SybaseIQ性能,建议使用此偏差.
有关详细信息,请参见第6章"在32位Windows系统上调优服务器".
获取更多内存的其它方式在某些环境中,可能能够调整其它选项,以使更多内存可用于SybaseIQ.
启用Java的数据库的选项SETOPTION命令的JAVA_HEAP_SIZE选项可以设置基于每个连接而分配给Java应用程序的那部分内存的最大大小(字节).
通常,基于每个连接的内存分配由所分配的Java变量和Java应用程序堆栈空间的用户工作集组成.
Java应用程序在连接上执行时,每个连接分配会来自数据库服务器的固定高速缓存,所以,防止无法控制的Java应用程序占用过多内存是很重要的.
第4章管理系统资源性能和调优指南63进程线程模型SybaseIQ使用操作系统内核线程,以获得最佳性能.
线程可以在用户级别和在内核级别找到.
轻型进程是内核所支持的基础控制线程.
操作系统决定哪些轻型进程(LWP)应当运行在哪个处理器上,以及何时运行.
它不知道用户线程是什么,但如果用户线程正在等待或能够运行,则它会知道.
操作系统内核将LWP调度到CPU资源上.
它使用它们的调度类和优先级.
每个LWP均由内核单独进行调度,执行独立的系统调用,调用独立的页错误并在多处理器系统上并行运行.
单个、高度线程化的进程服务于所有SybaseIQ用户.
SybaseIQ基于该连接所完成的处理类型、可用线程总数和各种选项设置,将不同数目的内核线程分配给每个用户连接.
线程不足错误没有足够的服务器线程来启动您已经发出的查询时,会显示以下错误:此查询的可用服务器线程不足这种情况可能是临时性的.
当其它某些查询完成时,线程将变为可用,在您下一次发出查询时,查询可能成功.
如果这种情况持续存在,则可能需要重新启动服务器,并指定更多SybaseIQ线程,如下一节所述.
还有可能是-iqmt为连接数设置的值过低.
用于管理线程使用的SybaseIQ选项SybaseIQ提供了以下选项,帮助您管理线程使用.
若要设置可用于SybaseIQ的最大线程数,请设置服务器启动选项-iqmt.
缺省值是从连接数和CPU数计算得到的,通常已足够.
若要设置服务器中的内部执行线程的堆栈大小,请设置服务器启动选项-iqtss.
缺省值通常已足够,但如果复杂查询返回一条指示堆栈的深度已超过此限制的错误,则可能会增加.
有关-iqmt和-iqtss的详细信息,请参见《实用程序指南》中的第1章"运行数据库服务器".
平衡I/O64SybaseIQ若要设置单个用户将使用的最大线程数,请发出命令SETOPTIONMAX_IQ_THREADS_PER_CONNECTION.
某些操作试图分配和使用一"组"线程.
要设置"组"中可用的线程数,请执行命令SETOPTIONMAX_IQ_THREADS_PER_TEAM.
以上选项可用于控制特定操作使用的资源数量.
例如,DBA可以先设置此选项,然后再发出INSERT、LOAD、BACKUP或RESTORE命令.
平衡I/O本节解释在系统中平衡I/O的重要性.
它解释如何在单独的磁盘上使用磁盘条带化以及如何在单独的磁盘上找到文件,以获得更好的性能.
还会讨论对消息日志文件大小的控制.
原始I/O(在UNIX操作系统上)大多数UNIX文件系统将磁盘划分成固定大小分区.
分区是由操作系统单独访问的磁盘的物理子集.
磁盘分区的访问模式通常有两种:文件系统模式(通过UFS文件系统)或原始模式.
原始模式(有时称为字符模式)执行无缓冲的I/O,通常使用每个读取或写入系统调用与设备进行双向数据传输.
UFS模式是一种UNIX文件系统和缓冲I/O系统,它每次在缓冲区中收集数据,直到它可以传输整个缓冲区.
在创建数据库或dbspace时,可以将它放在原始设备或文件系统文件上.
SybaseIQ自动按照您指定的路径名确定它是原始分区还是文件系统文件.
原始分区可以是任意大小.
有关详细信息,请参见《系统管理指南:第一卷》第5章"使用数据库对象"中的"使用数据库对象".
使用磁盘条带化磁盘条带化是一种将单个文件的数据分散到多个磁盘驱动器的常规方法.
此方法允许在条带化的磁盘驱动器上存在连续的磁盘块.
条带化将一个或多个物理磁盘(或磁盘分区)组合成单个逻辑磁盘.
条带化磁盘跨组件物理设备对I/O传输进行拆分,从而并行执行这些传输.
与单个磁盘相比,条带化磁盘大幅提高了性能.
第4章管理系统资源性能和调优指南65磁盘条带化允许将数据块放在不同磁盘上.
第一个块位于第一个驱动器上.
第二个块位于第二个驱动器上,依此类推.
所有驱动器均已使用后,此过程再次循环,并使用驱动器上的其它块.
磁盘条带化的实际效果是数据随机分布在多个磁盘驱动器上.
针对存储于条带化磁盘上的文件的随机操作趋向于使在条带化集中的所有驱动器保持同等繁忙状态,从而使每秒的磁盘操作总数最大化.
这是数据库环境中非常有效的技术.
可以使用由操作系统和硬件提供的磁盘条带化,也可以使用SybaseIQ内部磁盘条带化.
在UNIX上设置磁盘条带化提供条带化磁盘的UNIX系统提供了相应的实用程序,用于将物理磁盘配置成条带化设备.
有关详细信息,请参见UNIX或存储管理系统文档.
在Windows上设置磁盘条带化在Windows系统上,可通过适当的SCSI-2磁盘控制器来使用硬件磁盘条带化.
如果计算机不支持硬件条带化,但您有可用于数据库的多个磁盘,则可以使用Windows条带化将磁盘I/O分散到多个磁盘上.
请使用磁盘管理工具设置Windows条带化.
磁盘条带化的建议下面是磁盘条带化的一些一般规则:为了获得最高性能,应当将条带化文件系统中的各个磁盘分散到几个磁盘控制器上.
但请小心,不要用太多磁盘使磁盘控制器饱和.
通常,在大多数SCSI计算机上,每个控制器可以处理2–3个磁盘.
有关详细信息,请参见硬件文档.
不要将磁盘与较慢的设备(例如磁带驱动器或CD-ROM)放在相同控制器上.
这会减慢磁盘控制器的速度.
在带区中每个服务器CPU分配4个磁盘.
单个磁盘必须是相同的设备.
也就是,它们必须有相同大小、相同格式,并且通常是相同品牌.
如果布局不同,则通常使用最小那个磁盘的大小,并会浪费其它磁盘空间.
而且,通常会使用最慢磁盘的速度.
通常,用于文件条带化的磁盘不应当用于任何其它目的.
例如,不要将文件条带化磁盘用作交换分区.
平衡I/O66SybaseIQ永远不要将包含根文件系统的磁盘用作条带化设备的一部分.
使用原始分区以达到最大性能.
通常,应当尽可能使用磁盘条带化.
注释为了在装载数据时获得最佳结果,请将数据转储到位于条带化磁盘上的平面文件,然后用LOADTABLE命令将数据读取到SybaseIQ中.
内部条带化SybaseIQ将其信息按块存储于一系列dbspace(设备的文件或原始分区)中.
假定正在使用磁盘条带化,则SybaseIQ会将数据分散到有可用空间的所有dbspace中.
此方式允许您一次利用多个磁盘主轴,并提供并行磁盘写入的速度.
磁盘条带化选项本节解释如何使用SybaseIQ提供的选项,而不使用第三方软件,进行磁盘条带化.
如果您已经有通过第三方软件和硬件实现的磁盘条带化解决方案,则应当使用该方法.
可以通过为CREATEDBSPACE命令指定STRIPINGON选项启用磁盘条带化.
打开或关闭磁盘条带化创建dbspace时用于更改缺省条带化的语法为:SETOPTION"PUBLIC".
DEFAULT_DISK_STRIPING={ON|OFF}DEFAULT_DISK_STRIPING选项对于所有平台的缺省值均为ON.
当磁盘条带化是ON时,传入数据将分散到有可用空间的所有dbspace.
当磁盘条带化是OFF时,dbspace(磁盘段)在逻辑文件上从前面填充,每次填充一个磁盘段.
如果更改DEFAULT_DISK_STRIPING的值,将影响不指定条带化首选项的所有后续CREATEDBSPACE操作.
磁盘条带化处于打开状态时,可以使用ALTERDBSPACEDROP命令从dbspace中删除文件.
但是,在删除dbspace之前,必须使用sp_iqemptyfile存储过程在此dbspace中重新定位所有数据.
因为磁盘条带化使数据分散在多个文件中,因此sp_iqemptyfile进程可能需要重新定位多个表和索引.
请使用sp_iqdbspaceinfo和sp_iqdbspace存储过程来确定哪些表和索引驻留在dbspace上.
第4章管理系统资源性能和调优指南67使用多个文件在dbspace中使用多个文件允许跨多个操作系统文件或分区分布SybaseIQ和临时数据.
多个文件将改进吞吐量并缩短dbspace的平均延迟时间.
可以通过ALTERDBSPACE命令向dbspace添加其它文件.
何时添加文件如果可以,请在创建dbspace时分配所有文件以确保数据分布均匀.
如果稍后添加文件,SybaseIQ将跨新旧dbspace对新数据进行条带化.
条带化可能是均匀的,也可能是不均匀的,具体取决于更新的类型.
由于版本控制而"翻转"的页数会对条带化是否重新均衡产生主要影响.
策略文件位置通过增加专门用于存储随机访问的文件的磁盘驱动器数,并由此增加每秒对这些文件执行的操作数,可以提高与这些文件相关的性能.
随机文件包括用于IQ存储、临时存储、Catalog存储的文件,以及程序(包括SybaseIQ可执行文件、用户及存储过程和应用程序)和操作系统文件.
相反,通过将这些文件放在专用磁盘驱动器上,由此消除与其它进程的争用,可以提高与顺序访问的文件相关的性能.
顺序文件包括事务日志文件和消息日志文件.
若要避免磁盘瓶颈,请遵循以下这些建议:将随机磁盘I/O和顺序磁盘I/O分开.
将SybaseIQ数据库I/O与其它数据库(例如AdaptiveServerEnterprise)中的代理表的I/O隔离.
将事务日志和消息日志放在单独的磁盘上,与IQ存储、Catalog存储和临时存储分离,并与任何代理数据库(例如AdaptiveServerEnterprise)分离.
将数据库文件、临时dbspace和事务日志文件放在与数据库服务器相同的物理计算机上.
事务日志文件事务日志文件包含允许SybaseIQ从系统故障恢复的信息.
还需要对事务日志进行审计.
此文件的缺省文件扩展名为.
log.
若要移动或重命名事务日志文件,请使用事务日志实用程序(dblog).
有关语法和详细信息,请参见《实用程序指南》中的第3章"数据库管理实用程序".
平衡I/O68SybaseIQ警告!
SybaseIQ事务日志文件与大多数关系数据库事务日志文件不同.
如果由于某个原因而丢失了数据库文件,则会失去数据库(除非丢失的是日志文件).
但是,如果有合适的备份,则可以重新装载数据库.
截断事务日志SybaseIQ在事务日志中记录从系统故障恢复所需的信息.
尽管所记录的信息对于每个提交的事务很小,但事务日志的大小却持续增长.
如果系统中有大量会更改数据的事务,则在一段时间后,日志可能增长到非常大.
日志截断通常需要相关SybaseIQ服务器脱机.
何时截断日志应当由支持SybaseIQ系统的DBA负责,并取决于日志文件的增长情况和在现场的操作过程.
应当将日志截断过程设定为至少每月一次,如果日志文件即将超过100MB,则应更频繁.
表4-6显示了在SybaseIQ中截断事务日志的方法.
表4-6:截断事务日志确保使用合适的方法.
SybaseIQ数据库复制自然地依赖于事务日志信息.
因此,仅DELETE_OLD_LOGS选项应当用于Multiplex数据库(请参见"截断Multiplex数据库的事务日志").
而且,事务日志可以向Sybase支持人员提供有价值的信息,以便进行问题诊断和重现.
两种方法都应当包括将现有日志存档(保存一份日志副本),以备Sybase支持人员需要该日志来执行进一步的诊断工作.
截断非Multiplex数据库的事务日志使用–m服务器启动开关截断非Multiplex数据库的事务日志.
请注意,建议不要将–m服务器启动开关永久保持已设置状态.
此开关应当仅用于启动SybaseIQ以执行事务日志截断.
如何执行该操作由DBA负责,但以下过程提供了一个建议.
截断非Multiplex数据库的事务日志1以一个将文件标识为日志截断配置设置的名称,创建服务器开关.
cfg文件的副本,并编辑此文件副本以添加–m开关.
2执行正常的完整备份过程,包括建立.
db和.
log文件的副本.
如果您的数据库是…则使用此方法…有关详细信息,请参见…非Multiplex–m开关,此开关导致事务日志在所有数据库的每个检查点之后被截断"截断非Multiplex数据库的事务日志"MultiplexDELETE_OLD_LOGS数据库选项"截断Multiplex数据库的事务日志"正在运行dbbackup命令行实用程序《实用程序指南》中的备份实用程序(dbbackup).
第4章管理系统资源性能和调优指南693关闭SybaseIQ.
验证是否已在iq.
msg文件中写入"CloseDatabase".
4用包含–m选项的配置文件重新启动SybaseIQ.
请注意,这时不允许有任何用户访问或事务发生.
5关闭SybaseIQ,并使用未设置–m选项的配置文件重新启动.
截断Multiplex数据库的事务日志截断Multiplex数据库的事务日志1从写入服务器备份数据库(如果尚未执行此操作).
2在写入服务器上设置DELETE_OLD_LOGS选项:SETOPTIONPublic.
Delete_Old_Logs='On'3停止写入服务器的dbremote,并以-x命令行开关重新启动它.
(为此,请创建start_dbremote.
bat脚本的特殊版本,它位于写入服务器的数据库目录中.
)这将在写入服务器上截断日志.
例如:cd\Server01\mpxdb\cmd/cstartdbremote-q-v-x-o"d:\Server01\mpxdb\dbremote.
log"-c"uid=DBA;pwd=SQL;eng=Server01;dbf=d:\Server01\mpxdb\mpxdb;links=tcpip{port=1704;host=FIONA-PC}"4在写入服务器上清除DELETE_OLD_LOGS选项:SETOPTIONPublic.
Delete_Old_Logs='Off'注释无论写入服务器日志最后截断发生于什么时间,查询服务器事务日志始终会在同步期间发生截断.
消息日志每个数据库都有消息日志文件.
此文件的缺省名称为dbname.
iqmsg,但在创建数据库时可以指定其它名称.
消息日志文件实际是在创建数据库后首次启动该数据库时创建的.
缺省情况下,SybaseIQ会在消息日志文件中记录所有消息,包括错误、状态和插入通知消息.
可以在LOAD和INSERT语句中使用参数关闭通知消息.
用于调优资源使用的选项70SybaseIQ在某些站点上,由于插入次数、LOAD选项和NOTIFY_MODULUS数据库选项设置或其它某些条件,消息日志文件常常会迅速增长.
SybaseIQ允许通过在活动IQ消息日志已满时回卷消息日志或设置最大文件大小并存档日志文件来限制此文件的大小.
有关设置最大日志文件大小、存档消息日志文件以及启用消息日志回卷的信息,请参见《系统管理指南:第一卷》第1章"SybaseIQ系统管理概述"中的"消息记录".
用于插入、删除和同步的工作空间插入或删除数据以及同步连接索引时,SybaseIQ在IQ存储中需要一些工作空间.
在需要此空间的事务提交后,将收回此空间以用于其它目的.
通常,只要在IQ存储中维护合理百分比的可用空间,就会有足够的可用空间.
但是,对于某些删除(具体取决于数据的大小及其在数据库页中的分布情况),您可能需要大量的工作空间.
在即将删除数据库的主要部分且数据稀疏分散在很多页中的情况下,可以将数据库的大小临时加倍.
设置保留空间选项两个数据库选项MAIN_RESERVED_DBSPACE_MB和TEMP_RESERVED_DBSPACE_MB控制SybaseIQ为某些操作而保留的空间数量.
有关详细信息,请参见《系统管理指南:第一卷》第5章"使用数据库对象"中的"IQmain存储和IQ临时存储空间管理".
用于调优资源使用的选项SybaseIQ数据库的并发用户数、这些用户运行的查询以及可用于这些用户的处理线程和内存可以对性能、内存使用和磁盘I/O产生巨大影响.
SybaseIQ提供了几个选项用于调整资源使用,以适应不同数目的用户和查询类型.
这些选项可能是:仅影响当前数据库的SETOPTION命令选项.
影响整个数据库服务器的命令行选项.
仅影响当前连接的连接参数.
第4章管理系统资源性能和调优指南71有关所有这些选项的详细信息,包括参数、选项何时生效以及是否可以为单个连接和PUBLIC组设置它们,请参见《参考:语句和选项》.
有关特定于优化表的信息,请参见《系统管理指南:第一卷》第5章"使用数据库对象"中的"优化存储和查询性能".
限制并发查询通过-iqgovern开关,您可以指定特定服务器上的并发查询数量.
这与连接数不同,连接数是由许可证控制的.
通过指定-iqgovern开关,您可以帮助IQ优化将缓冲区数据分页调度到磁盘上,避免过量使用内存.
-iqgovern的缺省值是(2xCPU数)+10.
您可能需要试验确定理想值.
对于使用大量活动连接的站点,请尝试将-iqgovern设置得略低些.
设置可用CPU数SybaseIQ启动命令的-iqnumbercpus开关允许您指定可用的CPU数.
建议仅在以下情况下使用此开关:在使用IntelCPU并启用超线程的计算机上在已使用操作系统实用程序将SybaseIQ限制为仅可使用其内CPU子集的计算机上有关详细信息,请参见《系统管理指南:第一卷》第2章"运行SybaseIQ"中的"设置CPU数目".
限制查询使用的临时dbspace如果查询的估计临时空间使用量超出指定大小,则QUERY_TEMP_SPACE_LIMIT选项将导致查询被拒绝.
缺省情况下,对查询使用的临时存储没有限制.
当您发出查询时,SybaseIQ会估计完成该查询所需的临时空间.
如果估计用于排序、散列和行存储的总计临时结果空间超过了当前QUERY_TEMP_SPACE_LIMIT设置,则查询会被拒绝,并且您会收到如下所示的消息:Queryrejectedbecauseitexceedstotalspaceresourcelimit(查询被拒绝,因为它超出了总空间资源限制)用于调优资源使用的选项72SybaseIQ如果此选项设置为0(缺省值),则表示没有限制,并且没有任何查询基于其临时空间需求被拒绝.
要限制每个连接的实际临时存储使用量,DBA可以为包括查询在内的所有DML语句设置MAX_TEMP_SPACE_PER_CONNECTION选项.
MAX_TEMP_SPACE_PER_CONNECTION通过语句监控并限制临时存储使用的实际运行时间.
如果连接超出MAX_TEMP_SPACE_PER_CONNECTION选项设置的限额,将返回错误并回退当前语句.
限制按行返回的查询QUERY_ROWS_RETURNED_LIMIT选项通知查询优化程序拒绝可能消耗过多资源的查询.
如果查询优化程序估计来自查询的结果集将超过此选项的值,则它会拒绝该查询,并返回消息:Queryrejectedbecauseitexceedresource:(查询被拒绝,因为它超出资源:)Query_Rows_Returned_Limit如果使用此选项,则设置它,以便它仅拒绝消耗大量资源的查询.
强制游标为非滚动游标使用没有声明宿主变量的滚动游标时,SybaseIQ将创建临时存储节点,用于缓冲查询结果.
此存储与临时存储缓冲区高速缓存分隔开.
如果正在检索的行数非常庞大(数百万),则此存储节点可能需要很多内存.
通过强制所有游标为非滚动游标,可以消除此临时存储节点.
为此,请将FORCE_NO_SCROLL_CURSORS选项设置为ON.
如果您检索的行数非常多(数百万),则最好使用此选项按照临时存储要求进行保存.
该选项对于所有新提交的查询会立即生效.
如果永远不在应用程序中使用滚动游标,则应当将此选项作为永久PUBLIC选项.
它将使用更少内存,并大幅提高查询性能.
限制游标数MAX_CURSOR_COUNT选项指定相应资源调控器,以限制连接可以一次使用的最大游标数.
缺省值为50.
如果将此选项设置为0,则允许无限数目的游标.
第4章管理系统资源性能和调优指南73限制语句数MAX_STATEMENT_COUNT选项指定相应资源调控器,以限制连接可以一次使用的最大就绪语句数.
预取高速缓存页SET选项PREFETCH_BUFFER_LIMIT可以定义SybaseIQ可用于预取(在数据库页之前的读取)的高速缓存页数.
此选项的缺省值为0.
仅当Sybase技术支持部门建议这样做时,才应设置此选项.
有关详细信息,请参见《参考:语句和选项》中的"PREFETCH_BUFFER_LIMIT选项".
SET选项BT_PREFETCH_MAX_MISS可以确定是否继续为给定查询预取页.
如果使用HG索引的查询的运行速度比预期慢很多,请尝试逐步增大此选项的值.
有关详细信息,请参见《参考:语句和选项》中的"BT_PREFETCH_MAX_MISS选项".
针对典型使用进行优化SybaseIQ可跟踪打开的游标数,并相应地分配内存.
在某些环境中,可以设置USER_RESOURCE_RESERVATION选项,以调整认为当前正在使用该产品的当前最少游标数,并因此更节省地从临时高速缓存分配内存.
应当仅在仔细的分析显示实际需要它之后,才设置此选项.
如果需要设置此选项,请与Sybase技术支持部门联系,以了解详细信息.
控制预取行数预取用于提高仅提取relative1或relative0的游标的性能.
两个连接参数允许您更改游标预取缺省值.
PrefetchRows(PROWS)可以设置预取行数;PrefetchBuffer(PBUF)可以设置此连接可用来存储预取行的内存.
在某些情况下,增加预取的行数有可能提高性能:应用程序使用非常少的绝对位置提取操作来提取许多行(几百或更多).
应用程序以高速率提取行,客户端和服务器位于同一台计算机上或通过快速网络连接.
客户端/服务器通信是通过速度较慢的网络(如拨号链接或广域网)进行的.
改进资源使用的其它方式74SybaseIQ改进资源使用的其它方式本节描述调整系统以获得最大性能或更好利用磁盘空间的几种方式.
管理Multiplex数据库中的磁盘空间由于任何服务器上的任何用户都可能处在可能需要旧版表的事务中,所以SybaseIQ不能删除这些旧版表.
在Multiplex数据库中同时发生表更新和查询时,SybaseIQ可能因此消耗非常多的磁盘空间.
所消耗的空间数量取决于数据和索引的性质以及更新率.
通过允许写入服务器删除查询不再需要的过时版本,可以释放磁盘块.
所有服务器上的所有用户都应当定期提交其当前事务,以允许恢复旧版表.
服务器可能始终正常工作,并完全可用.
sp_iqversionuse存储过程可用于显示远程服务器的版本使用情况.
查询服务器间的负载平衡您可能能够使用IQ网络客户端在Multiplex查询服务器间平衡查询负载.
此方法需要一个能够将客户端连接调度到池内计算机的中间系统,具体取决于计算机的工作负荷.
若要使用此方法,请通过使用此中间负载平衡系统的IP地址和端口号、常规服务器名称以及设置为NO的VerifyServerName连接参数,在客户端系统上创建特殊ODBCDSN.
当客户端使用此DSN进行连接时,负载平衡器将与它确认的有最低负载的计算机建立连接.
有关如何定义在查询服务器负载平衡中使用的ODBCDSN的详细信息,请参见《系统管理指南:第一卷》第4章"连接和通信参数"中的"VerifyServerName参数[Verify]".
限制数据库访问为了获得更好的查询性能,如果可能,请将数据库设置为只读,或使其在低峰使用时间进行重要更新.
当您正在表中进行插入或删除时,SybaseIQ允许多个查询用户从该表读取数据.
但是,在数据库并发更新期间,性能会降低.
第4章管理系统资源性能和调优指南75磁盘高速缓存磁盘高速缓存是操作系统临时用于存储磁盘块副本的内存.
所有基于磁盘读取和写入的文件系统通常都会通过磁盘高速缓存执行操作.
从应用程序的角度来看,涉及磁盘高速缓存的所有读取和写入等同于实际的磁盘操作.
操作系统使用两种不同方法向磁盘高速缓存分配内存:固定和动态.
在固定分配中使用预置数量的内存;通常会留出百分之10–15的内存分配量.
操作系统通常使用LRU(最近使用最少的)算法来管理此工作空间.
对于动态分配,操作系统将在运行时确定磁盘高速缓存分配量.
目标是保持尽可能多的内存处于活动备用状态,从而使对磁盘数据的需求与对真实内存的需求保持平衡.
索引提示以下几节为选择和管理索引提供某些提示.
请参见《系统管理指南:第一卷》中的第6章"使用SybaseIQ索引"了解有关这些主题的详细信息.
选择正确索引类型为列数据选择正确索引类型是很重要的.
SybaseIQ自动提供某些索引(在所有列上用于优化投影的索引,以及用于UNIQUE、PRIMARYKEYS和FOREIGNKEYS的HG索引).
虽然这些索引对某些用途来说非常有用,但您可能需要其它索引以尽快处理特定查询.
SybaseIQ查询优化程序有一个索引顾问,它可以在查询中生成优化器何时会受益于一个或多个列的其它索引的消息.
若要激活索引顾问,请将INDEX_ADVISOR选项设置为ON.
如果不启用查询计划,则消息作为查询计划的一部分或作为单独消息显示在消息日志(.
iqmsg)中,并且输出采用OWNER.
TABLE.
COLUMN格式.
有关详细信息,请参见《参考:语句和选项》第2章"数据库选项"中的"INDEX_ADVISOR选项".
如果列未使用枚举FP存储,则应考虑对连接查询中的WHERE子句引用的分组列创建一个LF或HG索引.
SybaseIQ优化程序可能需要枚举FP或HG/LF索引中的元数据以生成最佳查询计划.
HAVING子句中引用的非集合列也可能受益于LF或HG索引以帮助优化查询.
例如:SELECTc.
name,SUM(l.
price*(1-l.
discount))FROMcustomerc,orderso,lineiteml管理数据库大小和结构76SybaseIQWHEREc.
custkey=o.
custkeyANDo.
orderkey=l.
orderkeyANDo.
orderdate>="1994-01-01"ANDo.
orderdate0.
50ORDERBY2desc请注意,添加索引会增加存储要求和装载时间,并且只应在对查询性能有益的情况下执行这一操作.
使用连接索引用户经常需要一次查看多个表中的数据.
此数据可以在查询时连接,也可以提前通过创建连接索引进行连接.
有时,可以通过为以一致方式连接的列创建连接索引,提高查询性能.
因为连接索引需要大量时间和空间进行装载,所以应当只为经常需要的连接创建连接索引.
SybaseIQ连接索引支持一对多和一对一连接关系.
为删除留出足够磁盘空间删除数据行时,SybaseIQ将为包含任何被删除数据的每个数据库页创建一个版本页.
这些版本会一直保留,直到删除事务提交.
因此,在删除数据时,可能需要添加磁盘空间.
有关详细信息,请参见第394页的"重叠版本和删除".
管理数据库大小和结构本节提供关于改进数据库设计和管理数据的理念.
第4章管理系统资源性能和调优指南77管理数据库大小数据库的大小主要取决于您创建的索引,以及所维护的数据数量.
通过创建需要用于用户所发出的查询类型的所有索引,可以获得更快的查询处理速度.
但是,如果发现不需要某些表或索引,则可以删除它们.
通过这样做,可以释放磁盘空间,提高装载和备份的速度,并减少备份所需的存档存储量.
若要控制在给定表中存储的数据数量,请考虑如何以最佳方式消除不再需要的数据行.
如果数据库包含最初来自SQLAnywhere数据库的数据,则通过简单重播Anywhere删除操作,可能能够根除不需要的数据;命令语法是兼容的.
可以对AdaptiveServerEnterprise数据库中的数据执行相同操作,因为SybaseIQ提供了Transact-SQL兼容性.
控制索引碎片当索引页未被使用到最大量时,就会出现内部索引碎片.
当删除行时,可能会出现行碎片.
如果删除行的整个页,则该页将被释放,但如果页上的某些行是未使用的,则未使用的空间会留在磁盘上.
处理表的DML操作(INSERT、UPDATE、DELETE)会导致索引碎片.
两个存储过程会报告碎片:sp_iqrowdensity报告缺省索引级别的行碎片.
请参见《参考:构件块、表和过程》第7章"系统过程"中的"sp_iqrowdensity过程".
sp_iqindexfragmentation报告在补充索引中的内部碎片.
请参见《参考:构件块、表和过程》第7章"系统过程"中的"sp_iqindexfragmentation过程".
数据库管理员可能创建其它索引,以补充列上的缺省索引.
与从表中删除行时所需要的空间相比,这些索引可以使用更多空间.
两个过程都不建议执行进一步操作.
数据库管理员必须检查所报告的信息,并确定是否要执行进一步操作,例如重新创建、重组或重新生成索引.
使Catalog文件增长最少Catalog文件的增长是正常情况,它根据应用程序和Catalog内容不同而各不相同.
.
db文件的大小对性能没有影响,并且系统会根据需要重用.
db文件中的可用页.
最大限度地抑制Catalog文件的增大:管理数据库大小和结构78SybaseIQ避免对CREATETABLE语句使用INSYSTEM.
运行系统存储过程之后发出COMMIT语句.
在长时间运行的事务期间发出COMMIT语句.
非规范化以提高性能一旦以规范化形式创建了数据库,就可以执行若干基准,并决定有目的地脱离规范化以提高性能.
非规范化:可用表或列完成采用前一类范式需要如何使用数据的知识非规范化的正当理由是:所有查询都需要访问连接数据的"完整"集合派生列的计算复杂性需要选择存储非规范化有风险非规范化只能在您全面了解应用程序时才能成功执行,并且仅当性能问题指示需要这样做时,才应当执行它.
进行非规范化时要考虑的一件事情是通过更改使数据保持最新所需的工作量.
这是决策支持应用程序(它们经常需要大量数据的摘要)与事务处理需求(它们执行不连续的数据修改)的差异的良好示例.
非规范化通常以其它处理的开销来支持某些处理.
无论选择什么形式的非规范化,都可能有潜在的数据完整性问题,必须仔细记录它们,并在应用程序设计中加以解决.
非规范化的缺点非规范化有以下这些缺点:非规范化通常会使检索加速,但也会使更新减慢.
这不是在DSS环境中需要关注的实际问题.
第4章管理系统资源性能和调优指南79非规范化始终是特定于应用程序的,如果应用程序更改,则需要对其重新评估.
非规范化可以增加表的大小.
这不是SybaseIQ中的问题,因为您可以优化列数据的存储.
有关详细信息,请参见《参考:语句和选项》中的CREATETABLE语句和"MAX_QUERY_TIME选项"中的IQUNIQUE列约束.
在某些实例中,非规范化会简化编码;在其它情况下,则会使编码更复杂.
非规范化的性能优势非规范化可以通过以下方式提高性能:最小化连接需求预先计算集合值,即在数据修改时,而不是在选择时,计算它们在某些情况下,减少表的数目决定非规范化当决定是否进行非规范化时,需要分析环境中应用程序的数据访问需求,及其实际性能特征.
考虑非规范化时要考查的一些问题包括:什么是关键查询,以及什么是期望的响应时间它们使用什么表或列每个访问有多少行常用排序顺序是什么什么是并发预期最常访问的表有多大所有进程都计算摘要吗是否应当创建连接索引以提高性能使用UNIONALL视图以便更快装载80SybaseIQ使用UNIONALL视图以便更快装载UNIONALL视图可用于在为表中的所有行保留次级索引代价过高的情况下提高装载性能.
SybaseIQ允许您将数据拆分至多个单独的基表中(例如按日期).
数据将装载到这些较小的表中.
然后,通过UNIONALL视图,将表重新连接在一起,形成一个逻辑整体,之后可以对其执行查询.
UNIONALL视图对管理员来说非常高效.
例如,如果数据按月分区,则通过删除表和正确更新UNIONALL视图定义,就可以删除整个月份的数据值.
您可以有年份、季度等的许多视图定义,而不必添加额外的日期范围谓词.
若要创建UNIONALL视图,请选择可以将基表划分到多个单独物理表中的逻辑方式.
最常见的划分方式是按月划分.
例如,若要创建包括第一季度的所有月份的视图,请输入:CREATEVIEWSELECT*JANUARYUNIONALLSELECT*FEBRUARYUNIONALLSELECT*MARCHUNIONALL在每个月,可以将数据装载到单个基表中(在此示例中为JANUARY、FEBRUARY或MARCH).
在下一月,则将数据装载到有相同列和相同索引类型的新表中.
有关语法详细信息,请参见《参考:语句和选项》中的UNION操作.
注释不能在UNIONALL视图中执行INSERT.
.
.
SELECT.
UNIONALL运算符在此版本中不是完全并行的.
使用这些运算符可能会限制查询并行度.
优化引用UNIONALL视图的查询UNIONALL视图中的所有分区都必须有一组为工作优化定义的完整索引.
有DISTINCT的查询在使用UNIONALL视图时通常运行速度比基表更慢.
第4章管理系统资源性能和调优指南81SybaseIQ包括针对UNIONALL视图的专利优化技术,包括:在UNIONALL视图上拆分GROUPBY下推连接至UNIONALL视图如果您需要调整引用UNIONALL视图的查询的性能,则可能需要设置JOIN_PREFERENCE数据库选项,该选项影响UNIONALL视图之间的连接.
有关这些选项的详细信息,请参见《参考:语句和选项》中的第2章"数据库选项".
仅当UNION满足以下所有约束时,才能将它视为分区表:它只包含一个或多个UNIONALL.
UNION的每个分支在其FROM子句中只有一个表,并且该表是物理基表.
UNION的任何分支都没有DISTINCT、RANK、集合函数或GROUPBY子句.
UNION的每个分支中的SELECT子句中的每一项都是一列.
在第一个UNION分支的SELECT列表中的列的数据类型序列与UNION的每个随后分支中的序列相同.
另请参见《参考:语句和选项》中的"SELECT语句".
管理UNIONALL视图性能当ORDERBY为DESC时,不会应用某些特定优化(例如,将DISTINCT运算符推入UNIONALL视图),因为评估UNION下的DISTINCT的优化不适用于DESC顺序.
例如,下面的查询将对性能产生负面影响:SELECTDISTINCTstateFROMtestVUORDERBYstateDESC;要解决此性能问题,查询应先评估DISTINCT运算符,然后才能执行ORDERBY,在此种情况下,排序顺序为ASC,并且可应用优化:SELECTc.
stateFROM(SELECTDISTINCTstateFROMtestVUA)cORDERBYc.
stateDESC;另请参见《参考:语句和选项》中的"SELECT语句".
改进的大型单(事实)表装载82SybaseIQ改进的大型单(事实)表装载为满足呈指数级增长的信息挑战和数据实时访问需求,SybaseIQ显著增强了装载High_Group(HG)索引和包含(也称为WORD)(WD)索引的性能,同时仍然允许事务访问正在装载的表.
针对HG和WD索引的此装载性能提升将影响:INSERT.
.
.
SELECTINSERT.
.
.
LOCATIONLOADUPDATECREATEINDEX可更新游标LOADTABLE语句现在执行HG和WD索引的并行装载,因此比上一版本的执行速度更快.
网络性能以下几节提供解决某些网络性能问题的建议.
改进大型数据传输大型数据传输会同时减少总体吞吐量,并增加平均响应时间.
下面是一些在这些传输期间提高性能的建议:如果可能,在下班时段执行大型传输.
在大型传输期间限制并发查询数.
不要在大型传输期间并发运行查询和插入.
使用存储过程以减少通信总量.
使用行缓冲,以便通过网络移动大批数据.
如果经常使用大型传输,请考虑安装适合这类传输的更好的网络硬件.
例如:令牌环—在高负荷利用时段比以太网硬件有更好的响应能力.
第4章管理系统资源性能和调优指南83光纤—提供非常宽的带宽,但它通常特别昂贵,难以在整个网络中使用.
单独的网络—可以用来处理最高容量工作站与服务器之间的网络通信量.
隔离重网络负荷用户在图12-4的情况A中,访问两个不同数据库服务器的客户端使用一个网卡.
也就是,访问服务器A和B的客户端必须争用网络并通过该网卡.
在情况B中,访问服务器A的客户端使用的网卡与访问服务器B的客户端使用的网卡不同.
将数据库服务器放在不同计算机上甚至会更好.
还可以将不同数据库的高负荷用户放在不同计算机上.
图4-2:隔离重网络负荷用户网络性能84SybaseIQ将少量数据放在较小包中如果通过网络发送少量数据,请保持缺省网络包大小较小(缺省值为512字).
-p服务器启动选项允许您指定最大包大小.
客户端应用程序还可能允许您设置包大小.
将大量数据放在较大包中如果大多数应用程序发送和接收大量数据,请增加缺省网络包大小.
这将导致更少(但更大)的传输.
在服务器级处理在服务器级过滤尽可能多的数据.
性能和调优指南85第5章监控和调优性能关于本章本章介绍了用于确定系统是否正在对可用资源进行最佳利用的工具.
目录主题页码查看SybaseIQ环境86监控缓冲区高速缓存101缓冲区高速缓存结构112避免缓冲区管理器抖动113缓冲区高速缓存监控清单116监控CPU使用的系统实用程序119查看SybaseIQ环境86SybaseIQ查看SybaseIQ环境调整SybaseIQ性能的第一步是查看环境.
可以选择各种选项:使用系统监控工具(每个系统和站点都有不同的现成工具).
使用SybaseCentral中的动态性能监控器.
请参见第86页上的"监控性能统计信息".
有关Multiplex性能监控,请参见《使用SybaseIQMultiplex》.
使用一个可显示有关SybaseIQ的信息的存储过程.
请参见第93页上的"使用存储过程获取信息".
使用过程分析以跟踪存储过程、函数和事件的执行次数.
请参见第93页上的"分析数据库过程".
确定合适的索引类型.
有关选择索引类型的详细信息,请参见《系统管理指南:第一卷》中的第6章"使用SybaseIQ索引".
有关操作界面的信息,请查看插入和删除通知消息.
《系统管理指南:第一卷》中的第7章"将数据移入和移出数据库"提供了有关这些消息的详细信息.
查看SybaseIQ消息文件,缺省情况下该文件名为dbname.
iqmsg.
监控性能统计信息SybaseCentral中的性能监控器显示一个或多个涉及的节点的统计信息的集合.
统计信息实时显示在动态图表中.
可在两个不同级别访问性能监控器:Multiplex级—只能在多服务器间监控一项统计信息.
服务器级—在单服务器或Multiplex服务器上,一次最多可以监控十项统计信息.
本节介绍了仅在单服务器上进行的服务器级访问.
若要对Multiplex服务器使用Multiplex级和服务器级,请参见《使用SybaseIQMultiplex》.
在服务器级监控性能在SybaseCentral树视图中单击服务器名,然后切换到"性能监控器"选项卡.
第5章监控和调优性能性能和调优指南87自定义统计信息显示可以更改性能监控器图形的类型或内容.
更改要监控的统计信息从服务器级性能监控器启动此对话框时,一次最多可选择十项要监控的统计信息.
对于Multiplex级监控,此对话框行为有所不同.
请参见《使用SybaseIQMultiplex》.
)1单击服务器,然后切换到"性能监控器"选项卡.
2在"性能监控器"选项卡中,右键单击图表区域,从快捷方式菜单中选择"更改统计信息".
3在"更改统计信息"对话框中,选择要监控的统计信息.
将图表另存为位图可以将图表另存为.
JPEG图像文件.
1右键单击"性能监控器"图表.
2从弹出菜单中,选择"另存图表为".
3指定.
JPEG文件的文件名.
4单击"保存".
打印图表可以打印性能监控器图表.
1右键单击"性能监控器"图表.
2从弹出菜单中,选择"打印图表".
3查看打印选项并将页面输出到所需打印机.
切换图表视图可以在时序图表视图、2D条形图视图和3D条形图视图之间切换.
1右键单击"性能监控器"图表.
2从对应菜单中选择"切换图表视图".
3选择"时序图表"、"条形图2D垂直"或"条形图3D垂直".
自定义图表更改图表设置和图表刷新率(也称为监控器GUI心跳率).
1右键单击性能监控器图表区域.
查看SybaseIQ环境88SybaseIQ2选择"自定义图表".
"自定义图表"对话框包括以下组成部分:时间窗口—只有在图表为时序图表的情况下才会显示.
指定数据显示的时间段.
最小值为1分钟.
最大值为240分钟(4小时).
图表刷新率—指定图表中数据的刷新频率,以秒为单位.
该值还显示在性能监控器窗格的底部.
实际值与规范化值—实际值(缺省值)反映实际数据.
规范化值会将图表数据缩放到固定范围.
此选项仅用于显示目的,以便更好地在一个图表中显示具有不同范围的统计信息.
图例—选择可显示或隐藏图例.
3若要保存任何更改,请单击"确定".
统计信息的类别统计信息分组为以下类别:CPU使用率统计信息内存使用统计信息高速缓存统计信息线程统计信息连接统计信息请求统计信息事务统计信息存储I/O统计信息DBspace使用网络统计信息第5章监控和调优性能性能和调优指南89CPU使用率统计信息表5-1:CPU使用率内存使用统计信息表5-2:内存使用高速缓存统计信息表5-3:高速缓存统计信息名称说明缺省情况下是否监控CPU使用率IQ进程CPU使用百分比,包括系统和用户使用率.
是CPU系统使用率IQ进程CPU系统使用百分比.
否CPU用户使用率IQ进程CPU用户使用百分比.
否名称说明缺省情况下是否监控分配的内存由IQ服务器分配的内存(以兆字节计)是分配的最大内存由IQ服务器分配的最大内存(以兆字节计)否名称说明缺省情况下是否监控目录高速缓存命中数每秒目录高速缓存命中数.
否临时高速缓存命中数每秒临时高速缓存命中数.
否主高速缓存命中数每秒主高速缓存命中数.
否目录高速缓存读取数每秒查找目录高速缓存页的次数.
是临时高速缓存读取数每秒查找临时高速缓存页的次数.
否主高速缓存读取数每秒的主高速缓存页查找次数.
否目录高速缓存当前大小当前目录高速缓存大小(以兆字节计).
否临时高速缓存当前大小当前临时高速缓存大小(以兆字节计).
否查看SybaseIQ环境90SybaseIQ线程统计信息表5-4:线程统计信息主高速缓存当前大小当前主高速缓存大小(以兆字节计).
否使用中的目录高速缓存百分比使用中的目录高速缓存百分比.
否正在使用的临时高速缓存百分比正在使用的临时高速缓存百分比.
否使用中的主高速缓存百分比使用中的主高速缓存百分比.
否已固定的目录高速缓存已固定的目录高速缓存页数.
否已固定的临时高速缓存已固定的临时高速缓存页数.
否已固定的主高速缓存已固定的主高速缓存页数.
否已固定的目录高速缓存百分比已固定的目录高速缓存的百分比.
否已固定的临时高速缓存百分比已固定的临时高速缓存的百分比.
否主高速缓存固定百分比主高速缓存固定的百分比.
否目录高速缓存脏页百分比目录高速缓存脏页的百分比.
否临时高速缓存脏页百分比临时高速缓存脏页的百分比.
否主高速缓存脏页百分比主高速缓存脏页的百分比.
否名称说明缺省情况下是否监控名称说明缺省情况下是否监控正在使用的IQ线程IQ服务器使用的线程数否可用IQ线程IQ服务器中可用的线程数否已在使用的SA线程数SQLAnywhere引擎使用的线程数.
否第5章监控和调优性能性能和调优指南91连接统计信息表5-5:连接统计信息请求统计信息表5-6:请求统计信息事务统计信息表5-7:事务统计信息名称说明缺省情况下是否监控连接总计连接总数包括用户和INC连接.
是用户连接数用户连接数.
否INC进来的连接数INC进来的连接数否INC外发的连接数INC外发的连接数否每分钟的用户连接数每分钟的用户连接数否每分钟断开的用户连接数每分钟断开的用户连接数否名称说明缺省情况下是否监控请求为使服务器能够处理新请求或继续处理现有的请求每秒进入服务器的次数.
否未调度的请求当前排队等待可用服务器线程的请求的数量.
否IQ正在等待操作正在等待资源调控器的IQ操作数否IQ活动的操作活动的IQ操作数否名称说明缺省情况下是否监控事务总数包括用户事务和INC事务在内的活动事务的总数.
否用户事务计数活动的用户事务数否INC事务计数活动的INC事务数否活动LoadTable语句活动LOADTABLE语句数否查看SybaseIQ环境92SybaseIQ存储I/O统计信息表5-8:存储I/O统计信息DBspace使用表5-9:DBSpace使用网络统计信息表5-10:网络统计信息名称说明缺省情况下是否监控Catalog存储磁盘读取数每秒从catalog存储读取的千字节数.
否临时存储磁盘读取数每秒从临时存储读取的千字节数.
否Main存储磁盘读取数每秒从main存储读取的千字节数.
否Catalog存储磁盘写入数每秒写入catalog存储的千字节数.
否临时存储磁盘写入数每秒写入临时存储的千字节数.
否Main存储磁盘写入数每秒写入main存储的千字节数.
否名称说明缺省情况下是否监控正在使用的DBSpace文件大小正在使用的DBSpace大小.
每个dbspace均有一项此类统计信息.
否可用的DBSpace大小的百分比可用于每个dbspace文件的可用空间百分比.
每个文件的每个dbspace均有一项此类统计信息.
否名称说明缺省情况下是否监控收到的字节客户端/服务器通信过程中每秒收到的字节数.
是收到的未压缩字节禁用压缩时,在客户端/服务器通信过程中每秒收到的字节数.
否发送的字节客户端/服务器通信过程中每秒发送的字节数.
是第5章监控和调优性能性能和调优指南93使用存储过程获取信息SybaseIQ提供的几个存储过程可以显示有关数据库的信息:sp_iqconnection显示有关用户连接和版本的统计信息sp_iqcontext显示有关语句正在执行什么的信息sp_iqcheckdb检查当前数据库的有效性sp_iqdbstatistics报告最近sp_iqcheckdb的结果sp_iqdbsize给出当前数据库的大小sp_iqspaceinfo显示数据库中每个对象的空间使用情况sp_iqstatus显示有关数据库的杂项状态信息.
sp_iqtablesize给出您指定的表的大小.
sp_iqgroupsize列出指定组的成员.
有关所有SybaseIQ存储过程的语法详细信息和示例,请参见《参考:构件块、表和过程》.
分析数据库过程过程分析显示执行存储过程、函数、事件、系统触发器和触发器需要多长时间.
您也可以查看过程中每一行的执行时间.
利用数据库分析信息,您可以确定微调哪些过程就可以提高数据库的性能.
启用分析后,SybaseIQ将监控哪些存储过程、函数、事件、系统触发器以及触发器被使用,从而跟踪执行它们用了多少时间,以及它们分别被调用了多少次.
发送的未压缩字节禁用压缩时,在客户端/服务器通信过程中每秒发送的字节数.
否可用通信缓冲区数可用网络通信缓冲区的数量.
否通信缓冲区总数网络通信缓冲区的总数.
否名称说明缺省情况下是否监控查看SybaseIQ环境94SybaseIQ分析信息由服务器存储在内存中,可以在SybaseCentral中通过"分析"选项卡或在InteractiveSQL中进行查看.
分析功能一旦启用,数据库就会收集分析信息,直到您禁用分析功能或服务器关机为止.
有关在InteractiveSQL中获取分析信息的详细信息,请参见第100页上的"在InteractiveSQL中查看过程分析信息".
启用过程分析过程分析跟踪所有连接对过程和触发器的使用.
您可以在SybaseCentral或InteractiveSQL中启用分析.
若要启用并使用过程分析,必须具有DBA权限.
启用分析(SybaseCentral):1以具有DBA权限的用户身份连接到数据库.
2在左窗格中选择数据库.
3从"文件"菜单中选择"属性".
随即出现"数据库"属性表.
4在"分析"选项卡上选择"对此数据库启用分析"(EnableProfilingonThisDatabase).
5单击"确定"以关闭该属性表.
注释您也可以通过在SybaseCentral中右键单击数据库来启用分析.
从弹出菜单中,选择"分析">"开始分析".
启用分析(SQL):1以具有DBA权限的用户身份连接到数据库.
2用ON设置调用sa_server_option存储过程.
例如,输入:CALLsa_server_option('procedure_profiling','ON')如有必要,您能够看到特定用户正在使用什么过程,并且不会阻止其它连接使用数据库.
当连接已存在或有多个用户使用同一用户ID进行连接时,这是非常有用的.
第5章监控和调优性能性能和调优指南95过滤用户的过程分析:1以具有DBA权限的用户身份连接到数据库.
2调用以下过程:CALLsa_server_option('ProfileFilterUser','userid')userid的值是正被监控的用户的名称.
重置过程分析重置分析后,数据库会清除旧信息,并立即开始收集有关过程、函数、事件和触发器的新信息.
下面几节假定您已经作为具有DBA权限的用户身份连接到数据库并且该过程分析已启用.
重置分析(SybaseCentral):1在左窗格中选择数据库.
2从"文件"菜单中选择"属性".
随即出现"数据库"属性表.
3在"分析"选项卡上单击"立即重置".
4单击"确定"以关闭该属性表.
注释您也可以通过在SybaseCentral中右键单击数据库来重置分析.
从弹出菜单中,单击"分析">"重置分析信息".
重置分析(SQL):使用RESET设置调用sa_server_option存储过程.
例如,输入:CALLsa_server_option('procedure_profiling','RESET')禁用过程分析当收集完分析信息后,可以禁用分析或清除分析.
如果禁用分析,数据库将停止收集分析信息,而在此刻之前收集的信息会留在SybaseCentral中的"分析"选项卡上.
如果清除分析,数据库将关闭分析功能,并且删除SybaseCentral中"分析"选项卡上的所有分析数据.
查看SybaseIQ环境96SybaseIQ禁用分析(SybaseCentral):1在左窗格中选择数据库.
2从"文件"菜单中选择"属性".
随即出现"数据库"属性表.
3在"分析"选项卡上,清除"对此数据库启用分析"(EnableProfilingonThisDatabase)选项.
4单击"确定"以关闭该属性表.
注释您也可以通过在SybaseCentral中右键单击数据库来禁用分析.
从弹出菜单中,选择"分析">"停止分析".
禁用分析(SQL):用OFF设置调用sa_server_option存储过程.
例如,输入:CALLsa_server_option('procedure_profiling','OFF')清除分析(SybaseCentral):1在左窗格中选择数据库.
2从"文件"菜单中选择"属性".
随即出现"数据库"属性表.
3在"分析"选项卡上,单击"立即清除".
只有在分析已启用的情况下,才能清除分析.
4单击"确定"以关闭该属性表.
注释您也可以通过在SybaseCentral中右键单击数据库来清除分析.
从弹出菜单中,选择"分析">"清除分析信息".
清除分析(SQL):用CLEAR设置调用sa_server_option存储过程.
例如,输入:CALLsa_server_option('procedure_profiling','CLEAR')第5章监控和调优性能性能和调优指南97在SybaseCentral中查看过程分析信息根据您是选择查看有关整个数据库、特定类型的对象的信息还是选择查看有关特定过程的信息,过程分析会为您提供不同的信息.
该信息可以通过以下方式显示:数据库中所有分析过的对象的详细信息所有存储过程和函数的详细信息所有事件的详细信息所有触发器的详细信息所有系统触发器的详细信息单个分析过的对象的详细信息若要查看分析信息,必须连接到数据库并启用分析.
当您查看有关整个数据库的分析信息时,以下列将出现:名称列出对象的名称.
所有者列出对象的所有者.
表列出触发器属于哪个表(此列仅出现在数据库"分析"选项卡上).
事件显示系统触发器的触发器类型.
可以是Update或Delete.
类型列出对象的类型,例如,过程.
#Exes.
列出每个对象已被调用的次数.
#msecs.
列出各个对象的总执行时间.
这些列提供已经在数据库中执行的所有过程的分析信息的摘要.
一个过程可以调用其它过程,因此列出的项目可能会多于用户专门调用的项目.
查看存储过程和函数的摘要分析信息:1在左窗格中选择"过程和函数"文件夹.
2单击右窗格中的"分析"选项卡.
有关数据库中所有存储过程和函数的分析信息随即出现在"分析"选项卡上.
查看事件的摘要分析信息:1在左窗格中打开"事件"文件夹.
数据库中所有事件的列表将出现在右窗格中的"事件"选项卡上.
查看SybaseIQ环境98SybaseIQ2单击右窗格中的"分析"选项卡.
有关数据库中所有事件的分析信息随即出现在"分析"选项卡上.
查看触发器的摘要分析信息:1在左窗格中打开"触发器"文件夹.
数据库中所有触发器的列表会出现在"触发器"选项卡上.
2单击右窗格中的"分析"选项卡.
有关数据库中所有触发器的分析信息随即出现在"分析"选项卡上.
查看系统触发器的摘要分析信息1在左窗格中打开"系统触发器"文件夹.
数据库中的所有触发器的列表会出现在"系统触发器"选项卡上.
2单击右窗格中的"分析"选项卡.
有关数据库中所有系统触发器的分析信息随即出现在"分析"选项卡上.
查看特定过程的分析信息SybaseIQ提供有关单个存储过程、函数、事件和触发器的过程分析信息.
SybaseCentral所显示的有关单个过程的信息不同于它所显示的有关数据库中所有存储过程、函数、事件或触发器的信息.
当您查看有关特定过程的分析信息时,以下列将出现:调用列出对象已被调用的次数.
毫秒列出各个对象的总执行时间.
行列出每个过程行旁边的行号.
源逐行显示SQL过程.
过程会分行显示,您可以查看哪些行具有较长的执行时间并因此可以通过更改来提高过程的性能.
若要访问过程分析信息,您必须连接到数据库,启用分析并具有DBA权限.
查看存储过程或函数的分析信息:1在左窗格中展开数据库.
2在左窗格中选择"过程和函数"文件夹.
数据库中所有存储过程和函数的列表会出现在右窗格中的"过程和函数"选项卡上.
第5章监控和调优性能性能和调优指南993在左窗格中单击要分析的存储过程或函数.
4单击右窗格中的"分析"选项卡.
有关特定存储过程或函数的分析信息随即出现在右窗格中的"分析"选项卡上.
查看事件的分析信息:1在左窗格中展开数据库.
2在左窗格中选择"事件"文件夹.
数据库中所有事件的列表会出现在右窗格中的"事件"选项卡上.
3在左窗格中单击要分析的事件.
4单击右窗格中的"分析"选项卡.
有关特定事件的分析信息随即出现在右窗格中的"分析"选项卡上.
查看触发器的分析信息:1在左窗格中展开数据库.
2在左窗格中打开"触发器"文件夹.
所有触发器的列表会出现在右窗格中的"触发器"选项卡上.
3在右窗格中选择您要分析的触发器.
4单击右窗格中的"分析"选项卡.
有关特定触发器的分析信息随即出现在右窗格中的"分析"选项卡上.
查看系统触发器的分析信息1在左窗格中展开数据库.
2在左窗格中打开"系统触发器"文件夹.
所有系统触发器的列表会出现在右窗格中的"系统触发器"选项卡上.
3在右窗格中选择您要分析的系统触发器.
4单击右窗格中的"分析"选项卡.
有关特定系统触发器的分析信息随即出现在右窗格中的"分析"选项卡上.
查看SybaseIQ环境100SybaseIQ在InteractiveSQL中查看过程分析信息您可以使用存储过程来查看过程分析信息.
无论您是在SybaseCentral中还是在InteractiveSQL中查看分析信息,该信息都是相同的.
sa_procedure_profile_summary存储过程提供有关数据库中所有过程的信息.
您可以使用该过程在同一结果集中查看存储过程、函数、事件、系统触发器和触发器的分析数据.
以下参数将限制该过程返回的行.
p_object_name指定要分析的对象的名称.
p_owner_name指定要分析其对象的所有者.
p_table_name指定要分析触发器的表.
p_object_type指定要分析的对象的类型.
您可以从以下五个选项中进行选择.
通过选择其中一个值,可以将结果集限制为指定类型的对象.
P存储过程F函数T触发器E事件S系统触发器p_ordering指定结果集的排序顺序.
请注意,由于一个过程可以调用其它过程,因此所列出的项目可能会多于用户专门调用的项目.
下面几节假定您已经作为具有DBA权限的用户连接到数据库并且过程分析已启用.
查看所有过程的摘要分析信息:1执行sa_procedure_profile_summary存储过程.
例如,输入:CALLsa_procedure_profile_summary2从"SQL"菜单中选择"执行".
"结果"窗格中会出现一个结果集,该结果集包含有关数据库中所有过程的信息.
有关sa_procedure_profile_summary存储过程的详细信息,请参见《SQLAnywhereServer—SQL参考》.
第5章监控和调优性能性能和调优指南101在InteractiveSQL中查看特定过程的分析信息sa_procedure_profile存储过程提供特定过程中每一行的相关信息.
结果集包括行号、执行时间以及占过程中所有行的总执行时间的百分比.
您可以使用以下参数来限制该过程返回的行:p_object_name指定要分析的对象的名称.
p_owner_name指定要分析其对象的所有者.
p_table_name指定要分析触发器的表.
如果查询中没有包含任何参数,则该过程将返回已调用的所有过程的分析信息.
查看过程中特定行的分析信息:1执行sa_procedure_profile存储过程.
例如,输入:CALLsa_procedure_profile2从"SQL"菜单中选择"执行".
"结果"窗格中会显示一个结果集,该结果集包含各个过程行的分析信息.
有关sa_procedure_profile存储过程的详细信息,请参见《SQLAnywhereServer—SQL参考》.
监控缓冲区高速缓存SybaseIQ提供了相应工具以监控缓冲区高速缓存的性能.
此监控器将收集与SybaseIQ中执行的缓冲区高速缓存、内存和I/O功能有关的统计信息,并将其存储在日志文件中.
缓冲区高速缓存性能是SybaseIQ的总体性能中的关键因素.
使用监控器提供的信息,可以对分配给主和临时缓冲区高速缓存的内存数量进行微调.
如果一个高速缓存正在执行明显比另一个高速缓存更多的I/O,则重新分配少量内存,例如以迭代方式分配百分之十的高速缓存.
在重新分配之后,请重新运行工作负荷,并监控性能更改.
监控缓冲区高速缓存102SybaseIQ启动缓冲区高速缓存监控器从InteractiveSQL运行SybaseIQ缓冲区高速缓存监控器.
在每次启动监控器时,它都会在SybaseIQ中作为单独内核线程运行.
使用此语法启动监控器:IQUTILITIES{MAIN|PRIVATE}INTOdummy_table_nameSTARTMONITOR'monitor_options[…]'MAIN启动对主缓冲区高速缓存的监控,监控针对您所连接的数据库的IQ存储中的所有表进行.
PRIVATE启动对临时缓冲区高速缓存的监控,监控针对您所连接的数据库的临时存储区中的所有表进行.
您需要发出单独的命令,以监控每个缓冲区高速缓存.
在监控器收集结果时,必须使每个会话保持打开状态;关闭其连接时,监控器的运行会停止.
一个连接可以运行最多两个监控器运行,一个用于主缓冲区高速缓存,另一个用于临时缓冲区高速缓存.
dummy_table_name可以是任何SybaseIQ基表或临时表.
为了与其它IQUTILITIES命令语法兼容,必须提供表名称.
最好使用仅用于监控的表.
若要控制监控器输出文件的存放目录,请设置MONITOR_OUTPUT_DIRECTORY选项.
如果不设置此选项,则监控器会将输出发送到数据库所在的相同目录.
所有监控器输出文件均用于监控器运行期间.
在监控器运行已停止之后,这些文件会保留下来.
在创建任何Multiplex查询服务器之前,要么声明在监控中使用的临时表,要么在创建新数据库时创建永久性伪表.
这些解决方案避免了DDL更改,以便在生产运行期间数据在查询服务器上一直保持工作状态.
提示若要简化监控器的使用,请创建存储过程以声明伪表,并指定其输出位置,然后启动监控器.
'monitor_options'可以包括以下值中的一个或多个:-summary显示主和临时缓冲区高速缓存的摘要信息.
如果不指定任何监控器选项,则会收到摘要报告.
所显示的字段是为其它选项描述的字段,外加以下字段:Users:连接到缓冲区高速缓存的用户数IO:由缓冲区高速缓存执行的组合物理读取数和写入数第5章监控和调优性能性能和调优指南103-cache详细显示主或临时缓冲区高速缓存的活动.
关键字段是Finds、HR%和BWaits.
显示的字段如下:Finds:对缓冲区高速缓存的查找请求数.
如果Finds值突然降到零并保持不变,则服务器被死锁.
当服务器有任何活动时,Finds值应当是非零值.
Creats:在数据库中创建页的请求数Dests:在数据库中销毁页的请求数Dirty:缓冲区脏化(修改)的次数HR%:命中率,在不请求任何I/O的情况下,缓冲区高速缓存满足查询的百分比.
命中率越高越好,如果高速缓存设置得足够大,通常是90%–100%.
对于大型查询,命中率可能一开始很低,但预取开始工作时则会增加.
BWaits:强制等待繁忙页(页帧争用)的查找请求数.
通常它很低,但在某些特殊情况下它可能很高.
例如,如果同时启动相同查询,则都需要相同页,因此第二个请求必须等待第一个请求从磁盘获取页.
ReReads:在相同事务中存储区的相同部分需要重读到高速缓存中的大约次数.
应当始终很低,但对SybaseIQ12.
4.
2和以上版本来说,高数字也没关系.
FMiss:假丢失数,缓冲区高速缓存需要多次查找才能在内存中找到页的次数.
此数字应当是0或非常小.
如果该值很高,则可能发生了回退,并且需要重复某些操作.
Cloned:SybaseIQ为了给写入程序建立新版本而需要的缓冲区数,而它必须为并发读取程序保留早期版本.
仅当其它用户正在查看某页时,才复制该页.
Reads/Writes:由缓冲区高速缓存执行的物理读取和写入.
PF/PFRead:预取请求数和为预取完成的读取数.
GDirty:LRU缓冲区被脏抢夺并且SybaseIQ在使用它之前必须将其写出的次数.
此值不应当长时间大于0.
如果是,则可能需要增加清理程序线程数,或移动清洗标记.
Pin%:缓冲区高速缓存中正在使用和锁定的页的百分比.
Dirty%:被修改的缓冲块的百分比.
不要尝试让此值超过85–90%;否则,GDirty将变为大于0.
监控缓冲区高速缓存104SybaseIQ-cache_by_type可生成与-cache相同的结果,但是前者通过IQ页类型进行细分.
(例外是Bwaits列,此列仅显示总计.
)当需要向Sybase技术支持部门提供信息时,此格式最有用.
-file_suffixsuffix可创建名为.
--的监控输出文件.
如果不指定后缀,则缺省情况下为iqmon.
-io显示在指定时段内主或临时(专用)缓冲区高速缓存I/O率和压缩率.
这些计数器表示服务器的所有活动;这些信息不会被设备断开.
显示的字段如下:Reads:由缓冲区高速缓存执行的物理读取数Lrd(KB):读入的逻辑KB数(页大小乘以请求数)Prd(KB):读入的物理KB数Rratio:逻辑对物理读入数据的压缩率,用于衡量磁盘读取的压缩效率Writes:缓冲区高速缓存执行的物理写入数Lwrt(KB):逻辑写入KB数Pwrt(KB):物理写入KB数Wratio:逻辑与物理写入数据的压缩率-bufalloc显示有关主缓冲区分配器或临时缓冲区分配器的信息,该分配器可在缓冲区高速缓存中保留空间以供排序、散列和位图等对象使用.
OU:User_Resource_Reservation选项设置(以前是Optimize_For_This_Many_Users)AU:当前活动用户数MaxBuf:缓冲区分配器控制下的缓冲区数Avail:pin配额分配的当前可用缓冲区数AvPF:预取配额分配的当前可用缓冲区数Slots:使用缓冲区高速缓存配额的当前注册对象数PinUser:使用pin配额的对象数(例如散列、排序和B树对象)PFUsr:使用预取配额的对象数Posted:预先计划配额用户的对象数UnPost:作为特别配额用户的对象数第5章监控和调优性能性能和调优指南105Locks:在缓冲区分配器上执行的互斥锁定数Waits:线程必须等待锁定的次数-contention显示很多关键的缓冲区高速缓存和内存管理器锁.
这些锁定和互斥计数器显示在缓冲区高速缓存和堆内存中的活动,以及解除这些锁定的速度.
监视超时数.
如果系统时间超过20%,则它指示出现问题.
注释由于操作系统的改进,SybaseIQ不再使用旋转锁定.
因此,很少使用woTO、Loops和TOs统计信息.
AU:当前活动用户数LRULks:LRU的锁定次数(对临时高速缓存重复)woTO:授予锁定而没有超时的次数(对临时高速缓存重复)Loops:在授予锁定之前SybaseIQ重试的次数(对临时高速缓存重复)TOs:SybaseIQ超时并且必须等待锁定的次数(对临时高速缓存重复)BWaits:高速缓存中的缓冲区"忙等待"数(对临时高速缓存重复)IOLock:SybaseIQ锁定压缩I/O池的次数(对临时高速缓存重复);可以被忽略IOWait:SybaseIQ必须等待对压缩I/O池的锁定的次数(对临时高速缓存重复);可以被忽略HTLock:SybaseIQ锁定块映射散列表的次数(对临时高速缓存重复)HTWait:SybaseIQ必须等待块映射散列表的次数(对临时高速缓存重复);HTLock和HTWait指示您正在使用多少块映射FLLock:SybaseIQ必须锁定空闲列表的次数(对临时高速缓存重复)FLWait:SybaseIQ必须等待对空闲列表的锁定的次数(对临时高速缓存重复)MemLks:SybaseIQ取得内存管理器(堆)锁定的次数MemWts:SybaseIQ必须等待内存管理器锁定的次数监控缓冲区高速缓存106SybaseIQ-threads显示处理线程管理器所使用的计数器.
值是全服务器范围的(即无论对主或专用选择此选项都没关系).
它们表示在报告的最后一页后出现的新事件.
cpus:SybaseIQ正在使用的CPU数;它可能小于系统上的数字Limit:SybaseIQ可以使用的最大线程数NTeams:当前在使用中的线程组数MaxTms:曾经在使用中的最大组数NThrds:当前的现有线程数Resrvd:为系统(连接)使用而保留的线程数Free:可供分配的线程数.
请监控此值,如果它非常低,则指示线程空闲Locks:对线程管理器使用的锁定数Waits:SybaseIQ必须等待对线程管理器的锁定的次数注释对象或查询需要工作时,SybaseIQ将分配一组名为线程组的处理线程.
在调整线程使用时有用的选项包括数据库选项MAX_IQ_THREADS_PER_CONNECTION和MAX_IQ_THREADS_PER_TEAM,以及用于指定SybaseIQ可以使用的线程数的服务器选项-iqmt.
-interval可指定报告间隔(秒).
缺省值为每60秒.
最小值为每2秒.
通过在查询期间或有性能问题的时间按缺省间隔运行监控器,通常可以获取有用的结果.
非常短的间隔可能不会给出有意义的结果.
间隔应当与作业时间成比例;通常,一分钟已足够.
第一个显示内容显示自服务器启动以来的计数器.
后续显示则显示与前一显示不同的地方.
-append|-truncate分别是追加到现有输出文件的末尾,或截断现有输出文件.
Truncate是缺省值.
-debug主要用于向Sybase技术支持部门提供信息.
它显示对性能监控器可用的所有信息,无论是否有覆盖相同信息的标准显示模式.
页首是按磁盘块类型分类的统计信息阵列.
其后是其它缓冲区高速缓存统计信息、内存管理器统计信息、线程管理器统计信息、空闲列表统计信息、CPU利用率和最终缓冲区分配器统计信息.
然后,缓冲区分配器统计信息按客户端类型(散列、排序等)分类,并显示最近分配的缓冲区柱状图.
请注意,内存分配内容指示有多少是在报告的最后一页后分配的.
第5章监控和调优性能性能和调优指南107注释间隔(有两个例外)应用于每行输出,而不是每页.
例外是-cache_by_type和-debug,这时,每个显示内容以新页开始.
在监控器运行时检查结果在UNIX系统上,可以在查询正在运行时监视监控器输出.
例如,可以使用以下命令启动监控器:iqutilitiesmainintomonitor_tabstartmonitor"-cache-interval2-file_suffixiqmon"此命令将输出发送到名为dbname.
conn#-[main|temp]-iqmon的ASCII文件.
因此,对于数据库iqdemo,结果会发送到iqdemo.
2-main-iqmon.
若要监视结果,请在系统提示下发出以下命令:$tail-fiqdemo.
2-main-iqmon停止缓冲区高速缓存监控器用于停止监控器运行的命令与用于启动它的命令相似,只是不需要指定任何选项.
使用此语法可以停止SybaseIQ缓冲区高速缓存监控器:IQUTILITIES{MAIN|PRIVATE}INTOdummy_table_nameSTOPMONITOR注释为了让某些选项设置生效,必须重新启动数据库.
如果监控器正在运行,则需要关闭它,以便数据库可以重新启动.
检查并保存监控器结果监控器在普通文本文件中存储结果.
此文件缺省为:dbname.
connection#-main-iqmon(对于主缓冲区高速缓存结果)dbname.
connection#-temp-iqmon(对于临时缓冲区高速缓存结果)前缀dbname.
connection#表示数据库名称和连接号.
如果看见多个连接号,并且不能确定哪个是您的,则可以运行Catalog存储过程sa_conn_info.
此过程将显示与数据库的每个活动连接的连接号、用户ID和其它信息.
监控缓冲区高速缓存108SybaseIQ可以在IQUTILITIES命令中使用-file_suffix参数,将后缀iqmon更改为您选择的后缀.
若要查看监控器运行的结果,请使用您通常用于显示或打印文件的文本编辑器或任何其它方法.
当再次从相同数据库和连接号运行监控器时,缺省情况下它将覆盖以前的结果.
如果需要保存监控器运行的结果,请在从相同数据库再次启动监控器之前将文件复制到另一个位置,或使用-append选项.
监控器结果的示例本节使用不同监控器选项来显示示例结果.
-summary选项产生像下面这样的结果.
注意,无论在IQUTILITIES命令中请求哪个,它都会同时显示主和临时缓冲区高速缓存统计信息:SybaseAdaptiveServerIQ性能监控器3.
2版用于Main高速缓存的选项字符串:"-summary-interval5"Summary2004-07-1613:53:24活动|Main高速缓存|临时高速缓存Users|FindsHR%Reads/WritesGDirtyPin%Dirty%InUse%|FindsHR%Reads/WritesGDirtyPin%Dirty%InUse%028699.
32/3400.
01.
626.
260899.
72/4700.
03.
620.
01262199.
416/15505.
68.
781.
7412199.
616/163011.
423.
267.
31264699.
86/4801.
613.
5100.
0338899.
86/7014.
140.
994.
51268499.
97/7805.
614.
3100.
0349799.
98/103110.
942.
399.
11199399.
917/2204.
031.
0100.
0334298.
7122/14908.
241.
491.
41247999.
932/11005.
613.
5100.
0337099.
8第5章监控和调优性能性能和调优指南10955/112011.
445.
595.
913273100.
00/005.
623.
8100.
03951100.
00/108113.
649.
1100.
01251299.
92/001.
631.
0100.
0391698.
988/17305.
548.
6100.
01126499.
966/13104.
045.
2100.
0431798.
9378/30506.
440.
077.
31212299.
830/12505.
612.
799.
2312299.
767/127012.
340.
090.
513370100.
02/005.
623.
0100.
04034100.
02/98213.
246.
498.
21298199.
92/005.
631.
7100.
0371599.
92/110014.
153.
2100.
01335199.
613/305.
639.
7100.
0413199.
713/123014.
157.
7100.
01328699.
613/1305.
640.
5100.
0413599.
615/139012.
355.
997.
71296100.
00/001.
641.
3100.
0364696.
9366/32007.
353.
2100.
01123099.
471/12906.
358.
7100.
0422198.
9390/29709.
559.
191.
811900100.
0125/27904.
050.
0100.
04102100.
0344/27907.
738.
672.
3SybaseAdaptiveServerIQ性能监视器正在关机042298.
816/9900.
00.
899.
285398.
934/10100.
01.
859.
1-cache选项产生类似下面的结果,它针对临时缓冲区高速缓存.
用于临时高速缓存的选项字符串:"-cache-interval10"临时共享缓冲区高速缓存2001-02-1817:43:55FindsCreatsDestsDirtyHR%BWaitsReReadsFMissClonedReads/PF/GDirtyPin%Dirty%监控缓冲区高速缓存110SybaseIQWritesPFReadTm:64082578499.
404004/00/000.
02.
8Tm:113910983109100.
000000/00/000.
05.
5Tm:6794754749754100.
000000/00/000.
06.
1Tm:10759164616461646100.
000000/00/000.
06.
1-io选项产生类似下面的结果,它针对主缓冲区高速缓存.
用于main高速缓存的选项字符串:"-IO-interval5"主缓冲区高速缓存2001-02-1813:58:48输入输出ReadsLrd(KB)Prd(KB)RratioWritesLwrt(KB)Pwrt(KB)WratioMn:1040341.
181456232.
43Mn:0000.
002184342.
43Mn:0000.
00728112.
43Mn:0000.
002288352.
48Mn:0000.
00632521002.
51Mn:0000.
0054216932.
32Mn:0000.
00642561012.
52Mn:0000.
0062248942.
62Mn:0000.
00732921102.
65Mn:0000.
001054201213.
47-buffalloc选项产生类似下面的结果.
用于Main高速缓存的选项字符串:"-bufalloc-file_suffixbufalloc-iqmon-append-interval10"缓冲区分配2001-02-1810:58:39OU/AUMaxBufAvailAvPFSlotsPinUsrPFUsrPostedUnPostQuotaLocksWaits1/01592159220000000101/11592159220000000101/1159215922000000010注释实际的-contention输出将在同一行上显示Main高速缓存、临时高速缓存和内存管理器.
因为此格式非常宽,所以这些列集合中的每一个都在这里单独显示.
第5章监控和调优性能性能和调优指南111main高速缓存的-contention结果是:用于Main高速缓存的选项字符串:"-contention-file_suffixcontention-iqmon-append-interval10"争用2001-02-1810:57:03Main高速缓存|AU|LRULkswoTOLoopsTOsBWaitsIOLockIOWaitHTLockHTWaitFLLockFLWait0660000105040129580000160011170601151300013780208013700000940201001156000046020120188500002480201401122300003321201601346000066020180临时高速缓存的-contention结果是:临时高速缓存|LRULkswoTOLoopsTOsBWaitsIOLockIOWaitHTLockHTWaitFLLockFLWait70000010405046600002015012096300002080201118600002020231357000020202514440000203029088400002020311157300002050371内存管理器的结果是:|MemoryMgrMemLksMemWts5548313570502048018642013702202033缓冲区高速缓存结构112SybaseIQ-threads选项的结果像下面这样:用于Main高速缓存的选项字符串:"-threads-file_suffixthreads-iqmon-append-interval10"线程2001-02-1810:59:24CPUsLimitNTeamsMaxTmsNThrdsResrvdFreeLocksWaits101004121001368106590101006121001263461010061210012630010100712100126211101007121001262001010071210012581510100712100125800缓冲区高速缓存结构SybaseIQ按照系统的CPU数自动计算缓冲区高速缓存的高速缓存分区数.
如果多CPU配置中的装载或查询性能比期望值慢,可能能够通过更改CACHE_PARTITIONS数据库选项的值来提高它.
有关详细信息,请参见《参考:语句和选项》中的CACHE_PARTITIONS选项.
当缓冲区接近高速缓存的最近最少使用(LRU)末尾时,它们将越过清洗标记.
SybaseIQ会将最旧页(那些越过清洗标记的页)写出到磁盘中,以便可以重用它们占据的高速缓存空间.
一组SybaseIQ处理线程(名为清理程序线程)将清除(写入)最旧的缓冲区.
当SybaseIQ需要将一页数据读取到高速缓存中时,它会抢夺LRU缓冲区.
如果缓冲区仍然是"脏的"(修改),则它必须首先写入到磁盘中.
监控器-cache报告中的Gdirty列会显示LRU缓冲区被脏抢夺并且SybaseIQ在使用它之前必须先将它写出到磁盘的次数.
第5章监控和调优性能性能和调优指南113通常,SybaseIQ能够使Gdirty值保持为0.
如果此值在较长时段内大于0,则可能需要调整某个用于控制清理程序线程数和清洗标记的数据库选项.
请参见《参考:语句和选项》中的"SWEEPER_THREADS_PERCENT选项"或"WASH_AREA_BUFFERS_PERCENT选项".
避免缓冲区管理器抖动系统必须先写入脏页然后才能读取请求页的情况下会发生抖动,这会显著降低系统速度.
为获得最佳性能,请始终分配足够可用的内存,从而使页写入程序满足可用空间需求.
缓冲区高速缓存抖动与系统抖动类似,且在没有足够可用于读取的清洁缓冲区的情况下发生.
这导致在高速缓存中出现相同类型的"先写入然后读取"延迟,且在没有足够大的缓冲区高速缓存来容纳查询中引用的所有对象的情况下可能会发生.
若要消除缓冲区高速缓存抖动,必须为缓冲区高速缓存分配更多内存.
请不要过多分配缓冲区高速缓存.
分配过多内存可能会导致为数据库缓冲区高速缓存分配内存时发生系统抖动.
在极端情况下,没有解决缓冲区高速缓存抖动问题时分配过多内存可能会引起多级别的抖动.
在多用户环境中,或者查询复杂性导致的曲解或不确定性使优化程序在某情况下(在该情况中需要用明显多于查询可用的高速缓存所容纳的值数目生成HASH对象)选择HASH算法时可能会出现其它不易发现形式的缓冲区高速缓存抖动.
设置缓冲区大小时,请记住以下事项:如果SybaseIQ缓冲区高速缓存太大,则在SybaseIQ尝试使用所有这部分内存时,操作系统将强制分页.
如果SybaseIQ缓冲区高速缓存太小,那么SybaseIQ会发生抖动,因为它不能将足够的查询数据填到高速缓存中.
如果正在遇到剧烈的性能问题,则应当监视分页,以确定是否是抖动问题.
如果是,请按照"管理缓冲区高速缓存"中的描述重置缓冲区大小.
如果您监控分页并确定存在抖动问题,您还可以限制在执行包含涉及散列算法的查询的语句过程中的抖动量.
通过调整HASH_THRASHING_PERCENT数据库选项,可以控制在语句回退且返回错误之前允许的硬盘I/O百分比.
避免缓冲区管理器抖动114SybaseIQHASH_THRASHING_PERCENT的缺省值是10%.
增大HASH_THRASHING_PERCENT可允许在回退之前对磁盘进行更多的分页,而减小HASH_THRASHING_PERCENT可允许在回退之前对磁盘进行较少的分页.
如果查询涉及在SybaseIQ的更早版本中执行的散列算法,则这些查询现在可能在达到缺省的HASH_THRASHING_PERCENT限制时发生回滚.
SybaseIQ会报告错误Hashinsertthrashingdetected(检测到散列插入抖动)或Hashfindthrashingdetected(检测到散列查找抖动).
执行以下一项或多项操作可为查询提供执行所需的资源:通过增大HASH_THRASHING_PERCENT的值来放宽分页限制.
增加临时高速缓存(仅限DBA)的大小.
请切记,增加临时高速缓存的大小要求在main高速缓存分配中减少相等大小以防止系统出现抖动.
对于此语句,尝试确定SybaseIQ错误估计一个或多个散列大小的原因并缓解该错误估计所产生的后果.
例如,请检查需要LF或HG索引的所有列都有一个.
而且,请考虑多列索引是否合适.
减少数据库选项HASH_PINNABLE_CACHE_PERCENT的值.
有关这些数据库选项的详细信息,请参见《参考:语句和选项》中的"HASH_THRASHING_PERCENT选项"和"HASH_PINNABLE_CACHE_PERCENT选项"这两节.
若要发现查询中可能的问题,请用临时数据库选项QUERY_PLAN='ON'和QUERY_DETAIL='ON'运行查询,以生成查询计划,然后检查查询计划中的估计值.
生成的查询计划存在于消息日志文件中.
监控Windows系统上的分页Windows提供了系统监控器,以帮助监控分页.
若要访问它,请选择对象"逻辑磁盘"(包含文件PAGEFILE.
SYS的磁盘实例)和计数器磁盘传输量/秒.
将Windows页面文件放在不同于数据库dbspace设备的磁盘上.
还可以监控对象内存和计数器页/秒.
但是,该值是包括软错误和硬错误的所有内存错误的总和.
监控UNIX系统上的分页UNIX提供的系统命令vmstat可以帮助您监控诸如分页这样的系统活动.
简短命令语法是:vmstatintervalcount第5章监控和调优性能性能和调优指南115interval是输出行之间的时间,count是输出行的显示次数.
有关vmstat(包括其选项和字段说明)的详细信息,请参见操作系统的文档.
下面是一个示例:>vmstat23进程内存页磁盘错误数cpurbwswapfreeremfpipofrdesrs0s1sdinsycsussyid0003312376318400800000000297201472824140003312376314842300000000260169597803170003312368311160800000000205120239667429上面的输出显示稳定的SybaseIQ查询状态,其中,计算机的物理内存尚未过度分配.
几乎没有发生系统页错误.
下一组示例显示指示问题的vmstat输出.
(显示的输出省略了上面的一些字段,以便更好地适应显示页面.
)进程内存页错误数cpurbwswapfreeremfpipofrdesrinsycsussyid000217348272784014811390225118356016391000348712420557205000008613113301990003487124205572050000071162121001000003483912204500042536000016964235522960003482740203372017600001583702101397000348267620330004100000160134422512970003343272199964121233600002131313997885000334326418509601948400002837967321693000334298818397201758000027610517462494000334286018363201193140000203166052934940003342748182316210918400001876204884295000334231218110421479600001152562609289000334074817918008992600001638365314492000332870416722402993600008221952224789上面的第一行输出提供了启动计算机后的系统活动摘要.
前三行显示大约有200MB可用物理内存,并且计算机处于空闲.
第四行对应于SybaseIQ第一次启动.
从第八行开始,可用内存的数量开始迅速减少.
这对应于正在分配的SybaseIQ缓冲区高速缓存和正在从磁盘读取的数据库页(注意CPU使用量已增加).
这时,几乎没有用户CPU时间,因为还没有开始执行查询.
缓冲区高速缓存监控清单116SybaseIQ进程内存页错误数cpurbwswapfreeremfpipofrdesrinsycsussyid700324763658920018801664000011314421668801831800324656843732070916960000108422313089010112003246604370040358656000060023672295501500324662832156035616060000114122613179190190032466122674802731248000095039411809270当随后查询开始时,上面的输出有轻微变化.
这在用户模式CPU级别(us字段)很明显.
缓冲区高速缓存尚未填满,因为页进入错误(pi字段或KB分页进入)仍然正在发生,并且可用内存的数量仍然在降低.
进程内存页错误数cpurbwswapfreeremfpipofrdesrinsycsussyid21003246608221000201160000001208125714138812018003246608171960370152004640139988209115591801100325111616664048320641382408076013152181488881203000325111215764047524803104450014321498199171787130上面的输出在随后更晚出现.
在第三行输出上,它显示系统已经达到它可以维护的可用内存数量的阈值.
在此点上,发生了分页(po字段或KB被分页),并且系统模式CPU(sy字段)的级别随即增加.
产生此情况是因为过度分配物理内存:SybaseIQ缓冲区高速缓存对该计算机太大.
若要解决此问题,请减少两个缓冲区高速缓存中的某一个的大小,或二者都减少.
缓冲区高速缓存监控清单下表总结了要在监控器结果中查找的最常见项,并提供了如果行为在正常范围以外则可能需要执行的建议操作.
"统计信息"列列出了在标准监控器报告中显示的名称;如果此统计内容与调试报告中的内容不同,还会列出调试统计.
请记住,对于任何监控器统计,当系统更改状态时(比如当新查询正在启动时),都可能发生临时的非正常行为.
第5章监控和调优性能性能和调优指南117表5-11:缓冲区高速缓存监控清单统计信息正常行为需要调整的行为建议操作HR%(高速缓存命中率)高于90%.
对于单个内部数据结构,比如garray、barray、位图(bm)、散列对象、排序对象、变长btree(btreev)、定长btree(btreef)、位向量(bv)、dbext、dbid、vdo、存储、检查点块(ckpt),在查询运行时命中率应当是超过90%.
它可能首先低于90%.
一旦预取开始工作(PF或PrefetchReqs>0),则命中率应当逐渐增长到超过90%.
在预取工作之后,命中率低于90%.
注释某些对象不执行预取,因此其命中率在正常情况下可能很低.
尝试通过调整-iqmc和-iqtc重新平衡main高速缓存和临时高速缓存的大小.
还应通过调整PREFETCH_THREADS_PERCENT选项,尝试增加预取线程数.
Gdirty(脏抢夺)在有中等高速缓存大小(0注释仅当脏页的数目达到清洗区域的某个百分比时,才会激活清理程序线程.
如果GDirty/GrabbedDirty大于0并且I/O率(写入)很低,则系统可能直接被轻装载,并且不需要执行操作.
调整SWEEPER_THREADS_PERCENT选项(缺省值10%)或WASH_AREA_BUFFERS_PERCENT选项(缺省值20%),以增加清洗区域的大小.
BWaits(缓冲区忙等待)0持久>0,表示多个作业正在争夺同一个缓冲区.
如果I/O率(写入)很高,则忙等待可能是高速缓存抖动导致的.
请检查高速缓存报告中的命中率,以确定是否需要重新平衡main高速缓存与临时高速缓存.
如果批量作业正在同时启动很多几乎相同的查询,请尝试错开启动时间.
LRU等待(调试报告中的LRUNumTimeOuts百分比)20%或更少>20%,指示发生严重争用问题.
检查操作系统修补程序级别和其它环境设置.
此问题常常是操作系统问题.
IOWait(IONumWaits)10%或更低>10%检查是否有磁盘错误或I/O重试缓冲区高速缓存监控清单118SybaseIQFLWait(FLMutexWaits)20%或更低>20%检查dbspace配置:数据库几乎空间不足DISK_STRIPING是否为ONsp_iqcheckdb是否报告大于15%的碎片HTWait(BmapHTNumWaits)MemWts(MemNtimesWaited)(PFMgrCondVarWaits)10%或更低>10%与Sybase技术支持部门联系.
CPU时间(调试报告中的CPUSysSeconds,CPUTotalSeconds)CPU系统时间(秒)20%如果CPUTotalSeconds还报告低利用率,并有让系统忙的足够作业,则高速缓存可能正在抖动,或可能丢失平行性.
调整-iqgovern以减少允许的并发查询总数.
检查高速缓存报告中的命中率和I/O率,确定是否有高速缓存抖动.
还应查看cache_by_type(或调试)报告中散列对象的命中率,以确定散列对象是否正在抖动:在I/O率(写入)很高时它是否为90到95%,指示系统正在危险地接近缓冲区不足条件,而这会导致事务回滚尝试重新平衡main高速缓存与临时高速缓存的大小.
如果不可能重新平衡缓冲区高速缓存大小,请尝试减少-iqgovern,以限制并发运行的作业数.
可用线程(ThrNumFree)可用>保留如果可用线程数降低至保留计数,则系统可能发生线程空闲.
尝试下列操作之一:通过设置-iqmt,增加线程数.
减少与线程相关的选项:MAX_IQ_THREADS_PER_CONNECTION,MAX_IQ_THREADS_PER_TEAM.
通过设置USER_RESOURCE_RESERVATION,限制查询引擎资源的分配.
通过设置-iqgovern,限制作业数.
FlOutOfSpace(仅调试)0,指示此存储区的空闲列表不完整;未分配的页可用1,指示已完全分配此存储(main或临时)将更多dbspace添加到该存储统计信息正常行为需要调整的行为建议操作操作系统实用程序说明UNIXtop(Sun、Linux、HP-UX),topas(IBM-AIX)实时地持续查看处理器活动.
ps报告进程状态.
vmstat显示有关系统进程、内存、分页、块IQ、捕获和CUP活动的信息.
iostat-x显示磁盘子系统信息.
Windows系统监控器任务管理器提供有关计算机性能和正在运行的应用程序、进程、CPU使用率及其它系统服务的详细信息.
监控CPU使用的系统实用程序120SybaseIQ性能和调优指南121第6章在32位Windows系统上调优服务器关于本章本章介绍了在Windows系统上运行SybaseIQ的性能和调优准则.
阅读本章时,请结合阅读第4章"管理系统资源".
目录主题页码一般性能准则122监控性能123使用NTFS高速缓存125对插入和查询进行调优125对备份操作进行调优126一般性能准则122SybaseIQ一般性能准则以下为应用于装载和查询数据的一般准则.
在Windows下运行SybaseIQ的推荐最低内存(RAM)为512MB.
对于大多数应用程序,建议采用4GB以获得最佳性能.
在boot.
ini中设置/3GB和/PAE开关,以允许SybaseIQ在Windows32位系统上寻址尽可能多的内存.
最大化吞吐量如果正在Windows上运行,请确保网络服务服务器选项"最大化网络应用程序数据吞吐量"已启用.
最大化网络应用程序数据吞吐量1在"控制面板"上,双击"网络连接",右键单击"本地连接",选择"属性".
2选择"Microsoft网络的文件和打印机共享",然后单击"属性".
3在"优化"下,选择"最大化网络应用程序数据吞吐量".
注释在某些Windows版本上,可能需要安装MicrosoftInternetInformationServices(IIS)才能将服务器属性设置为最大化网络应用程序数据吞吐量.
防止内存过度分配系统页面错误过多是由于计算机上物理内存(RAM)的过度分配造成的.
过多的页面错误可大幅降低SybaseIQ的性能.
可通过认真分配SybaseIQ缓冲区、监控SybaseIQ进程的虚拟地址空间以及监控可用的物理内存,防止内存的过度分配.
此节介绍监控SybaseIQ对计算机物理内存的使用情况的准则.
监控物理内存可供应用程序(SybaseIQ)使用的物理内存量显示在"物理内存(K)"下方.
如果"可用数"值始终低于5000,则计算机的物理内存可能存在过度分配.
这是因为,在达到5000(K)标志时,Windows会产生页面错误以维持最小5MB可用内存.
第6章在32位Windows系统上调优服务器性能和调优指南123若要监控物理内存,请从"任务管理器"小程序中,选择"性能"选项卡.
文件系统Windows文件系统支持在文件、目录和卷级别进行压缩.
检查压缩选项,并对存储SybaseIQ数据库的所有磁盘和卷禁用Windows文件系统压缩.
这是因为SybaseIQ提供内置压缩功能.
文件系统压缩不但不能进一步减少数据库大小,而且可能会在执行读取或写入时增加CPU开销.
监控性能您可将SybaseIQ性能监视器作为监控SybaseIQ性能的首选工具,第5章"监控和调优性能"对它进行了介绍.
不过,您还可以使用Windows任务管理器和Windows性能工具监控系统性能.
任务管理器Windows任务管理器提供有关计算机上正在运行的应用程序和进程的信息.
任务管理器还显示有关计算机性能和资源的详细信息.
若要打开"任务管理器",请右键单击任务栏上的空白空间,选择"任务管理器".
有关使用Windows任务管理器的详细信息,请在"Windows任务管理器"中单击"帮助",然后选择"任务管理器帮助主题".
性能Windows性能工具包括系统监视器与性能日志和警报.
系统监视器显示有关内存、磁盘、处理器和网络活动的实时数据.
通过性能日志和警报,您可以记录性能数据以及为特定性能活动设置警报.
若要打开Windows性能工具,请在"控制面板"上,单击"管理工具",然后选择"性能".
有关使用性能工具的详细信息,请在"性能"中单击"帮助",然后选择"帮助主题".
监控性能124SybaseIQ监控虚拟地址空间和工作集进程的虚拟地址空间为该进程的总大小.
进程的工作集为当前分配给该进程的物理内存大小.
在大多数情况下,为了防止出现过多的系统页面错误,SybaseIQ进程的虚拟地址空间应小于计算机的物理内存.
由于在SybaseIQ服务器上使用了虚拟内存模式,虚拟内存碎片可能会导致Windows平台上的处理工作大幅增加.
为了减少出现这种情形的可能性,SybaseIQ支持在WindowsXP和WindowsServer2003上使用Microsoft的低碎片堆(LFH).
监控虚拟地址空间和内存使用情况1右键单击任务栏上的空白空间,选择"任务管理器",然后单击"进程"选项卡.
2单击"查看",然后选择"选择列".
3在"选择列"对话框上,选择以下列:内存使用内存使用增量内存使用高峰值页面错误页面错误增量虚拟内存大小监控页面错误从Windows性能监视器中,按照上述说明选择SybaseIQ进程.
选择计数器"页错误/秒".
此计数器的结果中包括"硬"页面错误和"软"页面错误.
硬页面错误是由于磁盘I/O导致的页面错误.
软页面错误则一般不是性能问题.
若要确定硬页面错误的数量,请选择对象"LogicalDisk"和文件pagefile.
sys所在位置的实例(该实例应该与SybaseIQ数据库不在同一个卷上).
选择计数器"磁盘传输量/秒".
将此值与"页错误/秒"值比较,即可了解硬页面错误在整个页面错误中所占的百分比.
理想情况下,应该仅有极少或者甚至没有任何针对页面文件的I/O活动.
不过,在低内存配置下,可能会发生分页.
如果硬页面错误率持续高于每秒20,则表明计算机的物理内存已过度分配.
第6章在32位Windows系统上调优服务器性能和调优指南125使用NTFS高速缓存启用第122页上的"最大化网络应用程序数据吞吐量"网络服务服务器选项后,即可使用NTFS及其关联的高速缓存来提高SybaseIQ数据库在插入和查询时的性能.
这主要归功于NTFS在使用同等大小物理内存的情况下可存储比SybaseIQ缓冲区高速缓存多很多的数据.
通过降低main高速缓存的大小,将此内存提供给可以更有效地使用它的NTFS,可以最有效地利用这一优点.
在IQ15.
x中,在装载和查询处理中将使用更多临时高速缓存.
因此,使用NTFS高速缓存对于main高速缓存仍是一项非常有用的技术,但不会提供临时高速缓存的优点.
SybaseIQ缓冲区高速缓存以未压缩的形式来存储SybaseIQ数据(页面).
因此,100MB的SybaseIQ缓冲区高速缓存可存储相当于100MB的数据.
与之相反的是,NTFS高速缓存以压缩后的形式管理SybaseIQ数据.
因此,如果压缩比率为2:1,则100MB的NTFS高速缓存可能会存储200MB的SybaseIQ数据.
因此,NTFS高速缓存有可能保持更高的高速缓存命中率,从而导致I/O减少.
节省的I/O超过将数据从NTFS高速缓存移动到SybaseIQ缓冲区高速缓存时对数据解压缩所需的计算开销.
对插入和查询进行调优本节介绍在Windows平台上对插入和查询进行调优的其它准则.
合理调优的插入操作的特征合理调优的SybaseIQ插入操作具有特定的特征.
您可以从Windows任务管理器和Windows性能监视器中查看这些特征.
插入操作通常为CPU密集型.
系统内的所有CPU在运行时使用率都应接近100%,其中CPU的95%或更高使用率处于用户模式.
通过单击Windows任务管理器的"性能"选项卡并设置"查看–显示内核时间"选项,便可轻松查看到此信息.
物理内存不应过度分配,特别是,SybaseIQ进程的虚拟地址空间应小于计算机的物理内存(RAM).
硬页面错误(针对pagefile.
sys所在卷的I/O)应很低,理想情况下应接近于0(零).
对备份操作进行调优126SybaseIQ针对IQ存储的I/O操作应保持稳定,并处于磁盘子系统的I/O能力之内.
SybaseIQ使用WindowsCreateFile选项(用于创建和打开文件)来指定要读取以便后续访问的文件.
此选项用于在LOADTABLE命令中指定的文件.
这样,由于可提前读取并降低了对NTFS高速缓存内存的利用,装载的性能得到了提高.
可通过将SybaseIQ的main缓冲区高速缓存大小设置为比在第53页上的"SybaseIQ主要和临时缓冲区高速缓存"中介绍的计算推荐值小,来进一步提高装载性能,有时甚至可获得显著提高.
第125页上的"使用NTFS高速缓存"中介绍了这一性能提高的原因所在.
您可将SybaseIQ的main缓冲区高速缓存的大小设置为比计算推荐值小50%左右.
对查询进行调优您也可通过减少main缓冲区高速缓存的大小(如上段所述)来提高查询性能.
请参见第3章"优化查询和删除"了解有关查询计划、结构和选项的详细信息.
对备份操作进行调优Windows仅支持固定大小的I/O设备.
这就是说,对磁带的每次读取或写入的大小必须与其前后的读取或写入的大小相同.
如有任何读取/写入操作超出了硬件设备的容量,则相应操作将失败.
这意味着,对于备份和恢复操作,只有所有写入(或读取)都以相应硬件所配置的大小进行,备份(或恢复)才可能成功.
SybaseIQ缺省值设计用于在每一平台上都实现尽可能高效的读取和写入操作.
不过,如果您在创建SybaseIQ数据库时覆盖了缺省的块大小,则需要在备份该数据库时调整块因子.
对于任何备份或恢复:块大小x块因子≈I/O大小第6章在32位Windows系统上调优服务器性能和调优指南127若要在Windows系统上调整块因子,必须知道可以通过磁带设备处理的最大物理块大小.
驱动器制造商通常未针对此信息提供文字说明.
若要确定此值(通常为64KB),您需要使用WIN32API调用编写一个小程序.
然后,必须使用该数据库的块大小和BACKUP命令的BLOCKFACTOR选项,才能优化备份性能.
有关完整的语法和用法,请参见《参考:语句和选项》.
使每一I/O操作的大小越接近于块大小的最大值,则备份性能越高.
需使用与块大小相乘时乘积与相应驱动器的块大小最接近的BLOCKFACTOR(整数).
需要记住的是,SybaseIQ在每个块被写入时会向块添加一些额外的数据,用以实现数据的完整性.
因此,如果数据库块大小为8192,磁带设备可处理的最大块大小为128KB,即使8192*16=128KB,也不可使用16作为块因子.
必须考虑到SybaseIQ会对每一I/O操作添加的额外数据,从而使用15为BLOCKFACTOR.
请注意,在Windows上,对于128KB的缺省数据库块大小和缺省IQ页大小,缺省的块因子是15.
对备份操作进行调优128SybaseIQ性能和调优指南129AAGGREGATION_ALGORITHM_PREFERENCE选项41AND关键字7AVG函数10BBETWEEN条件9BLANKPADDING对连接的影响27支持OFF27BLOCKFACTOR装载选项57版式文档xi备份69调优块大小126比较关于6,7表和外键22iq_dummy4连接76列出2相关名21折叠76主键22标准第508条合规性xii并行度查询树35不等式,测试7CCatalog存储4文件增长77CIS功能性补偿性能影响36COUNT函数10,11CPU对SybaseIQ的可用性71CPU使用率监控114,119CPU使用率统计信息89CREATEDBSPACE语句67参数函数10查看过程分析数据SybaseCentral97插入操作调优125查询结构化32索引建议75调优126限制并发71限制内存使用71由SQLAnywhere处理4优化36,41,75查询表4查询并行度35查询服务器平衡负载74查询计划36生成但不执行37使用39图形39索引索引130SybaseIQ查询性能Catalog存储表36CIS功能性补偿影响36跨数据库连接36由SQLAnywhere规则处理36产品手册ix超线程服务器开关71重置过程分析SQL95SybaseCentral95触发器查看单个分析信息99查看摘要分析数据98处理查询而不4磁带设备Windows126磁盘高速缓存定义75性能影响75磁盘空间交换空间49Multiplex数据库74磁盘条带化定义64规则65内部66SybaseIQ64在装载中使用66存储I/O统计信息92存储过程2查看单个分析信息98查看分析数据93查看摘要分析数据97性能监控93Ddbspace定位以达到最佳性能67使用统计信息92DEFAULT_HAVING_SELECTIVITY选项41DEFAULT_LIKE_MATCH_SELECTIVITY选项41DEFAULT_LIKE_RANGE_SELECTIVITY选项41DENSE_RANK函数15第508条合规性xii低碎片堆60地址空间虚拟124动态性能监控器86抖动HASH_THRASHING_PERCENT选项113要执行的操作113段数据库,使用多个67堆低碎片60多列索引35多线程性能影响63EEARLY_PREDICATE_EXECUTION选项41EBFxFFLATTEN_SUBQUERIES选项35FROM子句4,80和连接20范围7非规范化缺点78性能优势79原因78分区定义64分区表80,81分析数据库过程关于93分析信息触发器99存储过程和函数98索引性能和调优指南131事件99系统触发器99分页对性能的影响49内存49在UNIX上监控114在Windows上监控114分组数据10服务器监控性能86负载平衡查询服务器间74GGettingStartedCDixGROUPBY有关性能的建议32高速缓存缓冲区125另请参见缓冲区高速缓存101NTFS125高速缓存大小IQ主和临时缓冲区55高速缓存统计信息89高速缓存页预取73工作负荷监控42工作集124固定大小的I/OWindows126过程分析触发器98,99存储过程和函数97,98各个过程的信息98,101过程的摘要100事件97,99系统触发器98,99用SQL重置95用SQL禁用95用SQL启用94用SQL清除95在InteractiveSQL中查看数据100在SybaseCentral中查看数据93,97在SybaseCentral中重置95在SybaseCentral中禁用95在SybaseCentral中启用94在SybaseCentral中清除95HHASH_THRASHING_PERCENT选项113HG索引多列35函数查看单个分析信息98查看分析数据93查看摘要分析数据97分析15集合10SOUNDEX函数9合规性第508条xii缓冲区禁用操作系统缓冲62缓冲区高速缓存55,125布局112监控101确定大小51设置大小55缓冲区高速缓存监控器101示例108缓冲区管理器抖动113II/O性能建议64I/O设备126IN条件9IN_SUBQUERY_PREFERENCE选项41INDEX_ADVISOR选项37INDEX_PREFERENCE选项41索引132SybaseIQIQ存储缓冲区高速缓存大小55IQPATH选项选择原始设备64IQ页大小确定56iq_dummy表4iqgovern开关限制查询以提高性能71IQGOVERN_MAX_PRIORITY选项40IQGOVERN_PRIORITY40IQMSG日志设置最大大小70iqnumbercpus设置CPU数71iqwmem开关61JJOIN_ALGORITHM_PREFERENCE选项41技术支持xii监控工作集124事务状态86物理内存122虚拟地址空间124页面错误124监控工作负荷42监控器IQUTILITIES语法102启动和停止102设置输出文件位置102键连接使用22交换磁盘空间要求49对性能的影响49内存49交换文件对性能的影响49进程工作集124监控123增大60进程线程模型63禁用过程分析SQL95SybaseCentral95K块大小与IQ页大小的关系56LLIST函数10连接和BLANKPADDING27和数据类型25矢量积20使用的限制语句73优化程序简化41连接索引性能影响76连接统计信息91连系内存61列从表中进行选择5大量空值5,32关于3排序5临时存储缓冲区高速缓存大小55MMAIN_CACHE_MEMORY_MB选项55MAX函数10max函数10MAX_CURSOR_COUNT选项72索引性能和调优指南133MAX_HASH_ROWS选项41MAX_QUERY_TIME选项40MAX_STATEMENT_COUNT选项73MAX_TEMP_SPACE_PER_CONNECTION选项71MIN函数10Multiplex性能监控器86Multiplex数据库磁盘空间74内存50MySybase创建个性化视图xEBFx美国《联邦残疾人就业教育法案》第508条xii命令long6模式匹配8NNOEXEC选项37NTCreateFile选项126NT任务管理器123NT性能监视器123NTFS高速缓存挪用内存122提高性能125NTILE函数15内存分页49减少要求57开销52连线61另请参见缓冲区高速缓存55Multiplex数据库50碎片60限制查询的使用71装载要求52内存使用统计信息89OOR关键字9ORDERBY子句6,35OS_FILE_CACHE_BUFFERING选项62OVER子句16PPERCENT_RANK函数15PERCENTILE_CONT函数15PERCENTILE_DISC函数15PREFETCH_BUFFER_LIMIT选项73排版约定xii撇号使用6QQUERY_DETAIL选项37QUERY_PLAN选项37QUERY_PLAN_AFTER_RUN选项37QUERY_PLAN_AS_HTML选项38QUERY_PLAN_AS_HTML_DIRECTORY选项38QUERY_PLAN_TEXT_ACCESS选项37QUERY_PLAN_TEXT_CACHING选项38QUERY_TEMP_SPACE_LIMIT选项71QUERY_TIMING选项38启用过程分析SQL94SybaseCentral94清除过程分析SQL95SybaseCentral95清理程序线程112请求统计信息91轻型进程63区分大小写3,6索引134SybaseIQRRANK函数15RAWDETECT磁盘条带化选项66任务管理器123认证文档已更新x日期7,9SSELECT语句关于2,28sp_iqcolumnuse过程sp_iqindexuse过程43sp_iqtable过程2sp_iqtableuse过程43sp_iqunusedcolumn过程43sp_iqunusedindex过程43sp_iqunusedtable过程43sp_iqworkmon过程43SUM函数10SyBooksCDixSYSTEMdbspace4设备Windows上的I/O126事件查看单个分析信息99查看分析数据93查看摘要分析数据97视图MySybase,创建个性化x事务日志关于67截断68截断Multiplex69事务统计信息91事务状态监控86数据存储125数据库非规范化的优势79非规范化以提高性能78管理76样本xii数据库段定位以达到最佳性能67数据库过程查看分析数据93数据库选项FLATTEN_SUBQUERIES35数据库之间的连接性能影响36数据类型连接要求25数据装载改进82顺序磁盘I/O67搜索条件简介6快捷方式9日期比较7子查询28碎片60索引多列35索引顾问75索引类型针对性能选择75TTEMP_CACHE_MEMORY_MB选项55调优121条件和GROUPBY子句11搜索6,7,9调优对于插入操作125用于查询126统计信息动态86吞吐量48最大化122索引性能和调优指南135UUNIONALL规则80视图80Vvmstat命令监控UNIX上的缓冲区高速缓存114WWHERE子句BETWEEN条件9和模式匹配8ORDERBY子句6日期比较7示例6Windows磁带设备126WITHINGROUP子句16外部引用已定义28网络大型传输82设置82性能建议82网络统计信息92维护软件x维护,产品x文档CD上ix联机ix认证xSQLAnywhereviiiSybaseIQvii易用特点xii约定xi,xii文件定位以达到最佳性能67物理内存监控122X系统触发器查看单个分析信息99查看分析数据93查看摘要分析数据98系统存储过程2系统过程sp_iqcolumnuse43sp_iqindexuse43sp_iqtableuse43sp_iqunusedcolumn43sp_iqunusedindex43sp_iqunusedtable43sp_iqworkmon43下推连接80,81线程管理选项63缓冲区高速缓存112监控106用-iqnumbercpus开关控制使用71线程统计信息90限制6相关名关于21已定义28响应时间48消息日志SybaseIQ69行关于3选择6性能121CIS功能性补偿影响36磁盘高速缓存75定义48动态监控器86多用户73非规范化数据库的优势79监控101平衡I/O64设计48提高12选择正确索引类型75索引136SybaseIQ用iqgovern限制查询71子查询35性能和调优问题126性能监控器2D条形图873D条形图87保存图表87打印图表87服务器级86切换图表视图87示例108时序视图87所监控的统计信息88自定义统计信息87自定义图表87性能调优简介86虚拟SybaseIQ表4虚拟地址空间124虚拟内存碎片60选项FLATTEN_SUBQUERIES35INDEX_ADVISOR37NOEXEC37QUERY_DETAIL37QUERY_PLAN37QUERY_PLAN_AFTER_RUN37QUERY_PLAN_AS_HTML38QUERY_PLAN_AS_HTML_DIRECTORY38QUERY_PLAN_TEXT_ACCESS37QUERY_PLAN_TEXT_CACHING38QUERY_TIMING38意外行为4选项值截断36Y样本数据库xii页解压缩125页面错误122监控124易用性文档xii引号使用6用户定义的函数性能影响36用户提供的条件用于查询42游标限制数目72优化查询35,75语法文档约定xi预取的高速缓存页73原始分区内存使用52原始设备对性能的影响64约定排版xii文档xi,xii语法xiZ在InteractiveSQL中查看过程分析信息100在InteractiveSQL中查看特定过程的分析信息101摘要分析数据触发器98存储过程和函数97事件97系统触发器98展平子查询35支持,技术xii主数据库缓冲区高速缓存大小55装载改进82装载数据并行装载82HG和WD索引82内存要求52索引性能和调优指南137使用条带化磁盘66调优125性能57装载时访问82子查询使用28子查询性能35子查询展平35字母顺序4组件认证x索引138SybaseIQ

RAKsmart裸机云/云服务器/VPS全场7折,独立服务器限量秒杀$30/月起

适逢中国农历新年,RAKsmart也发布了2月促销活动,裸机云、云服务器、VPS主机全场7折优惠,新用户注册送10美元,独立服务器每天限量秒杀最低30.62美元/月起,美国洛杉矶/圣何塞、日本、香港站群服务器大量补货,1-10Gbps大带宽、高IO等特色服务器抄底价格,机器可选大陆优化、国际BGP、精品网及CN2等线路,感兴趣的朋友可以持续关注下。裸机云新品7折,秒杀产品5台/天优惠码:Bare-...

速云:深圳独立服务器,新品上线,深港mpls免费体验,多重活动!

速云怎么样?速云是一家国人商家。速云商家主要提供广州移动、深圳移动、广州茂名联通、香港HKT等VDS和独立服务器。目前,速云推出深圳独服优惠活动,机房为深圳移动机房,购买深圳服务器可享受5折优惠,目前独立服务器还支持申请免费试用,需要提交工单开通免费体验试用,次月可享受永久8折优惠,也是需工单申请哦!点击进入:速云官方网站地址活动期限至 2021年7月22日速云云服务器优惠活动:活动1:新购首月可...

RangCloud19.8元/月,香港cn2云主机,美国西雅图高防云主机28元/月起

rangcloud怎么样?rangcloud是去年年初开办的国人商家,RangCloud是一家以销售NAT起步,后续逐渐开始拓展到VPS及云主机业务,目前有中国香港、美国西雅图、韩国NAT、广州移动、江门移动、镇江BGP、山东联通、山东BGP等机房。目前,RangCloud提供香港CN2线路云服务器,电信走CN2、联通移动直连,云主机采用PCle固态硬盘,19.8元/月起,支持建站使用;美国高防云...

删除windows.old为你推荐
云爆发云出十里未及孤村什么意思今日油条油条晚上炸好定型明天可再复炸吗?冯媛甑冯媛甄多大啊?同一服务器网站一个服务器放多个网站怎么设置?www.36ybyb.com有什么网址有很多动漫可以看的啊?我知道的有www.hnnn.net.很多好看的!但是...都看了!我想看些别人哦!还有优酷网也不错...yinrentangweichentang产品功效好不好?haole012.com说在:012qq.com这个网站能免费挂QQ,是真的吗?www.1diaocha.com请问网络上可以做兼职赚钱吗?现在骗子比较多,不敢盲目相信。请大家推荐下关键词分析怎么样分析关键词?dpscycleDPScycle插件为什么没有猎人模块 最好详细点
域名空间购买 域名备案网站 免费动态域名 主机屋 mediafire 正版win8.1升级win10 免费静态空间 河南服务器 佛山高防服务器 太原网通测速平台 Updog 怎么建立邮箱 香港亚马逊 登陆空间 国外网页代理 腾讯云平台 magento主机 apachetomcat cc加速器 cdn免备案空间 更多