远程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 维护存储过程查询计划的 MRU/LRU (最近使用最多的/ 最近使用最少的)链。用户执行存储过程时, Adaptive Server 在过程高 速缓存中查找要使用的查询计划。如果某一查询计划可用,它就被放置 在链的 MRU 端,然后开始执行。


如果内存中无计划,或所有计划都在使用中,则从 sysprocedures 表中读 取此过程的查询树。然后使用提供给该过程的参数优化查询树,并将其 放在链的 MRU 端,再开始执行。在页链的 LRU 端未用的计划在高速缓 存中老化。

为过程高速缓存分配的内存拥有所有批处理 (包括所有触发器)的已 优化的查询计划 (偶尔是树)。

如果多个用户同时使用一个过程或触发器,那么在高速缓存中将有它的 多个副本。如果过程高速缓存太小,用户尝试执行存储过程或引发触发 器的查询时,会收到一条错误消息,且必须重新提交查询。未使用的计 划在高速缓存中老化后,所占用的空间即变为可用。

Adaptive Server 在启动时使用缺省过程高速缓存大小 (以内存页为单 位) 。过程高速缓存的最优值因应用程序的不同而不同,也可因使用模 式的变化而不同。使用 procedure cache size 可确定过程高速缓存的当前 大小 (请参见 《系统管理指南,卷 1》中的第 5 章 “设置配置参数”)。


获得有关过程高速缓存大小的信息

启动 Adaptive Server 时,错误日志说明有多少过程高速缓存可以使用。

proc buffers 表示可同时驻留在过程高速缓存中的已编译过程对象的 最大数量。

proc headers 表示过程高速缓存专用的页数。高速缓存中的每个对象 都至少需要一页。


监控过程高速缓存性能

sp_sysmon 报告存储过程的执行情况和必须从磁盘中读取存储过程的 次数。

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

如果没有足够的内存装载另一查询树或计划,或者已使用最大数量的编 译对象, Adaptive Server 将报告 Error 701


过程高速缓存大小确定

在生产服务器上,应尽可能减少从磁盘进行的过程读取数。当用户需要 执行某过程时, Adaptive Server 应能够在过程高速缓存中为最常用的过 程找到一个未用的树或计划。服务器在高速缓存中找到可用计划的百分 比称为高速缓存命中率。保持高速缓存中过程的较高高速缓存命中率可 提高性能。

5-2 中的公式给出了一个好的起点。

5-2:确定过程高速缓存大小的公式


过程高速缓存 大小

(最大并发用户数) *

= 4 + 最大计划大小) * 1.25


所需的最小过程高速缓 存大小

(主要过程数) *

= (平均计划大小)


如果已嵌套存储过程 (过程 A 调用过程 B,后者调用过程 C ),则这些 存储过程必须同时位于高速缓存中。将嵌套过程的大小相加,用最大总 和代替 5- 2 中的公式中的 “最大计划大小”。

最小过程高速缓存大小是允许至少每一常用编译对象的一个副本驻留在 高速缓存中的最小内存量。不过,过程高速缓存还可以在执行时作为附 加内存用于排序和查询优化以及其它目的。另外,所需内存基于查询的 类型。

使用 of sp_monitorconfig 可配置过程高速缓存:

1 将过程高速缓存配置为上面确定的最小大小。

2 运行常规数据库装载。如果出现错误 701,请增加过程高速缓存大 小。调整增加的大小,以避免过量分配。建议的增加量是 (128 *

(过程高速缓存的大小,以 GB 计))。如果过程高速缓存大小小于

1GB,则按 128MB 的增量增加大小。如果过程高速缓存大小大于

1GB 但小于 2GB,则按 256MB 的增量增加大小,依此类推。

3 Adaptive Server 达到或超过高峰装载量后,运行 sp_monitorconfig “procedure cache size”

4 如果 sp_monitorconfig 指示 Max_Used 远远低于 sp_configure 中过程高 速缓存的当前值,表明过量分配了过程高速缓存。应考虑降低 procedure cache size 配置值,以便在下次重新启动时可以分配少量的 过程高速缓存。


5 如果 sp_monitorconfig Num_Reuse 输出值是零以外的其它值,则也 表明过程高速缓存不足。如果该值在一段时间内增大了,请考虑按 照上述步骤 2 中的建议增加过程高速缓存的大小。


估计存储过程大小


sysprocedures 存储过程的规范化查询数。涉及其它开销,可以按每 2K 页两行来考虑此大小。若要估计单个存储过程、视图或触发器的大小, 请使用:

select count(*) as "approximate size in KB" from sysprocedures

where id = object_id("procedure_name")

例如,要查找 pubs2 titleid_proc 的大小,可使用以下命令:

select count(*) from sysprocedures

where id = object_id("titleid_proc")


approximate size in KB

----------------------

3

如果计划位于高速缓存中,则 monCachedProcedures 监控表包括该计划 的大小。


估计用于排序的过程高速缓存大小

若要确定用于排序 (用于 create indexupdate statisticsorder bydistinctsort merge join)的过程高速缓存的大小,应首先确定每页的 行数:


每页行数 =

页的大小

行的最小长度


使用以下公式可确定用于排序的过程高速缓存的大小:

过程

高速缓存大小

= (排序缓冲区数) x (每页行数) x 85 字节


image

注释 如果使用 64 位系统,则此公式使用 100 字节。

image


估计由 create index 使用的过程高速缓存量

create index 在索引键内排序数据。此排序操作可能需要进行一个或多个 内存中排序,以及一个或多个基于磁盘的排序。 Adaptive Server create index 数据排序装载到与正在其上创建索引的表关联的数据高速缓 存中。此排序操作使用的数据高速缓存缓冲区的数目受 number of sort buffers 的值的限制。如果要排序的所有键与 number of sort buffers 的值匹 配, Adaptive Server 将执行单个内存中排序操作。如果排序缓冲区无法 容纳要排序的所有键,则 Adaptive Server 必须将内存中排序的结果写入 磁盘,以便 Adaptive Server 可以将下一组索引键装载到要排序的排序缓 冲区中。

除了从数据高速缓存分配的排序缓冲区外,此排序操作还需要过程高速 缓存中大约 66 字节的元数据。以下是用于计算所使用的过程高速缓存 量的公式 (假定使用所有排序缓冲区):

所需 2K 过程高速 缓存缓冲区数

(每页行数) X (排序缓冲区数) X 66 字节

image

= 2048(假定 2K 页大小)


示例 1 在此示例中,

number of sort buffers 设置为 500

create index 创建一个 15 字节字段,因此每页 131

因此,将使用所有 500 2K 缓冲区容纳要排序的数据,过程高速缓存 使用 2,111 2K 缓冲区:

(131 X 500 X66) / 2048 = 2,111 2K 缓冲区

示例 2 在此示例中,

number of sort buffers 设置为 5000

create index 创建一个 8 字节字段,因此每页大约 246


因此,将使用所有 5,000 2K 缓冲区容纳要排序的数据,过程高速缓 存使用 39, 639 2K 缓冲区:

(246 X 5,000 X 66) / 2048 = 39,639 2K 缓冲区

示例 3 在此示例中:

number of sort buffers 设置为 1000

表较小,您可以完全将其装载到使用 800 2K 排序缓冲区的数据高 速缓存中,从而留下 200 个数据高速缓存排序缓冲区用于相应开销

create index 创建一个 50 字节字段,因此每页大约 39 行 因此,将使用所有 5000 2K 缓冲区容纳要排序的数据: (39 X 1,000 X 66) / 2048 = 1,257 2K 缓冲区

但是,数据高速缓存还留下 200 2K 缓冲区用于相应开销,因此过程 高速缓存使用 1057 2K 缓冲区。


降低查询处理延迟


Adaptive Server 15.7 中的查询处理层能让多个客户端连接重用或共享动 态 SQL 轻量过程 (LWP)


跨多个连接重用动态 SQL LWP

15.7 之前的版本中,Adaptive Server 在动态 SQL 高速缓存中存储动态 SQL 语句 (准备语句)及其相应 LWP。动态 SQL 语句的每个 LWP 都 是根据连接元数据确定的。因为连接具有与同一 SQL 语句关联的不同 LWP,所以这些连接不能重用或共享同一 LWP。此外,在释放动态 SQL 高速缓存后,连接创建的所有 LWP 和查询计划都会丢失。

15.7 及更高版本中,Adaptive Server 使用语句高速缓存来另行存储转换 为 LWP 的动态 SQL 语句。由于语句高速缓存存储在所有连接当中,因 此,动态 SQL 语句可以在连接当中重复使用。以下语句不被高速缓存:

select into 语句。

包含所有实际值且不含参数的 insert-values 语句。

不引用任何表的查询。

包含多个 SQL 语句的各个 prepared 语句。例如:

statement.prepare( insert t1 values (1) insert t2 values (3));


导致 instead-of 触发器引发的语句。

若要能够使用语句高速缓存存储动态 SQL 语句,请将 enable functionality group streamlined dynamic SQL 配置选项设置为 1。请参见 《系统管理 指南,卷 1》中的 “设置配置参数”。

使用语句高速缓存提供了诸多好处:

当创建了条目的连接存在时,不会从语句高速缓存中清除 LWP 及 其关联计划。

可以跨各个连接共享 LWP,从而进一步提高性能。

重用 LWP 还可以改进 execute 游标的性能。

可以从监控表 monCachedStatement 监控动态 SQL 语句。


image

注释 重用动态 SQL LWP 可能对性能产生负面影响,因为重用计划是 使用原来提供的一组参数值生成的。

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等等。
+-------------------------------------华丽的分割线-------------------------------------------------------------------------