远程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 锁限制

缺省情况下, Adaptive Server 配置为有 5000 个锁。系统管理员可以使 用 sp_configure 更改这一限制。例如:

sp_configure "number of locks", 25000

由于每个锁都需要使用内存,因此还可能需要调整 sp_configure 参数

max memory

查询需要的锁的数目会随锁定方案、并发和并行的进程数目以及由事务 执行的操作的类型不同而发生很大的变化。能否正确配置系统的锁数, 这与您的经验和对系统的熟悉程度有关。

开始时为每个活动的并发连接配置 20 个锁,再为每个工作进程配置 20 个 锁。在下列情况下,应考虑增加锁数:

您使用数据行锁定

查询以隔离级别 2 3 运行,或者使用 serializable holdlock

启用了平行查询处理 (尤其是对隔离级别为 2 3 的查询启用平行 查询处理)

执行许多多行更新

增加锁升级阈值


估计 DOL 锁定表的 number of locks

若将锁定方案更改为仅数据锁定,可能会需要更多的锁,也可能会减少 所需的锁数:

使用数据页锁定的表比使用所有页锁定的表需要的锁少,这是因为 在数据页锁定表上的查询不获取单独的索引页锁。

使用数据行锁定的表需要大量的锁。虽然数据行锁定表不获取索引 页锁,但是影响许多行的数据修改命令可能持有更多的锁。

以事务隔离级别 2 3 运行的查询可能获取并持有大量的行锁。


insert 命令和锁


采用所有页锁定时的 insert 需要 N +1 个锁,其中 N 是索引数。在 DOL 锁 定表上进行相同的插入只锁定数据页或数据行。


select 查询和锁


对于事务隔离级别 1 的扫描,read committed with lock 会设置为持有锁 (1), 扫描将获取滚过行或页的重叠锁,因此每次至多持有两个数据页锁。

而以事务隔离级别 2 3 执行的扫描 (尤其是那些使用数据行锁定的扫 描),则可以获取和持有大量的锁 (特别是在并行运行时)。如果使用 数据行锁定,并且假设锁升级期间没有发生阻塞,则单个表扫描可能需 要的最大锁数是:

row lock promotion HWM * parallel_degree

如果排它锁的锁争用禁止扫描升级到表锁,则扫描可以获取大量的锁。

对于以隔离级别 2 3 执行的查询的特别高的锁定需求,应考虑对影响 大量行的应用程序改为使用 lock table 命令,来取代配置锁数这一方法。 此命令将获取一个表锁,而不会尝试获取单独的页锁。

有关使用 lock table 的信息,请参见 76 页的 “ lock table


数据修改命令和锁


对于使用数据行锁定方案的表,数据修改命令需要的锁比所有页锁定表 或数据页锁定表上的数据修改需要的锁多很多。

例如,对堆表进行大量插入操作的事务可能只获取所有页锁定表的几个 页锁,却要求数据行锁定表中的每个插入行有一个锁。同样,使用数据 行锁定时,更新或删除大量行的事务可能获取多很多的锁。


设置锁升级阈值


锁升级阈值在 Adaptive Server 试图升级到对象的表锁之前,设置任务或 工作进程允许的页锁数或行锁数。可以在全服务器范围级别、数据库级 别或为单个表设置锁升级阈值。

缺省值为多种大小的表都提供了很好的性能。将阈值配置得较高会降低 查询获取表锁的机会 (特别是对于对其进行查询会锁定成百个数据页的 很大的表)。


image

注释 锁升级始终分为两级:从页锁到表锁或者从行锁到表锁。行锁不 可能升级到页锁。

image


锁升级和扫描会话


每次扫描会话时都会进行锁升级。

扫描会话 是指 Adaptive Server 如何在一个事务中跟踪对表的扫描。单个 事务可以有多个扫描会话,原因如下:

在有连接、子查询、 exists 等子句的情况下,可能在一个事务中对 表进行多次扫描。对表的每次扫描都是一个扫描会话。

并行执行的查询使用多个工作进程扫描表。每个工作进程有一个扫 描会话。

扫描会话可以从多个分区中扫描数据。锁升级的基础是从在扫描中访问 的所有分区获得的页锁或行锁数。

当最终需要整个表时,表锁比多个页锁或行锁更有效。首先,任务获取 页锁或行锁,然后当扫描会话获取的页锁或行锁多于锁升级阈值设置的 值时,尝试升级到表锁。

由于每次扫描会话都会进行锁升级,所以在单个扫描会话获取的锁的数 目没有超过锁升级阈值的锁数时,单个事务的总的页锁或行锁数可能超 过锁升级阈值。由于锁可能在整个事务期间存在,因此包含多个扫描会 话的事务会累积大量的锁。

如果另一个任务持有与所需表锁类型冲突的锁,则不会进行锁升级。例 如,如果任务持有任何排它页锁,则在释放排它页锁前,任何其它进程 都不能升级到表锁。

由于锁冲突而拒绝锁升级时,则进程累积的页锁或行锁可能会超过锁升 级阈值,并可能用尽 Adaptive Server 中所有可用的锁。

锁升级参数是:

对于所有页锁定表和数据页锁定表:page lock promotion HWMpage lock promotion LWM page lock promotion PCT

对数据行锁定表:row lock promotion HWMrow lock promotion LWM

row lock promotion PCT

这些参数的缩写为:

• HWM — 高位值

• LWM — 低位值

• PCT — 百分比


锁升级高位值


page lock promotion HWM row lock promotion HWM 设置在 Adaptive Server

尝试升级到表锁之前表中所允许的最大页锁数或行锁数。缺省值为 200

当扫描会话期间获取的锁的数目超过了这个值时, Adaptive Server 就会 尝试获取表锁。

将高位值设置为大于 200 的值将降低任何任务或工作进程获取特定表上 的表锁的机会。例如,如果一个进程在一次事务期间将一个非常大的表 更新了 200 多行,则增加锁升级高位值参数的值将会禁止该进程尝试获 取表锁。

将高位值设置为小于 200 将增加特定任务或工作进程获取表锁的机会。


锁升级低位值


page lock promotion LWM row lock promotion LWM 设置在 Adaptive Server 可以获取表锁之前表中所允许的最小锁数。缺省值为 200。表的锁数等 于低位值之后, Adaptive Server 才会获取表锁。

低位值必须小于或等于对应的高位值。

将低位值设置为很高的值将降低特定任务或工作进程获取表锁的机会, 这会在事务期间使用更多的锁,并有可能用尽 Adaptive Server 中所有可 用的锁。对在数据行锁定表中更新大量行的查询,或以隔离级别 2 3 从数据行锁定表中选择大量行的查询,尤其可能发生所有锁都被耗用的 情况。

如果锁冲突阻止锁升级,则需要增加 number of locks 配置参数的值。


锁升级百分比


page lock promotion PCT row lock promotion PCT 设置锁定页或行的百分 比 (根据表大小)。当锁数超出该值并且在 lock promotion HWM lock promotion LWM 之间时, Adaptive Server 会尝试获取表锁。

缺省值为 100

当表上的锁数超过下面的值时, Adaptive Server 尝试将页锁升级到表锁 或将行锁升级到表锁。

(PCT * number of pages or rows in the table) / 100

lock promotion PCT 设置为很小的值将增加特定用户事务获取表锁的机 会。 2- 1 说明 Adaptive Server 如何确定是否将表上的页锁升级到表锁。


2-1:锁升级逻辑


image

此扫描会话是否持有页锁或 行锁的锁升级 LWM ?

此扫描会话是否持有页锁或 行锁的锁升级 LWM ?

不升级到表锁。


image


image


此扫描会话是否 锁升级 HWM ?


此扫描会话是否 锁升级 HWM ?

此扫描会话是否持有页锁或 行锁的锁升级 PCT 页锁或行锁 ?

此扫描会话是否持有页锁或 行锁的锁升级 PCT 页锁或行锁 ?

image 不升级到 表锁。


image


image

image

其它进程是否持有 对象上的排它锁 ?

其它进程是否持有 对象上的排它锁 ?

升级到表锁。


image

不升级到表锁。


设置全服务器范围内的锁升级阈值

下面的命令将所有数据页锁定表和所有页锁定表的全服务器范围的 page lock promotion LWM 设置为 100,将 page lock promotion HWM 设置为 2000, 并将 page lock promotion PCT 设置为 50

sp_setpglockpromote "server", null, 100, 2000, 50

本例中,当表上的锁数在 100 2000 之间时,任务才尝试升级到表锁。

如果命令需要的锁多于 100 个但少于 2000 个,则 Adaptive Server 会将表 上的锁数与锁百分比进行比较。

如果锁数大于按百分比计算得到的页数,则 Adaptive Server 尝试发布一 个表锁。

sp_setrowlockpromote 为所有数据行锁定表设置配置参数:

sp_setrowlockpromote "server", null, 300, 500, 50

锁升级配置参数的缺省值可能对大多数应用程序都合适。


设置表或数据库的锁升级阈值

若要为单个表或数据库配置锁升级值,请初始化这三个锁升级阈值。 例如:

sp_setpglockpromote "table", titles, 100, 2000, 50

sp_setrowlockpromote "table", authors, 300, 500, 50

初始化这些值之后,可以更改单个值。例如,若要只更改 lock promotion PCT

sp_setpglockpromote "table", titles, null, null, 70 sp_setrowlockpromote "table", authors, null, null, 50

若要为数据库配置这些值,请使用:

sp_setpglockpromote "database", pubs3, 1000, 1100, 45

sp_setrowlockpromote "database", pubs3, 1000, 1100, 45


设置的优先级


可以更改任何用户数据库或单个表的锁升级阈值。单个表的设置替换数 据库设置或全服务器范围的设置;数据库的设置替换全服务器范围的值。

锁升级全服务器范围的值适用于服务器上的所有用户表,除非在数据库 或表中配置了锁升级值。


删除数据库和表设置


若要删除表或数据库的锁升级阈值,请使用 sp_dropglockpromote sp_droprowlockpromote。删除数据库的锁升级阈值时,未配置锁升级阈 值的表使用全服务器范围的值。

删除表的锁升级阈值时,如果配置了数据库的锁升级阈值,则 Adaptive Server 使用该值,如果没有配置该值,则使用全服务器范围的值。不可 删除全服务器范围的锁升级阈值。


调优锁升级阈值时,请使用 sp_sysmon

若要查看发生了多少次锁升级以及这些升级的类型,请使用 sp_sysmon

如有问题,请在 sp_sysmon 输出的 “锁详细信息”部分的 “Granted” 和 “Waited”数据中查找锁争用迹象。


有关详细信息,请参见 Performance and Tuning Series: Monitoring Adaptive Server with sp_sysmon(《性能和调优系列:使用 sp_sysmon 监控 Adaptive Server》)中的 “Lock promotions”(锁升级)和 “Lock detail”(锁详 细信息)。

如果锁争用多且锁升级发生频繁,可考虑更改所涉及表的锁升级阈值。




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