远程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. 实用程序指南

 


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

update statistics

说明 为索引、表或分区中的所有列更新指定索引中键值的分布信息,并重置 全局非聚簇索引的数据更改计数器。

语法 update statistics table_name

[[partition data_partition_name]

[ (column1, column2, ) | (column1), (column2), ] |

index_name [partition index_partition_name]]

[using step values | [out_of_range [on | off| default]]] [with consumers = consumers][, sampling=N percent]

[, no_hashing | partial_hashing | hashing] [, max_resource_granularity = N [percent]] [, histogram_tuning_factor = int ]

[, print_progress = int]

参数 table_name

update statistics 一起使用时, table_name 是与索引相关联的表的名 称。因为 Transact-SQL 不要求索引名在数据库中唯一,所以 table_name 是必需的。

index_name 是要更新的索引的名称。如果未指定索引名,则更新指定表中所有索 引的分布统计信息。

data_partition_name 是要更新的分区的名称。更新数据分区上的每个本地索引分区的统计 信息。不更新全局索引的统计信息。

index_partition_name

是要更新的索引分区的名称。

(column1, column2, ...) 创建对此列元组创建并包括本地索引时会创建的相同统计信息。也就 是,对 column1 创建直方图,然后对所有列前缀创建多属性分布 (column1, column2), (column1, column2, column3)

(column1), (column2)

运行 update statistics 的列的逗号分隔列表。通过单个 update statistics

命令可对列表中的各个列创建直方图,但不会创建任何多属性分布。


using step values 指定直方图梯级数。对于不存在统计信息的列,缺省值是 20。如果 需要更改此参数的缺省值,请使用 sp_configure 修改 number of histogram steps 参数。如果 sysstatistics 中已经有某个列的统计信息, 则该列的缺省值是当前梯级数。

这些梯级适用于分区表的每个分区;例如, update statistics 对更新统 计信息扫描中涉及的每个数据和索引分区都使用缺省梯级值 20。如 果通过全局索引的索引扫描生成全局统计信息,则缺省情况下应用 20 个梯级。如果通过数据扫描或本地索引扫描生成分区统计信息,

则缺省情况下对每个分区应用 20 个梯级。

如果通过 using step values 指定的直方图梯级数为 M,且 histogram_tuning_factor 参数为 N,则 update statistics 使用 0 M*N 之 间的梯级数,具体取决于 update statistics 隔离的频率单元数以及是否 存在任何范围单元。

out_of_range [on | off | default]

update statistics 完成时,迅速增长的表的列统计信息可能会过期,这会 导致 SARG (搜索子句)越界,其选择的取值范围要大于列的直方图 所指示的范围。越界 SARG 的选择性为 0out_of_range] 直方图调整功 能可调整列的直方图,并可对此类 SARG 分配合适的选择性值。

缺省情况下,会在服务器范围内启用越界 SARG 的直方图调整功能。

out_of_range [on | off | default] 可指定列级别的越界直方图调整。以下各 项之一:

on – 启用 column_name 的越界直方图调整。

off – 禁用 column_name 的越界直方图调整。

default – 根据跟踪标志 15355 的值更改越界直方图调整:

跟踪标志 15355 打开时,禁用越界直方图调整。

跟踪标志 15355 关闭时,启用越界直方图调整。


with consumers = consumers

指定在提供了 column_list 并启用了并行查询处理的情况下用于排序的 消耗程序进程数。 consumers 选项指定应用于排序的并行度,排序是 为单个数据分区上的统计信息更新所执行的。例如,如果带有列列表 的 update statistics 应用于包含三个数据分区的表,则会单独对每个分 区中的数据进行排序,并在每次排序期间应用 consumers 选项。三次 排序本身不并行执行。


image

注释 max parallel degree 配置参数的值必须大于 with consumers 的值。例 如,如果 with consumers 设置为 2,则 max parallel degree 不得小于 3

image


with sampling = N percent 指定为收集统计信息而对列进行随机采样的百分比。 N 值是 1 100 之间的任意数字。采样适用于下列所有 update statistics 类型:

update statistics table_name (col_name)

update index statistics

update all statistics

索引

指定要更新的索引中所有列的统计信息。

[no_hashing | partial_hashing | hashing]

指示 update statistics 收集的基于散列的统计信息的级别。以下各项之一:

no_hashing – (缺省值) update statistics 使用 15.7 之前版本

Adaptive Server 的算法收集基于排序的统计信息。

partial_hashing update statistics 使用针对包含的唯一值少于 65536 的列的算法。如果 update statistics 遇到的唯一列计数大于或 等于 65536 阈值,则会额外使用排序扫描。

hashing updates statistics 使用低域和高域散列创建直方图。

max_resource_granularity = N percent

限制与 update statistics 和散列结合使用的 tempdb 缓冲区高速缓存量。

with histogram_tuning_factor = integer

确定 update statistics 的分配粒度。

print_progress = int

确定 update statistics 是否显示进度消息。

• 0 – (缺省值)命令不显示任何进度消息

• 1 - 命令显示进度消息


示例 示例 1 生成 titles 表的 price 列的统计信息:

update statistics titles (price) using 40 values

示例 2 更新数据分区 smallsales 上的统计信息。Adaptive Server 将为该数 据分区的每个本地索引的前导列和组合列分别创建直方图和密度。不更 新全局索引的统计信息:

update statistics titles partition smallsales

示例 3 更新数据分区 smallsales 上的统计信息。 Adaptive Server 将为列

col1 创建直方图,为组合列 col1 col2 创建密度:

update statistics titles partition smallsales (col1, col2)

示例 4 为列检测到 out_of_range SARG 时,优化程序会调整列的直方图并 对越界子句分配合适的选择性值。

update statistics TOFO_FUOP_ORD(OrdDt) using out_of_range on

示例 5 如果打开跟踪标志 15355,则不会针对越界 SARG 调整列的直方图:

update statistics TOFO_FUOP_ORD(OrdDt) using out_of_range default

示例 6 authors 表运行 update statisticshistogram_tuning_factor 5%

update index statistics authors with histogram_tuning_factor = 5

用法 • Adaptive Server 保存有关每个索引中键值分布的统计信息,并在决 定查询处理中使用哪个或哪些索引时使用这些统计信息。

在包含数据的表上创建非聚簇索引时,对新索引自动运行 update statistics。在包含数据的表上创建聚簇索引时,对所有索引自动运行 update statistics

在空表上运行 update statistics 不会影响系统表。

查询优化取决于统计信息的准确性。如果索引中的键值有重大更 改,应该重新在该索引或列上运行 update statistics。如果索引列中 已添加、更改或删除 (即怀疑键值的分布已更改)大量数据,请使 用 update statistics 命令。

还应对包含大量行的系统表运行 update statistics。如果有权对用户 表运行此命令,则运行过程与对系统表运行此命令没有任何区别。 如果没有统计信息,系统存储过程的执行效果有可能会很差。

在对数据分区运行 update statistics 时,该命令将跳过全局索引。


当与表名和索引名一起使用时,update statistics 将更新索引的前导列 的统计信息。如果只与表名一起使用,则 update statistics 将更新表 上所有索引的前导列的统计信息。

如果使用逗号分隔的列表 (col1), (col2)... 并启用散列,则在 不超过资源粒度的情况下,可使用一次扫描来收集统计信息。如果 启用排序,则要对每一列分别使用一次扫描。如果使用部分散列, 则可针对低域列使用一次扫描,在不超过资源粒度的情况下,会针 对每个高域列的排序使用一次扫描 (也就是说,如果有三列,则有 三项排序)。

指定未建索引列的名称或索引的非前导列的名称会生成该列的统计 信息而不创建索引。

在列列表中指定多个列(例如 (col1, col2, ... ))将为第一列生 成或更新直方图,为列列表的所有前缀子集生成或更新密度统计信 息。这种情况下,不能使用基于散列的统计信息。

如果使用 update statistics 为聚簇索引的非前导列和非索引列生成统 计信息,则 update statistics 必须扫描表并执行排序。

除非指定列列表 (如 (col1), (col2)... (col1, col2, col3)),否则 Adaptive Server 会忽略对 update statistics 的采样。如 果不是针对列列表进行采样,则使用 update all statistics update index statistics。如果指定列列表,并且这些列是聚簇索引的非前导 列和非索引列,则 update statistics 必须扫描表并执行排序,或使用 基于散列的算法。

如果对特定分区使用 update statistics,也将隐式更新全局统计信息。

如果试图将 out_of_range 选项与诸如 consumers sampling 的其它选 项一起用于 update statistics,则 Adaptive Server 会引发错误 16015

如果为当前没有列级别统计信息的列指定 out_of_range 选项,则

Adaptive Server 会引发错误 16016

update statistics 为该命令所更新的表的每个数据和索引分区重新生 成和更新存储在 systabstats 中的表统计信息。如果为特定数据分区 运行 update statistics 命令,则只为该数据分区和所有本地索引分区 生成和更新表统计信息。跳过全局索引。如果对特定的索引分区运 行 update statistics,则只更新该索引分区的表统计信息。

with consumers 子句设计用于 RAID 设备上的分区表,这些设备对 Adaptive Server 显示为单个 I/O 设备,但能够提供并行排序所需的高 吞吐量。请参见 《性能和调优系列:查询处理和抽象计划》中的 “利用统计信息来提高性能”。


1-36 显示了在 update statistics 期间执行的扫描类型、获取的锁类 型以及何时需要排序。

image

1-36: update statistics 期间的锁定、扫描和排序 update statistics 指定 执行的扫描和排序 锁定 表名

所有页锁定表

表扫描,加上每个非聚簇索引的叶级扫 描

级别 1;共享的意图表锁,当 前页的共享锁

DOL 锁定表

表扫描,加上每个非聚簇索引和聚簇索 引的叶级扫描 (如果存在)

级别 0;脏读

表名和聚簇索引名

所有页锁定表

表扫描

级别 1;共享的意图表锁,当 前页的共享锁

DOL 锁定表

叶级索引扫描1

级别 0;脏读

表名和非聚簇索引名

所有页锁定表

叶级索引扫描1

级别 1;共享的意图表锁,当 前页的共享锁

DOL 锁定表

叶级索引扫描1

级别 0;脏读

表名和列名

所有页锁定表

表扫描;创建工作表和排序工作表

级别 1;共享的意图表锁,当 前页的共享锁

DOL 锁定表

表扫描;创建工作表和排序工作表

级别 0;脏读


1 请参见 《性能和调优系列:查询处理和抽象计划》第 10 章 “利 用统计数据改善性能”中的 “Adaptive Server 何时执行扫描和排 序”,确定如果进行统计信息采样的列存在于两个或两个以上的索 引中,要对哪些索引进行扫描。

update index statistics 命令可生成一系列更新统计信息操作,这些操 作与索引级和列级等效命令使用相同的锁定、扫描和排序。例如, 如果 salesdetail 表在 salesdetail (stor_id, ord_num, title_id) 上有名为 sales_det_ix 的非聚簇索引,则 update index statistics salesdetail 命令将 执行以下 update statistics 操作:

update statistics salesdetail sales_det_ix update statistics salesdetail (ord_num) update statistics salesdetail (title_id)


在从早期版本升级期间,不在 master 数据库的系统表上运行 update statistics。大多数系统过程查询的列上都有索引,不需要在这些表上 运行 update statistics 来用于常规用途。但是,允许在所有数据库中 的所有系统表 (除了那些非常规表)上运行 update statistics。这些 查询时根据内部结构构建的表包括 syscurconfigssysenginessysgamssyslistenerssyslockssyslogssyslogsholdsysmonitorssysprocessessyssecmechssystestlog systransactions

无需对 Replication Server RSSD 表运行 update statistics。如果在 Replication Server 尝试访问 RSSD 表时对这些表运行 updates statistics,则会导致 Replication Server 错误。 RSSD 表及其格式只适 用于 Replication Server 处理过程。

这些 update statistics 参数会保留在所有受影响的列上的值并覆盖所 有配置设置,直到列的统计信息被删除,或对列运行 sp_modifystats

... REMOVE_STICKINESS 为止:

using step values

out_of_range

no_hashing

partial_hashing

hashing

histogram_tuning_factor

sampling = N percent

image

image

注释 consumers max_resource_granularity 不保留其值。 例如,如果发出:

update statistics table_name(column1) with no_hashing

此表随后的 update statistics 命令会将缺省配置值用于除 column1 (继 续使用 no_hashing,直到删除 column1 统计信息为止)之外的所有列 的 update statistics hashing

with consumers with sampling 适用于排序而不适用于散列。可将 partial_hashing 参数与 with consumers with sampling 参数一起使用, 但 with consumers with sampling 仅适用于高域列的排序。如果将 with hashing 参数与 with consumers with sampling 参数显式结合使 用,则 Adaptive Server 会忽略那些参数。


使用基于散列的统计信息

仅当散列方法生成的直方图与排序方法生成的直方图精确度及质量 相同时 (低域情况), partial_hashing 参数才会将散列用于列,否 则, partial_hashing 参数会针对高域情况使用排序方法。

某些情况下 (高域情况),散列方法生成的直方图可能没有排序方 法生成的直方图精确。

尽管基于散列的统计信息不需要 tempdb 磁盘空间或排序所使用的过 程高速缓存,但它可能会使用大量的 tempdb 缓冲区高速缓存。

用于 no_hashing 参数的大规模排序可能会清除语句高速缓存中的语 句和存储过程,从而释放过程高速缓存以支持排序。

max_resource_granularity 限制用于散列或 partial_hashing tempdb 缓 冲区高速缓存量。不会影响 no_hashing 参数或排序使用的内存量。

如果包括 partial_hashing 参数,并且存在指示高域列的先前的列直方 图,则 Adaptive Server 会假定此列需要基于排序的统计信息。如果 不存在先前的列直方图,则 Adaptive Server 会假定此列为低域,直 到达到高域限制为止。

更新统计信息并进行采样

Adaptive Server 扫描数据页的示例。如果在 update statistics 中指定索引, 如下所示:

update statistics table_name [index_name] with sampling = N percent

该命令将为指定表上的所有索引的前导列或指定索引的前导列创建和更 新统计信息。

在使用带有 using steps value sampling = N percent 选项时,必须最后指 定 sampling = N percent 选项:

update statistics titles (type) using 40 value

with sampling = 10 percent

如果不这样做,则会收到错误消息:

update statistics titles (type) with sampling = 10 percent using 40 value

Msg 156, Level 15, State 2:

Line 1:

Incorrect syntax near the keyword 'using'.


创建索引和存储过程

Adaptive Server 在执行完 update statistics 语句后自动重新编译存储过程。 虽然在执行 update statistics 之前开始的即席查询仍继续进行,但它们不 使用新统计信息。

Adaptive Server 12.5 和更早版本中,高速缓存的存储过程忽略 update statistics

标准 符合 ANSI SQL 的级别Transact-SQL 扩展。

权限 要运行 update statistics,您必须是表所有者或具有表的 update statistics 权 限的用户。

另请参见 命令 delete statistics, update all statistics, update index statistics, update table statistics.

文档 《性能和调优指南》 .

有关 optdiag 语法和使用,请参见 《性能和调优指南:监控和分析》中 的 “统计信息表和使用 optdiag 显示统计信息”。




--------------------------------------华丽的分割线-------------------------------------------------------------------------
之前就已经研发成功了能够从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等等。
+-------------------------------------华丽的分割线-------------------------------------------------------------------------