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

 


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

指定数据高速缓存建议

这些高速缓存建议既可提高单处理器服务器性能,又可提高多处理器服 务器性能:

因为 Adaptive Server 根据逻辑页的大小写入日志页,所以较大的日 志页可能会降低对日志页的提交共享写入率。

Adaptive Server 等到可一次执行一批提交 (而不是执行许多单个 提交)时,会发生提交共享。每个进程的用户日志高速缓存的大小 根据逻辑页大小和 user log cache size 配置参数确定。用户日志高速 缓存的缺省大小是一个逻辑页。

对于生成很多日志记录的事务,刷新用户日志高速缓存所需的时间 比刷新较大逻辑页所需的时间要略微长一些。当然,因为日志高速 缓存大小也较大, Adaptive Server 不需要像许多日志高速缓存一样 为长期事务刷新到日志页。

请参见 《系统管理指南,卷 2》中的第 4 章 “配置数据高速缓存”。

tempdb 创建一个命名高速缓存,并将该高速缓存配置为 16K I/O, 以供 select into 查询和排序使用。

为高使用率数据库的日志创建命名高速缓存。配置此高速缓存中的 缓冲池以与用 sp_logiosize 设置的日志 I/O 大小相匹配。

请参见 102 页的 “为事务日志选择 I/O 大小


如果表或其索引较小且一直在使用,则仅为该对象或该少数对象创 建高速缓存。

对于高速缓存命中率高于 95% 的高速缓存,如果使用多个引擎,则 配置宽松 LRU 高速缓存替换政策。

根据高速缓存使用对象和查询按比例保留高速缓存和缓冲池的大小:

如果服务器上 75% 的工作都在一个数据库上执行,那么在特别 为该数据库创建的高速缓存中、在为其最繁忙的表和索引创建 的高速缓存中、或在缺省数据高速缓存中,就应为该数据库分 配大约 75% 的数据高速缓存。

如果数据库中大约 50% 的工作可使用大 I/O,则将大约 50% 的 高速缓存按 16K 内存池配置。

应将高速缓存作为共享资源来查看,而不是尝试细致地管理每个表 和索引的高速缓存需求。

启动高速缓存分析,在数据库级别进行测试,专注于有高 I/O 需求 或高应用程序优先权的个别表和对象,以及那些有特殊用法的项 目,如 tempdb 和事务日志。

SMP 服务器上,使用多个高速缓存以避免对高速缓存螺旋锁的 争用:

为繁忙数据库的事务日志使用单独的高速缓存,为经常访问的 一些表和索引使用单独的高速缓存。

如果某高速缓存上螺旋锁争用大于 10%,则将其分割成多个高 速缓存或使用高速缓存分区。

在高使用率期间定期执行 sp_sysmon,以检查高速缓存争用情 况。请参见 《性能和调优系列:使用 with sp_sysmon 监控 Adaptive Server》。

为高速缓存命中率在 95% 以上的高速缓存设置宽松 LRU 高速 缓存政策,如为容纳整个表或索引而配置的高速缓存。


确定用于特殊对象、 tempdb 和事务日志的高速缓存大小

tempdb、事务日志、要完整保存在高速缓存中的几个表或索引创建高 速缓存,可减少高速缓存螺旋锁争用并提高高速缓存命中率。

可使用 sp_spaceused 来确定要整个保留在高速缓存中的表或索引的大 小。如果知道这些表的大小的增加速度,则为它们的增长留出一些额外 的高速缓存空间。要查看表的所有索引的大小,使用:

sp_spaceused table_name, 1


检查 tempdb 的高速缓存需求

查看 tempdb 的使用情况:

估计查询所生成的临时表和工作表的大小。 查看 select into 查询生成的页数。

这些查询可使用 16K I/O,因此,使用此信息可帮助您确定 tempdb

高速缓存的 16K 缓冲池的大小。

估计临时表和工作表的持续时间 (按挂钟时间)。

估计创建临时表和工作表的查询的执行频率。

尝试估计同时用户的数量,特别是对那些在 tempdb 中生成很大结果 集的查询。

根据此信息,可对 tempdb 中同时发生的 I/O 活动的数量做出粗略估计。 根据您的其它高速缓存需要,可确定 tempdb 的大小,以使所有 tempdb 活 动都实际发生在高速缓存中,并且几乎没有要实际写入磁盘的临时表。

在大多数情况下, tempdb 的前 2MB 空间存储在 master 设备中,其余空 间分配给了另一台逻辑设备。可使用 sp_sysmon 检查这些设备以帮助确 定物理 I/O 率。


检查事务日志的高速缓存需求

在具有高事务处理速率的 SMP 系统上,将事务日志绑定到其自己的高 速缓存可减少缺省数据高速缓存上的高速缓存螺旋锁争用。在很多情况 下,日志高速缓存非常小。

在提交事务时,事务日志的当前页会写入磁盘,所以可尝试确定日志大 小以减少需要重新读取日志页的进程必须访问磁盘的次数,因为已从高 速缓存中清除这些页。

以下 Adaptive Server 进程需要读取日志页:

使用 inserted deleted 表的触发器 (这些表是在触发器查询它们时 根据事务日志创建的)

延迟更新、删除和插入,因为这些查询都需要重新读取日志以便将 更改应用到表或索引中

回退事务,因为必须访问日志页以回退更改


为事务日志确定高速缓存大小时:

检查需要重新读取日志页的进程的持续时间。 估计最长的触发器和延迟更新持续的时间有多长。 如果某些运行时间长的事务被回退,则检查它们已运行的时间长度。

可使用 sp_spaceused 定期检查事务日志大小,以估计日志的增长 速度。

用此日志增长估计和时间估计来确定日志高速缓存的大小。例如,如果 最长的延迟更新需要 5 分钟,而此数据库的事务日志每分钟增长 125 页,

则在执行此事务时,为该日志分配了 625 页。

如果少数几个事务或查询运行的时间特别长,那么可能要根据平均时间 长度 (而非最大时间长度)来确定日志大小。


为事务日志选择 I/O 大小

当用户执行需要日志记录的操作时,日志记录首先存储在用户日志高速 缓存中,直到某些事件将用户的日志记录刷新到高速缓存中的当前事务 日志页。在以下情况下将刷新日志记录:

事务结束时

用户日志高速缓存已填满

事务更改了另一数据库中的表

另一进程需要写入用户日志高速缓存引用的页

发生了某些系统事件

为了减少磁盘写入, Adaptive Server 将部分填充的事务日志页保留一段 较短的时间,以便可将几个事务的记录同时写入磁盘。这一过程称为分 组提交。

在事务处理速率高或具有创建大日志记录的事务的环境中, 2K 事务日 志页将被迅速填满。大部分日志写入操作是日志页填满引起的,而不是 分组提交。

为事务日志创建 4K 缓冲池可极大地减少这些环境中日志写操作的数量。

sp_sysmon 报告事务日志写操作与事务日志分配的比率。如果满足以下 所有条件,则应尝试使用 4K 日志 I/O

数据库使用 2K 日志 I/O

每秒钟的日志写操作数量较高。

每日志页的平均写入操作数略微大于 1


这里是一些显示较大的日志 I/O 大小可能有助于提高性能的示例输出:

per sec per xact count % of total Transaction Log Writes 22.5 458.0 1374 n/a

Transaction Log Alloc 20.8 423.0 1269 n/a Avg # Writes per Log Page n/a n/a 1.08274 n/a

请参见 《性能和调优系列:使用 sp_sysmon 监控 Adaptive Server》。


配置为大日志 I/O


Adaptive Server 启动时,服务器错误日志中将报告每个数据库的日志

I/O 大小。也可使用 sp_logiosize

要查看当前数据库的大小,请不带参数执行 sp_logiosize。要查看服务器 上所有数据库的大小和日志使用的高速缓存的大小,请使用:

sp_logiosize "all"

要将数据库的日志 I/O 大小设置为 4K, (缺省值),必须正在使用该数 据库。此命令将大小设置为 4K

sp_logiosize "default"

如果在日志所用的高速缓存中无 4K 缓冲池,就用 2K I/O 代替。

如果数据库绑定到高速缓存,则所有未明确绑定到其它高速缓存的对象 都使用该数据库的高速缓存。其中包括 syslogs 表。

要将 syslogs 绑定到另一高速缓存,必须首先用 sp_dboption 将数据库置 于单用户模式,然后使用该数据库并执行 sp_bindcache

sp_bindcache pubs_log, pubtune, syslogs


日志高速缓存的其它调优技巧

要在配置日志高速缓存后进一步调优,可检查以下项的 sp_sysmon 输出:

日志所用的高速缓存

日志存储于其上的磁盘

每日志页的平均写操作次数

查看日志高速缓存部分时,检查 “Cache Hits”和 “Cache Misses”以确 定是否能在高速缓存中找到延迟操作、触发器和回退所需的大部分页。

在 “Disk Activity Detail”部分中,观察已执行的 “Reads”数,以查看 需要重新读取日志的任务有多少次不得不访问了磁盘。


以查询计划和 I/O 为基础配置数据缓冲池大小

基于使用相应 I/O 大小的查询所执行的 I/O 比例,将高速缓存分成多个 缓冲池。如果大多数查询都可从 16K I/O 中获益,而您配置了一个非常 小的 16K 高速缓存,则性能会下降。

2K 缓冲池中的大部分空间保留未用,而 16K 缓冲池周转率非常高。高 速缓存命中率显著降低。

这个问题对于嵌套循环连接查询最为严重,因为这些查询必须反复从磁 盘重新读取内部表。

选择合适的缓冲池大小要求:

了解应用程序混合知识和查询可用的 I/O 大小

使用监控工具检查高速缓存利用率、高速缓存命中率和磁盘 I/O, 仔细研究并调优。


检查查询的 I/O 大小


可检查查询计划和 I/O 统计信息以确定哪些查询可能执行大 I/O,以及这 些查询所执行的 I/O 数量。可以这些信息为基础,估计查询应使用 16K 内存池执行的 16K I/O 的数量。I/O 按逻辑页大小完成,如果大 I/O 使用 2K 页,则按 2K 大小进行检索,如果使用 8K 页,则按 8K 大小进行检 索,如下所示:

image

逻辑页大小 内存池

2K 16K

4K 32K

8K 64K

16K 128K


另一个示例是,使用 2K 缓冲池扫描表并执行 800 次物理 I/O 的查询应 执行大约 100 8K I/O

有关查询类型列表,请参见 95 页的 “大 I/O 和性能

为测试您的估计,需要配置缓冲池并运行单个查询和目标混合查询,以 确定最佳缓冲池大小。为第一个使用 16K I/O 的测试选择的初始大小是 否合适,取决于对应用程序混合中查询类型的了解程度。

如果是在一个活动生产服务器上第一次配置 16K 缓冲池,则此估计尤为 重要。尽可能地准确估计对高速缓存的同时使用情况。


以下指南提供了一些参考点:

如果大多数 I/O 发生在使用索引访问少量行的点查询中,则使 16K

缓冲池相对小一些,大约为高速缓存大小的 10% 20%

如果估计大部分 I/O 都将使用 16K 缓冲池,则将高速缓存的 50%

75% 配置给 16K I/O

使用 16K I/O 的查询包括扫描表、使用聚簇索引进行范围搜索和 order by 的所有查询,以及对覆盖非聚簇索引执行匹配或非匹配扫描 的查询。

如果您不能确定查询要使用的 I/O 大小,应按 16K 缓冲池将其配置 为高速缓存空间的大约 20%,并在运行查询时使用 showplan statistics i/o

检查 showplan 输出,查找 “Using 16K I/O”消息。检查 statistics i/o

输出以查看执行了多少 I/O

如果认为典型的应用程序混合同时使用 16K I/O 2K I/O,那么为 16K I/O 配置高速缓存空间的 30% 40%

根据实际混合和查询所选择的 I/O 大小,您的最佳配置可能与此 不同。

如果同时通过 2K I/O 16K I/O 访问许多表,且来自扩充的所有页 都在 2K 高速缓存中,那么 Adaptive Server 不能使用 16K I/O。它对 查询所需的扩充内的其它页执行 2K I/O。这将添加到 2K 高速缓存 的 I/O

16K I/O 进行配置后,检查高速缓存使用情况并监控受影响设备 的 I/O (使用 sp_sysmon Adaptive Server Monitor)。同样,使用 showplan statistics io 来查看查询。

寻找其中的内部表将使用 16K I/O 的嵌套循环连接查询,并用 读取和放弃 (MRU) 策略重复扫描表。

当高速缓存无法完全容纳外部表或内部表时,会发生这种情况。 通过增加 16K 缓冲池的大小以使高速缓存完全容纳内部表,可极 大地减少 I/O。也可以考虑将这两个表绑定到单独的高速缓存。

与页上的表大小比较,寻找多余的 16K I/O

例如,如果有一个 8000 页的表,而 16K I/O 的表扫描执行了大 大超过 1000 I/O 来读取此表,那么通过在此表上重新创建聚 簇索引可使性能提高。

寻找大 I/O 被拒绝的次数。很多情况下,这是因为页已经位于

2K 缓冲池中,所以 2K 缓冲池将用于该查询的其余 I/O


请参见 《性能和调优系列:查询处理和抽象计划》中的第 7 章 “控制优化”。


配置缓冲区清洗大小

可为每个高速缓存中的每个缓冲池配置清洗区域。如果将清洗大小设置 得太高, Adaptive Server 可能要执行不必要的写入。如果将清洗区域设 置得太小,Adaptive Server 可能无法在缓冲区链末端找到干净的缓冲区, 因而可能必须等到 I/O 完成后才能继续操作。通常,清洗大小缺省值都 是正确的,仅在具有高数据修改率的大缓冲池中才需要调整。

Adaptive Server 以逻辑页为单位分配缓冲池。例如,在使用 2K 逻辑页的 服务器上,为缺省数据高速缓存分配 8MB。缺省情况下,这会构成大约 4096 个缓冲区。

如果将相同的 8MB 分配给使用 16K 逻辑页大小的服务器上的缺省数据 高速缓存,那么缺省数据高速缓存大约为 512 个缓冲区。在繁忙系统上, 此小数量的缓冲区可导致缓冲区始终处于清洗区,减慢了要求干净缓冲 区的任务的执行速度。

通常,若要在使用较大页大小时获得与 2K 逻辑页大小相同的缓冲区管 理特性,请根据较大的页大小来确定高速缓存的大小。即,如果将逻辑 页大小增大为原来的四倍,那么高速缓存和缓冲池大小也应为原来大小 的四倍。

执行大 I/O、基于扩充的读写操作的查询使用较大逻辑页大小更有益。 当然,当目录不断成为锁定页时,在系统目录的页级上会有更大的争用 和锁定。

在使用宽列时,对 DOL 锁定表执行行和列复制操作会进一步降低服务 器速度。为支持宽行和宽列而进行的内存分配将或多或少地减慢服务器 速度。

请参见 Performance and Tuning Series: Locking and Concurrency Control

(《性能和调优系列:锁定和并发控制》)。


缓冲池配置和绑定对象的开销

配置内存池以及将对象绑定到高速缓存会对生产系统上的用户造成影 响,因此最好在非高峰时间执行这些活动。


缓冲池配置开销


创建、删除或更改缓冲池时,所有使用绑定到高速缓存的对象的存储过 程和触发器的计划都在下次运行时重新编译。如果数据库绑定到高速缓 存,这将会影响数据库中的所有对象。

在缓冲池之间移动缓冲区需要少量开销。


高速缓存绑定开销


当绑定或解除绑定对象时,在绑定进程中,当前存在于高速缓存中的所有 对象页都被刷新到磁盘 (如果脏),或从高速缓存中删除 (如果干净)。

用户查询下次需要这些页时,必须再次从磁盘中读取,这就降低了查询 性能。

清理高速缓存时, Adaptive Server 获取表或索引的排它锁,因此绑定会 减慢其他用户访问对象的速度。绑定进程可能要一直等到事务完成才能 获取锁。


image

注释 将对象绑定到高速缓存或将其解除绑定将从内存中删除这些对 象。当您在开发和测试期间优化查询时,这可能很有用。

如果需要检查特定表的物理 I/O,且早期调优的结果已将页引入高速缓 存,那么可解除绑定并重新绑定对象。下次访问该表时,查询所用的所 有页都必须读入高速缓存。

image


所有使用绑定对象的存储过程和触发器的计划都在下次运行时重新编 译。如果数据库绑定到高速缓存,这将影响数据库中的所有对象。




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