远程Sybase数据库技术支持,联系手机:13811580958,QQ:289965371!

 

随着Sybase被完全整合到SAP下,Sybase原来的支持网站被SAP Support Portal取代。
只有购买了SAP服务的用户才能使用账号登录SAP Support Portal进行介质下载、补丁升级、报Incident等。
目前,原Sybase所有产品(包括:Adaptive Server Enterprise、Sybase IQ、Replication Server、PowerDesigner等)的官方手册仍然可以从http://infocenter.sybase.com/help/index.jsp进行浏览或下载。暂不清楚该网站http://infocenter.sybase.com/help/index.jsp何时会被完全迁移到SAP Support上!
Sybase官方手册英文版有html和pdf两种格式,而中文版手册只有pdf一种格式。为了国内Sybase用户更方便、快捷地搜索Sybase常见产品的官方手册内容,特将中文版Sybase官方手册转为html格式!
Sybase产品官方手册中文版的html格式所有内容的版权归SAP公司所有!本博客站长是Sybase数据库的铁杆粉丝!

如有Sybase数据库技术问题需要咨询,请联系我!

  QQ :289965371 点击这里给我发消息
  Email:

以下官方手册为ASE 15.7 ESD#2中文版:

  1. 新增功能公告 适用于 Windows、Linux 和 UNIX 的 Open Server 15.7 和 SDK 15.7
  2. 新增功能摘要
  3. 新增功能指南
  4. ASE 15.7 发行公告
  5. 配置指南(windows)
  6. 安装指南(windows)
  7. 参考手册:构件块
  8. 参考手册:命令
  9. 参考手册:过程
  10. 参考手册:表
  11. Transact-SQL® 用户指南
  12. 系统管理指南,卷 1
  13. 系统管理指南,卷 2
  14. 性能和调优系列:基础知识
  15. 性能和调优系列:锁定和并发控制
  16. 性能和调优系列:监控表
  17. 性能和调优系列:物理数据库调优
  18. 性能和调优系列:查询处理和抽象计划
  19. 性能和调优系列:使用 sp_sysmon 监控 Adaptive Server
  20. 性能和调优系列:利用统计分析改进性能
  21. 程序员参考 jConnect for JDBC 7.0.7
  22. Adaptive Server Enterprise 中的 Java
  23. 组件集成服务用户指南
  24. Ribo 用户指南
  25. 内存数据库用户指南
  26. Sybase Control Center for Adaptive Server® Enterprise
  27. 安全性管理指南
  28. 实用程序指南

 


< 上一个 | 内容 | 下一步 >

使用 optdiag 实用程序查看统计信息

optdiag 实用工具可显示 systabstats sysstatistics 表中的统计信息。还可 使用 optdiag 更新 sysstatistics 信息。仅系统管理员可运行 optdiag


optdiag 语法


optdiag 的语法为:

optdiag

[binary] [simulate] statistics {-i input_file |

database[.owner[.table[.partition [.column]]]]

[-o output_file]} [-U user_name] [-P password] [-I interfaces_file] [-S server] [-v] [-h] [-s] [-T flag_value] [-z language]

[-J client_charset] [-a display_charset]

使用 optdiag 显示整个数据库、单个表及其索引和列或特定列的统计信息。

例如,若要显示 pubtune 数据库中所有用户表的统计信息,以便将输出 放到 pubtune.opt 文件中,可使用:

optdiag statistics pubtune -Usa -Ppasswd -o pubtune.opt

若要显示 titles 表和该表上任何索引的统计信息,请使用:

optdiag statistics pubtune..titles -Usa -Ppasswd -o titles.opt

从分区表运行 optdiag 对于低于 15.0 Adaptive Server ® 版本中分区表的 optdiag 输出,数据是 根据目标表的模式装载的:

目标表是单分区表 — optdiag 使用标准方法装载该表,忽略“最大 分区中的页数”字段。

目标表是多分区表,并且“最大分区中的页数”字段为空 — optdiag

将统计信息装载到第一个分区。

“最大分区中的页数”字段不为空 — optdiag 使用此字段中的值将 “数据页计数”和“数据行计数”字段的值按比例划分到所有分 区。optdiag 始终将列级统计信息装载为列的全局统计信息。

有关 optdiag 的完整信息,请参见《实用程序指南》。以下各节提供了 有关 optdiag 输出的信息。


optdiag 标题信息


表的统计信息


输出版本信息后,optdiag 会输出服务器名称并总结用于显示统计信息的 参数。

optdiag 报告的标题列出了该报告中描述的对象:

Server name: "test_server"


Specified database: "pubtune"

Specified table owner: not specified

Specified table: "titles"

Specified column: not specified

2-1 描述输出内容。

2-1:表和列信息

image

行标签 提供的信息

image

服务器名 服务器的名称,存储在 @@servername 变量中。 必须使用 sp_addserver,然后重新启动服务器, 才能使用变量中的服务器名称。

image

image

image

image

image

Specified database optdiag 命令行中提供的数据库名称。 Specified table owner optdiag 命令行中提供的表所有者。 Specified table optdiag 命令行中提供的表名称。 Specified column optdiag 命令行中提供的列名。


下面是表统计信息的 optdiag 输出示例:

Table owner: "dbo"

Table name: "authors"

Statistics for table: "authors" Partition count: 3

Statistics for partition: "authors_1376004902" Data page count: 74

Empty data page count: 0

Data row count:1666.0000000000000000

Forwarded row count: 0.0000000000000000

Deleted row count: 0.0000000000000000

Data page CR count:10.0000000000000000 OAM + allocation page count:3

First extent data pages:0

Data row size:85.2623049219687914

Parallel join degree:

0.0000000000000000

Unused page count:

5

OAM page count:

1

Derived statistics:

Data page cluster ratio:1.0000000000000000

Space utilization: 0.9521597490347491

Large I/O efficiency: 1.0000000000000000


2-2:表的统计信息

image

行标签 提供的信息

image

Table owner 表所有者的名称。可以通过指定 dbname..tablename 在命令行 中省略所有者名称。如果多个表具有相同的名称,但所有者不 同,则 optdiag 会输出具有该名称的每个表的信息。

image

Table name 表名。

image

Statistics for table 输出其统计信息的表的名称。

image

Partition count 分区数。

image

Statistics for partition 显示其统计信息的分区的名称。

image

Data page count 表中的数据页数。

image

Empty data page count 只包含已删除行的页的计数。

image

Data row count 表中数据行的数目。

image

image

Forwarded row count 表中转移行的数目。对于所有页锁定表,此值始终为 0 Deleted row count 已从表中删除的行数。这些是已提交的删除,其中的空间还未

被某个用于清除已删除的行的函数回收。

对于所有页锁定表,此值始终为 0

image

Data page CR count 用于得出数据页集群比的计数器。计算数据页集群比,以帮助

确定表扫描和区域扫描的大 I/O 的效率。仅当运行 update statistics 时,才会更新此值

image

OAM + allocation page count 表的 OAM 页数,加上分配单元(表占据其空间)数。这些统

计信息用于估计对 DOL 锁定表进行 OAM 扫描的开销。

只在 DOL 锁定表上维护此值。

image

First extent data pages 与分配页共享分配单元中第一个扩充的页数。这些页需要用

image

2K I/O 而不是大型 I/O 读取。 只为 DOL 锁定表维护此信息。

Data row size 数据行的平均长度(以字节为单位)。大小包括行开销。

此值仅由 update statisticscreate index alter table...lock 进行 更新。

image

Parallel join degree 指示用于嵌套循环连接的并行度的整数值。

image

Unused page count 扩充中的未使用页数。

image


image

行标签 提供的信息

image

OAM page count OAM 页数。

image

image

image

image

image

Derived statistics optdiag 为其派生信息的统计信息的组。 Data page cluster ratio 请参见下文的 “数据页集群比” Space utilization 请参见下文的 Space utilization Large I/O efficiency 请参见下文的 Large I/O efficiency


表级派生的统计信息


“派生的统计信息”报告有关“数据页集群比”、“空间利用率”和 “大 I/O 效率”的统计信息,这些信息是从“数据页 CR 计数”和数 据页计数中派生的。


数据页集群比


对于所有页锁定表,数据页集群比用于衡量在按页链顺序读取表时,在 扩充上对页进行排列的效果。集群比为 1.0 时表示排列效果最好。集群 比较小表示页链较分散。

对于 DOL 锁定表,数据页集群比用于衡量扩充上页的填充情况。集群 比为 1.0 时表示完全填满扩充。数据页集群比较小表示扩充中包含分配 给表的空页。


Space utilization


空间利用率使用平均大小和数目的行来计算数据页的预期最小数目,并 将该预期最小数目与当前页数进行比较。如果空间利用率低,请在表上 运行 reorg rebuild 或删除并重新创建聚簇索引,以减少数据页上的空闲 空间量,以及扩充中分配给表的空白页数。

如果您使用空间管理属性(如 fillfactor reservepagegap),则为带聚簇 索引的表的数据页上的其它行保留的空闲空间和扩充中为该表保留的空 白页数会影响空间利用率值。

如果最近没有更新统计信息,而且平均行大小已经发生了变化,或者行 数和页数不准确,那么,空间利用就可能会报告大于 1.0 的值。


Large I/O efficiency


“大 I/O 效率”可估计由每个大 I/O 引入的有用页数。例如,如果“大 I/O 效率”的值为 .5,则 16K I/O 平均返回查询所需的 4 2K 页以及另 外 4 页(空白页或因无法聚簇而需共享扩充的页)。低效率值表示在表 上重新创建聚簇索引或运行 reorg rebuild 可改进 I/O 性能。


索引统计信息


下面是有关 DOL 锁定表上每个非聚簇索引、聚簇索引以及所有页锁定 表的聚簇索引的输出示例。表统计信息报告中包含所有页锁定表上聚簇 索引的相关信息。 22 页的表 2-3 描述了该输出。

Statistics for index:

"title_id_ix" (nonclustered)

Index column list:

"title_id"

Leaf count:

45

Empty leaf page count:

0

Data page CR count:

4952.0000000000000000

Index page CR count:

6.0000000000000000

Data row CR count:

4989.0000000000000000

First extent leaf pages:

0

Leaf row size:

17.8905999999999992

Index height:

1


Derived statistics:

Data page cluster ratio:

0.0075819672131148

Index page cluster ratio:

1.0000000000000000

Data row cluster ratio:

0.0026634382566586

注释 仅对带聚簇索引的所有页锁定表显示未包括在此示例中的并行连 接度、未使用页计数和 OAM 页计数。

image


2-3:索引统计信息

image

image

image

行标签 提供的信息 Statistics for index 索引名和类型。 Index column list 索引中列的列表。

image

image

Leaf count 索引中叶级页的数目。

Empty leaf page count

索引中空叶页的数目。

image

Data page CR count 一种计数器,用于计算数据页集群比,以便使用索引访 问表。

请参见 22 页的“索引级派生的统计信息”

image

Index page CR count 用于计算索引页集群比的计数器。

请参见 22 页的“索引级派生的统计信息”

image

Data row CR count 用于计算数据行集群比的计数器。

请参见 22 页的“索引级派生的统计信息”

image

First extent leaf pages 索引中的叶页数,存储在分配单元的第一个扩充中。这 些页需要用 2K I/O 而不是大型 I/O 读取。

只为 DOL 锁定表上的索引维护此信息。

image

Leaf row size 索引中的叶级行的平均大小。此值仅由 update statisticscreate index alter table...lock 进行更新。

image

索引高度 索引的高度(叶级不计算在内)。只是对于所有页锁定 表的聚簇索引,此行才包含在表级输出中。对于其它索 引,索引高度出现在索引级输出中。

此值不适用于堆表。

image


索引级派生的统计信息

索引级部分的派生统计信息基于 21 页的“索引统计信息”中所示的 “CR 计数”值。


数据页集群比


当使用索引访问数据页时,数据页集群比用于衡量大 I/O 的效率。如果 表经过最佳聚簇索引,则集群比为 1.0。数据页集群比可以在很大范围 内变化。对一些索引来说,它们可能非常大,而对另一些来说,则可能 很小。


索引页集群比


索引页集群比用于估计查询所用的大 I/O 的开销,这些查询需要从非聚 簇索引或 DOL 锁定表的聚簇索引中读取大量叶级页。这些查询的某些 示例是覆盖索引扫描和读取大量行的范围查询。

在新建的索引中,如果“索引页集群比”为 1.0 或非常接近于 1.0,表明 这是扩充上索引叶页的最佳聚簇。索引页被拆分且新页从附加扩充中划 分出来后,比率将会下降。很低的百分比可能表示,在其上删除和重建 索引或运行 reorg rebuild 会改进性能,尤其是当许多查询都执行覆盖扫 描时。


数据行集群比


数据行集群比用于估计当使用索引访问数据页时需要读取的页数。


索引的空间利用


空间利用使用平均行宽与行数来计算预期的最小叶级索引页大小,并将 其与当前叶页数进行比较。

如果空间利用率低,则对索引运行 reorg rebuild,或删除并重新创建它可 减少索引页上的空闲空间量,以及扩充中分配给索引的空白页数。

如果您正在使用空间管理属性(如 fillfactor reservepagegap),则为叶 页上其它行保留的空闲空间和在扩充中为索引保留的空白页数会影响空 间利用率。

如果最近没有更新统计信息,而且平均行大小已经发生了变化,或者行 数和页数不准确,那么,空间利用就可能会报告大于 1.0 的值。


索引的大 I/O 效率


I/O 效率可估计由每个大 I/O 引入的有用页数。例如,如果值为 .5, 则 16K I/O 平均返回查询所需的 4 2K 页以及另外 4 页(空白页或因无 法聚簇而需共享扩充的页)。

低效率值表示重新创建索引或运行 reorg rebuild 可改进 I/O 性能。


列统计信息


optdiag 列级统计信息包括:

给出列的密度和选择性的统计信息。如果索引包括多个列,optdiag 将输出如 2-4 所示的有关索引键的每个前缀子集的信息。如果使 用包含列名称列表的 update statistics 创建统计信息,则会在该列列 表中存储每个前缀子集的密度统计信息。

一个直方图,如果在创建索引时表包含一行或多行数据,或如果运 行 update statistics。则会有一个前导列的直方图用于:

当前存在的每个索引(如果创建索引时列中至少有一个非空值)

已创建和删除的任何索引(只要尚未运行 delete statistics

任何已运行 update statistics 的列列表 还有一个直方图用于:

索引中的每一列(如果使用了 update index statistics 命令)

表中的每一列(如果使用了 update all statistics 命令)

optdiag 还会输出表中没有统计信息的列的列表。例如,authors 表中的以 下列没有统计信息:

No statistics for column(s): "address" (default values used) "au_fname"

"phone" "state"

"zipcode"


列统计信息的输出样本

以下示例显示 authors 表中 city 列的统计信息:

Statistics for column: "au_lname" Derived statistics from local partitions.

Last update of column statistics: Apr 8 2008 9:29:07:706PM


Range cell density:

0.0005507993510047

Total density:

0.0005507993510047

Range selectivity:

default used (0.33)

In between selectivity:

default used (0.25)

Unique range values:

0.0005215561314205

Unique total values:

0.0005215561314205

Average column width:

6.7988000000000000


2-4:列统计信息

image

行标签 提供的信息

image

Statistics for column 列名;如果此信息块提供组合索引或列的列

image

表中前缀子集的信息,则行标签是“ Statistics for column group”。

Last update of column statistics


image

Statistics originated from upgrade of distribution page


image

Statistics loaded from

optdiag

创建索引的日期,上次运行 update statistics 的日期,或上次使用 optdiag 更改统计信息的 日期。

从低于 11.9 Adaptive Server 版本的分布页 升级时产生的统计信息。如果已对表或索引 运行 update statistics,或如果已删除索引并在 升级后重新创建索引,则不输出此消息。

如果此消息显示在 optdiag 输出中,请运行

update statistics

optdiag 用于更改 sysstatistics 信息。create index 命令会输出警告消息,指示将覆盖已编 辑的统计信息。

如果统计信息由 update statistics create index 生成,则不显示此行。

image

Range cell density 列上等同性搜索参数的密度。

请参见 26 页的“域单元与总密度值”

image

Total density 列的连接密度。此值用于估计为此列上的连 接返回的行数。

请参见 26 页的“域单元与总密度值”

image

Range selectivity 输出缺省值 .33,除非已使用 optdiag 输入模 式更新该值。

如果不知道搜索参数,可将此值用于范围 查询。

请参见下文的 “域选择性和两者之间选择性 的值”

image

In between selectivity 输出缺省值 .25,除非已使用 optdiag 输入模 式更新该值。

如果不知道搜索参数,可将此值用于范围 查询。

请参见下文的 “域选择性和两者之间选择性 的值”

image

Unique range values 列中唯一值的数目,不包括频率单元。

image

Unique total values 唯一值的总数。

image

Average column width 表中所有列宽的平均数。

image


域单元与总密度值


Adaptive Server 为列密度值存储了两个值:

“范围单元密度”仅测量范围单元的重复值。 如果有任何列的频率单元,则从域单元密度的计算中消除它们。 如果只有列的频率单元,而没有域单元,则域单元密度为 0

有关范围单元和频率单元的信息,请参见 29 页的“了解直方图 输出”

“总密度”测量所有列的重复值,包括由范围单元和频率单元表示 的列。

使用两个单独的值可以提高优化程序对要返回行数的估计能力:

如果搜索参数与频率单元的值匹配,则会返回由频率单元的权值表 示的行的系数。

如果搜索参数在域单元范围内, 则使用域单元密度和域单元权值来 估计要返回的行数。

对于连接,优化程序根据每次扫描表时返回的平均行数进行估计,因此 总密度(测量列中所有值的重复值的平均数)提供了最佳估计。如果搜 索参数的值在优化查询时未知,总密度还可用于等同性参数。

请参见 27 页的“域选择性和两者之间选择性的值”

对于多个列上的索引,将为每个前缀子集存储域单元密度和总密度。在 下面的输出示例中,对于 titles (pub_id, type, pubdate) 上的索引,每考虑 增加一列,密度值会随之减少。

Statistics for column group: "pub_id", "type"

Last update of column statistics: Apr 8 2008 9:22:40:963AM


Range cell density:0.0000000362887320 Total density:0.0000000362887320

Range selectivity: default used (0.33) In between selectivity: default used (0.25) Unique range values: 0.0000000160149449

Unique total values: 0.0000000160149449 Average column width: default used (8.00)


Statistics for column group: "pub_id", "type", "pubdate" Last update of column statistics: Apr 8 2008 9:22:40:963AM


Range cell density: 0.0000000358937986

Total density: 0.0000000358937986


Range selectivity: default used (0.33) In between selectivity: default used (0.25) Unique range values: 0.0000000158004305

Unique total values: 0.0000000158004305

Average column width: 2.0000000000000000

对于有 5000 行的表,提高要返回的优化程序的行的估计精度将取决于 查询中使用的搜索参数的数目:

仅对 pub_id 使用相同数目的搜索参数时,估计将返回

0.0335391029690461 * 5000 行,或 168 行。

对所有三列使用相同数目的搜索参数时,估计将返回

0.0002011791956201 * 5000 行(即,仅返回 1 行)。

随着被评估的搜索参数的增多而提高的精确性级别可显著提高许多查询 的优化。


域选择性和两者之间选择性的值

optdiag 输出域和“两者之间”选择性的缺省值,或在早期的 optdiag 会 话中已为这些选择性设置的值。在优化查询时如果搜索参数为未知,这 些值将用于范围查询。

对于其值未知的等同性搜索参数,缺省情况下使用总密度。 搜索参数在以下各项进行优化时是未知的:

存储过程,用于设置过程内的变量

批处理中的查询,用于为批处理中的搜索参数设置变量

近似值可能导致生成次优查询计划,因为它们高估或低估了查询将返回 的行数。

有关使用 optdiag 提供选择性值的信息,请参见 37 页的“使用 optdiag

输入模式更新选择性”


直方图显示的内容


直方图的输出样本


直方图存储有关列中值分布的信息。 2-5 显示用于创建和更新直方图 的命令以及受影响的列。

2-5:创建直方图的命令

image

命令 直方图用于

image

create index 仅限前导列

image

update statistics

image

image

image

table_name index_name 仅限前导列 column_list 仅限前导列 update index statistics 所有索引列

image

update all statistics 所有列

image


Histogram for column: "city"

Column datatype: varchar(20)

Requested step count: 20

Actual step count: 20

Sampling percent: 0

Out of range histogram adjustment: DEFAULT

optdiag 首先输出直方图的汇总数据,如 2-6 所示。

2-6:直方图汇总统计信息

image

行标签 提供的信息

image

Histogram for column 列名。

image

Column datatype 列的数据类型,包括与该数据类型相应的长度、

image

image

精度和标度。 Requested step count 为列请求的梯级数。 Actual step count 为列生成的梯级数。

如果列中不同值的数目小于请求的梯级数,则此 数字可以小于请求的梯级数。

image

Sampling percent 为生成直方图而采集的表数据的百分比。值范围

image

0 - 100

Out of range histogram adjustment

指示是否调整该列的直方图,以便为列中的超范 围搜索参数分配选择性值。值为 onoff default 之一。仅在全局列统计信息中(而不在分区级别 上)显示此行与直方图信息。

image


直方图输出按列显示,如 2-7 中所示。

2-7optdiag 直方图输出中的列

image

列 提供的信息

image

Step 梯级数。

image

Weight 梯级的权值。

image

(运算符) <<= =,表明值的限制。根据单元是代表 范围单元还是频率单元,运算符会有所不同。 此列没有标题输出。

image

Value 由范围单元表示的值的上限,或者由频率计数 表示的值。

image


了解直方图输出


直方图是一组单元,其中每个单元都分配有一个权值。每个单元有一个 上限和一个下限,它们是不同的列值。单元的权值是介于 0 1 之间的 浮点值,代表以下两者之一:

表中处于值范围内的行的系数(如果运算符为 <=),或者

如果运算符是 =,则为与梯级相匹配的值的数目。

优化程序使用域、权值以及密度值的组合来估计对于列的查询子句要返 回的表中的行数。

Adaptive Server 使用等高直方图,其中每个单元表示的行数大约相等。 例如,pubtune..authors city 列的以下直方图有 20 个梯级;直方图中的 每个梯级都大约表示该表的 5%

Step Weight Value


1

0.00000000

<=

"APO Miami\377\377\377\377\377\377\377"

2

0.05460000

<=

"Atlanta"

3

0.05280000

<=

"Boston"

4

0.05400000

<=

"Charlotte"

5

0.05260000

<=

"Crown"

6

0.05260000

<=

"Eddy"

7

0.05260000

<=

"Fort Dodge"

8

0.05260000

<=

"Groveton"

9

0.05340000

<=

"Hyattsville"

10

0.05260000

<=

"Kunkle"

11

0.05260000

<=

"Luthersburg"

12

0.05340000

<=

"Milwaukee"

13

0.05260000

<=

"Newbern"

14

0.05260000

<=

"Park Hill"

15

0.05260000

<=

"Quicksburg"


16

0.05260000

<=

"Saint David"

17

0.05260000

<=

"Solana Beach"

18

0.05260000

<=

"Thornwood"

19

0.05260000

<=

"Washington"

20

0.04800000

<=

"Zumbrota"

直方图中第一个梯级表示表中空值的比例。由于 city 没有空值,因此权 值为 0。表示空值的梯级值由小于最小列值的最大值表示。

对于字符串,第一个单元的值是小于最小列值(在上面的输出中为“ APO Miami ”)的可能最大的字符串值,使用服务器使用的字符集中的最长字 符对其进行了填充,以达到定义的列长度。您在输出中所看到的实际内 容取决于您用于查看 optdiag 输出文件的字符集、终端类型和软件。

在上面的直方图中,由每个单元表示的值都包括上限,但不包括下限。 此直方图中的单元称为范围单元,因为每个单元都表示一系列值。

可按如下所示表示范围单元中包括的值的范围:

下限 <(单元的值)<= 上限

optdiag 输出中,下限是上一梯级的值,上限是当前梯级的值。

例如,在以上直方图中,第 4 梯级包括 Charlotte(上限),但不包括 Boston(下限)。该梯级的权值是 .0540,表示表的 5.4% 与查询子句相 匹配:

where city > Boston and city <= "Charlotte"

optdiag 直方图输出中的运算符列显示 <= 运算符。不同的运算符被用于 具有高重复值的直方图。


具有高重复值的列的直方图

具有高重复值的列的直方图与具有大量不连续值的列的直方图看上去差 别很大。在具有高重复值的列的直方图中,有一个代表重复值的单元, 称为频率单元

频率单元的权值显示具有匹配值的列的百分比。 频率单元的直方图输出的不同,取决于列值代表以下哪一项:

密集频率计数,其中列中的值在域中是连续的。例如,123 是 连续的整数值。

稀疏频率计数,其中,可能值的域包括不由表中一组离散值表示 的值。

密集频率计数和稀疏频率计数的混合。


某些列的直方图输出包括频率单元和域单元的混合。


密集频率计数的直方图


以下输出显示具有 6 个不同整数值 (1 - 6) 和一些空值的列的直方图:

Step


1

Weight


0.13043478


<=

Value


1

2

0.04347826

<=

1

3

0.17391305

<=

2

4

0.30434781

<=

3

5

0.13043478

<=

4

6

0.17391305

<=

5

7

0.04347826

<=

6

以上的直方图显示密集频率计数,因为列中所有的值都是连续的整数。

第一个单元表示空值(在下面一节中介绍)。因为有空值,所以此单元 的权值表示列中空值的百分比。

第一个梯级的“值”列显示表中的最小列值和 < 运算符。


稀疏频率计数的直方图


在表示具有稀疏频率计数的列的直方图中,高重复值由使用 = 运算符和 单元的权值显示离散值的梯级表示。

在每个梯级之前,都有一个权值为 0.0、值相同且运算符为 < 的梯级, 指示表的各行中没有介入值。对于具有空值的列,如果表中有空值,则 第一个梯级将有一个非零权值。

以下直方图表示 titles 表中 type 列。因为只有 9 个不同的类型,所以它们 由 18 个梯级表示。

Step Weight Value


1

0.00000000

<

"UNDECIDED

"

2

0.11500000

=

"UNDECIDED

"

3

0.00000000

<

"adventure

"

4

0.11000000

=

"adventure

"

5

0.00000000

<

"business

"

6

0.11040000

=

"business

"

7

0.00000000

<

"computer

"

8

0.11640000

=

"computer

"

9

0.00000000

<

"cooking

"

10

0.11080000

=

"cooking

"

11

0.00000000

<

"news

"


12

0.10660000

=

"news

"

13

0.00000000

<

"psychology

"

14

0.11180000

=

"psychology

"

15

0.00000000

<

"romance

"

16

0.10800000

=

"romance

"

17

0.00000000

<

"travel

"

18

0.11100000

=

"travel

"

例如,类型列中 10.66% 的值是“news”,因此优化程序估计一个具有

5000 行的表将会有 533 行被返回。


具有稀疏值和密集值的列的直方图

对于一些值为高重复值而另一些值为分布式值的表,直方图的输出显示 了运算符与频率单元和域单元混合的组合。

以下直方图表示的列中,具有很大比例的行的值分别为 30.050.0

100.0

对于其中每个值,直方图中都有两个梯级:一个梯级表示高重复值具有

= 运算符和显示与该值匹配的列的百分比的权值。另一个梯级表示每个高 重复值的梯级具有 <运算符和权值 0.0。此列的数据类型是 numeric(5,1)

Step

Weight

Value

1

0.00000000

<=

0.9

2

0.04456094

<=

20.0

3

0.00000000

<

30.0

4

0.29488859

=

30.0

5

0.05996068

<=

37.0

6

0.04292267

<=

49.0

7

0.00000000

<

50.0

8

0.19659241

=

50.0

9

0.06028834

<=

75.0

10

0.05570118

<=

95.0

11

0.01572739

<=

99.0

12

0.00000000

<

100.0

13

0.22935779

=

100.0

由于此列中的最小值为 1.0,则用 0.9 来代表空值的梯级。


选择高重复值的梯级数

本节中频率单元的直方图示例使用数量相对较少的高重复值,因此生成 的直方图需要的梯级数少于 20,该数目是 create index update statistics 的缺省梯级数。

如果表中某一列包含大量高重复值,且该列中键的分布不一致,则增加 直方图中的梯级数可使优化程序在使用搜索参数查询该列时做出更精确 的开销估计。

对于具有密集频率计数的列,梯级数应比值的数目至少多一个,以允许 该单元的一个梯级表示空值。

对于具有稀疏频率计数的列,使用的梯级数至少应是不同值数目的两倍。 这样就允许具有零权值的介入单元以及表示空值的单元。例如,如果 pubtune 数据库中的 titles 表有 30 个不同的价格,则此 update statistics 命 令将用 60 个梯级创建直方图:

update statistics titles using 60 values

create index 命令指定 60 个梯级:

create index price_ix on titles(price) with statistics using 60 values

如果某一列包含的一些值只与极少的行匹配,这些值仍可能代表域单元, 但最终产生的直方图梯级数将少于所请求的数。例如,为 state 列请求 100 个梯级,可能为那些由只占很小比例的行所表示的 state 生成一些域 单元。


配置直方图调优因子

histogram tuning factor 控制使用 update statisticsupdate index statisticsupdate all statistics create index 创建的每个直方图中 Adaptive Server 可 分析的梯级数。

histogram tuning factor 可最大限度地减少直方图消耗的资源,并且仅当它可 改善优化时才会增加资源使用。例如,当列中存在重复值或分布不一致 的数据时。在这些情况下,最多可使用 400 个(最大值)直方图梯级。 但是,在多数情况下,Adaptive Server 使用缺省值(在上例中为 20)。

对于 Adaptive Server 15.0.2 ESD #2 之前的版本,此配置参数的缺省值为 1

(禁用)。对于 Adaptive Server 15.0.2 ESD #2 及更高版本,此配置参数 的缺省值为 20(启用)。


请参见《系统管理指南,卷 1》的第 5 章“设置配置参数”中的

histogram tuning factor


有多少个直方图梯级?

对于具有少量不同值(即“低基数”)的列或具有少量行的表,number of histogram steps 的缺省值 (20) 可能已足够。但是,对于包含大量行的 表和其中列具有许多不同值的表,缺省值可能不够,尤其是在未将列的 值平均分布到各行时。

如果您认为查询处理器会生成次优查询计划,请尝试通过增加直方图的 梯级数来增加其粒度。在查询处理器生成查询计划前,增加其直方图梯 级数可消耗更多资源(尤其是过程高速缓存使用率)并延长优化时间。

增加直方图梯级数时,optimization timeout limit 配置参数可导致查询处理 器生成次优查询计划。

您必须确定更多数目的直方图梯级是否会生成更好的查询计划和更好的 整体性能。您可能需要将 number of histogram steps 增加到 200;如果这 样无法改进查询计划和性能,请尝试使用更大的数值,如 500

或者,可针对每 10,000 个数据页使用一个直方图梯级。但是,通常情况

下,即使将梯级数增加到 1000 - 2000 以上,您也不太可能看到任何改进。 如果您在更改直方图梯级数后未看到查询计划或性能有所改进,则应在 其它方面查找瓶颈。

在您执行 update index statistics 时,Adaptive Server 可确定直方图梯级数:

1 number of histogram steps 可为使用所有 create index update index statistics 命令创建的新直方图定义缺省值。number of histogram steps 的缺省值为 20

2 对于 update index statistics,可使用以下命令将直方图梯级数显式设 置为 nnn 值:

update index statistics table_name

using nnn values

3 update index statistics 在创建新直方图时使用现有直方图中的当前梯 级数。number of histogram steps 配置参数不适用于现有直方图。仅当 您使用 using nnn values 显式指定梯级数时, update [index] statistics 才 会覆盖现有直方图。

此步骤完成后,number of histogram steps 配置参数的值就是直方图的 目标梯级数。这在 optdiag 输出中显示为“Requested step count”。


4 Adaptive Server nnn 值(由步骤 2 确定)与 histogram tuning factor 的值相乘,以生成内部中间直方图。例如,如果 nnn 100,并且 histogram tuning factor 20,则中间直方图可能最多有 2000 个梯级 (20 * 100 = 2000)。生成此内部直方图增加了 Adaptive Server 标识“频 率单元”(其中包括重复数据值)的机会。如果 Adaptive Server 找 不到频率单元,则它会将直方图恢复到原始梯级数。Adaptive Server 保留它找到的任何频率单元。

原始梯级数在 optdiag 输出中显示为“Requested step count”。optdiag

将其输出中的实际直方图梯级数显示为“Actual step count”。

5 在低于 15.0.1 ESD #1 的版本中,Adaptive Server 缺省情况下将 histogram tuning factor 设置为 1。对于 15.0.1 ESD#1 及更高的版本, Adaptive Server histogram tuning factor 使用缺省值 20Sybase ® 建 议,除非 Sybase 技术支持部门另行指导,否则请使用缺省值 20




--------------------------------------华丽的分割线-------------------------------------------------------------------------
之前就已经研发成功了能够从Sybase SQL Anywhere的DB文件中恢复数据的工具:ReadASADB。
此工具支持ASA v5.0,v6.0,v7.0,v8.0,v9.0,v10.0,v11.0,v12.0等版本。
恢复Sybase SQL Anywhere的工具在国内应该算首创。

ReadASADB功能
能够从损坏的SQL Anywhere数据文件(.db)和UltraLite数据文件(.udb)上提取数据的非常规恢复工具

  1. 适用于所有的SQL Anywhere版本    包括:5.x,6.x,7.x,8.x,9.x,10.x,11.x,12.x
  2. 适用于所有的UltraLite版本
  3. 能够恢复出来表结构和数据
  4. 能够恢复自定义数据类型
  5. 能够恢复存储过程等对象的语法
  6. 能够导出到目标数据库
  7. 能够导出到SQL文件并生成导入脚本
  8. 支持多种字符集  包括:cp850、cp936、gb18030、utf8等
  9. 能够恢复未加密或者简单加密类型的数据
  10. 简单易用
  11. 限制:不支持AES加密的数据文件
请参考:研发成功了从Sybase SQL Anywhere的DB文件上恢复数据的工具
            SQL Anywhere数据库非常规恢复工具ReadASADB使用介绍

ReadASADB适用场景

各种误操作:

  1. 误截断表(truncate table)
  2. 误删除表(drop table)
  3. 错误的where条件误删数据
  4. 误删除db或log文件
  5. 误删除表中的字段

本工具的应用场景:

1.因为物理磁盘故障、操作系统、系统软件方面或者掉电等等原因导致的Sybase SQL Anywhere数据库无法打开的情况;
2.误操作,包括truncate table,drop table,不正确的where条件导致的误删除等;
Sybase SQL Anywhere无法打开时,比较常见的错误是:Assertion failed。
如:
1、Internal database error *** ERROR *** Assertion failed:201819 (8.0.1.2600) Checkpoint log: invalid bitmap page -- transaction rolled back
2、Internal database error *** ERROR *** Assertion failed:201819 (8.0.1.2600) Page number on page does not match page requested -- transaction rolled back
3、Internal database error *** ERROR *** Assertion failed:200502 (9.0.2.2451) Checksum failure on page 23 -- transaction rolled back
4、File is shorter than expected
5、Internal database error *** ERROR *** Assertion failed: 201116 Invalid free list index page found while processing checkpoint log -- transaction rolled back
6、*** ERROR *** Assertion failed: 51901 Page for requested record not a table page or record not present on page等等。
+-------------------------------------华丽的分割线-------------------------------------------------------------------------