查询处理已得到改进 这一版提供了对查询执行引擎和优化程序的增强,从而使性能大大提高,尤其是对于复杂的查询。对 Adaptive Server Anywhere 查询处理的增强包括以下几个方面:
对连接的内部处理更加完善。
改进了用于评估其它可选访问计划的优化程序的成本模型。
改进了执行模型。
这些更改中大多数都是内部更改。文档在查询优化与执行中提供。
这些更改使得输出结果的效率大大提高。使用临时工作表可能是一种执行查询非常高效的方式。有关详细信息,请参见在查询处理中使用工作表(使用 All-rows 优化目标)。
现在,优化程序可基于成本选择索引,而且不再像旧版本那样仅仅依赖于谓语的选择性。
许多改进的查询处理不需要将数据库升级。要在此版本之前创建的数据库上使用新的开销模型,必须通过卸载和重装该数据库来升级数据库文件格式。
新索引类型 添加了一个新的索引类型,从而提高了多列索引和包括宽列的索引的性能。该索引是一个压缩 B 树索引。
Adaptive Server Anywhere 自动基于索引宽度(索引中所有列的宽度之和)创建合适类型的索引。当索引宽度大于 9 个字节并小于页面大小的 1/8(最大为 256 个字节)时,将会创建压缩 B 树索引;否则,Adaptive Server Anywhere 将会创建散列 B 树索引。
不支持 CREATE INDEX 语句的 WITH HASH SIZE 子句。
要在此版本之前创建的数据库上使用新的索引类型,必须通过卸载和重装该数据库来升级数据库文件格式。
新增了一条限制:外键索引的大小和类型必须与相应的主键索引相同。
如果最初使用缺省值 (WITH HASH SIZE 10) 指定了散列大小,dbunload 现在将忽略指定的散列大小。
新数据库选项 optimization_goal 确定优化查询处理的意图:是迅速返回第一行,还是为最大程度地降低返回整个结果集的开销。缺省设置为优化返回第一行的速度。
有关详细信息,请参见optimization_goal 选项 [数据库]。
表扫描的性能增强 对于在 Adaptive Server Anywhere 8.0 中创建的页面为 2K、4K 或 8K 的数据库,当执行需要顺序表扫描的查询时其性能会得到增强。Adaptive Server Anywhere 将为大表创建位图,也称为页映射。位图列出了包含一个给定表的数据的所有页。有了该功能,只需要一个 I/O 操作即可搜索庞大的表。
有关详细信息,请参见表大小和页面大小。
对于在此发行版本发布之前创建的数据库,要获得此增强功能所带来的益处,必须通过卸载后再重装该数据库来升级数据库文件格式。
改进了检查点日志的存储 现在,检查点日志存储在数据库文件末尾处的连续几页中。这样就可以允许对检查点日志的内容进行顺序扫描和多页写入,从而改善性能。
有关检查点日志的详细信息,请参见了解检查点日志。
对于在此版本之前创建的数据库,要获得此增强所带来的益处,必须通过卸载后再重装该数据库来升级数据库文件格式。
计划高速缓存 现在,Adaptive Server Anywhere 可为在存储过程、用户定义的函数和触发器中执行的查询和 INSERT、UPDATE 和 DELETE 语句高速缓存执行计划。要高速缓存的最大计划数量用选项设置 max_plans_cached 来指定。要禁用计划高速缓存,请将此选项设置为 0。
有关详细信息,请参见计划高速缓存。
替换缺省 I/O 成本模型 现在,您可以使用带有 CALIBRATE 子句的 ALTER DATABASE 语句来替换缺省的 I/O 成本模型。
有关详细信息,请参见ALTER DATABASE 语句。
新数据库选项 max_plans_cached 设置存储在高速缓存中的执行计划的最大数量。
有关详细信息,请参见max_plans_cached 选项 [数据库]。
新数据库选项 min_table_size_for_histogram 此选项设置用来创建直方图的表的最小大小。直方图存储有关一个列中值的分布信息,优化程序利用它们来选择一个高效的执行计划。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |