远程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 的性能。同时用户数 量的增加会加剧锁争用,从而造成性能降低。在以下情况下,锁可 以影响性能:

多个进程等待锁释放。在一个进程等待另一个进程完成其事务 并释放锁期间,总响应时间和吞吐量会受到影响。

事务导致频繁的死锁。死锁将导致事务中止,且必须由应用程 序重新启动事务。如果经常发生死锁,应用程序的吞吐量会深 受影响。

若要有助于降低死锁频率,请更锁定方案更改为数据页或数据 行锁定,或者重新设计事务访问数据的方式。

创建索引会锁定表。创建聚簇索引会将所有用户锁在表外,直 到索引创建完成;创建非聚簇索引会将所有更新锁在表外,直 到索引创建完成。

无论使用哪种方式,都应在服务器上几乎没有活动的时候进行。

关闭延迟死锁检测会导致螺旋锁争用。

deadlock checking period 设置为 0 会导致更频繁的死锁检查。 死锁检测进程在查找死锁时,将持有内存中锁结构上的螺旋锁。

在事务繁多的生产环境中,不要使用 deadlock checking period

参数。


使用 sp_sysmon sp_object_stats

在以下的许多章节中都会建议更改配置参数,以减少锁争用。

使用 sp_object_stats sp_sysmon 可确定锁争用是否是个问题。其次, 使用这些存储过程可确定减少锁争用的调优如何影响系统。

有关使用 sp_object_stats 的信息,请参见 63 页的 “标识存在并发问题 的表

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

如果存在锁争用问题,可以使用 Adaptive Server Monitor 或监控表通过 检查每个对象的锁来发现锁定问题。


减少锁争用


锁争用会影响 Adaptive Server 的吞吐量和响应时间。在数据库设计期间 考虑使用锁定 (例如,避免在查询期间连接大量表),在应用程序设计 期间监控锁定。

通过更改争用程度高的表的锁定方案,或者重新设计应用程序或锁争用 程度最高的表,来解决地址争用。例如:

添加索引以减少争用 (尤其是减少删除和更新引起的争用)。

保持事务简短以减少持有锁的时间。

检查 “热点”,尤其要注意在所有页锁定堆表上的插入 (堆表是没 有聚簇索引的表)。


添加索引以减少争用


对于仅数据锁定表,搜索参数上没有有用索引的 update delete 语句将 导致表扫描,从而在整个扫描期间持有排它表锁。如果数据修改任务还 更新其它表:

该任务可能被 select 查询或其它更新阻塞。

该任务可能被阻塞,并且在持有大量锁时必须等待。

该任务可能阻塞其它任务或与其它任务发生死锁。

为查询创建有用的索引可使数据修改语句使用页锁或行锁,从而改善对 表的并发访问。如果不能为长时间的 update delete 事务创建索引,则可 在游标中执行该操作,并频繁使用 commit transaction 语句减少页锁数目。


保持事务简短


任何获取锁的事务都尽量保持简短。特别是,应避免事务在持有锁时等 待用户交互。

image

2-1:示例


image

begin tran

image

使用页级锁定 使用行级锁定

select balance

image

from account holdlock where acct_number = 25


image

update account

image

set balance = balance + 50 where acct_number = 25


image

commit tran

共享意图表锁 共享页锁

如果用户现在去吃午饭了, 那么没有人可以更新持有该 行的页上的行。

排它意图表锁 数据页上的更新页锁后紧跟 数据页上的排它页锁

没有人可以读取持有该行的 页上的行。

共享意图表锁 共享行锁

如果用户现在去吃午饭了, 那么没有人可以更新该行。


排它意图表锁 更新行锁及随后的 排它行锁

没有人可以读取该行。

image


在事务中应尽可能避免网络通信,因为网络传输速度比 Adaptive Server

image

慢。下面的示例显示了一个从 isql 执行的事务,分为两个包发送。


begin tran update account

set balance = balance + 50 where acct_number = 25

image

go

update account

set balance = balance - 50 where acct_number = 45 commit tran

go

isql 批处理发送至 Adaptive Server

持有锁等待提交


isql 批处理发送至 Adaptive Server

释放锁

image


对影响所有页锁定表上的非聚簇索引键的数据修改而言,保持事务简短 特别重要。

非聚簇索引为密集索引:数据级的上一级别为表中的每一行包含一行。 对表的所有 insert delete,以及对键值的任何更新,都至少影响一个 非聚簇索引页 (如果发生页面拆分或页面收缩,还会影响页链中的相 邻页)。

锁定数据页可能降低访问少量行的速度,但是常用索引页上的锁可能会 阻塞对大量行的访问。


避免产生 “热点”


当所有更新都发生在某个页上时就会出现热点,例如所有页锁定堆表中 就会出现热点 (在所有页锁定堆表上,所有插入都发生在页链的最后一 页上)。

例如,每个人都可以更新的无索引历史表经常会在最后一页上出现锁争 用。 sp_sysmon 的输出样本表明,堆表上 11.9% 的插入需要等待锁:

Last Page

Locks

on

Heaps

Granted

3.0

0.4

185

88.1 %

Waited

0.4

0.0

25

11.9 %

若要避免这种情况:

更改数据页锁定或数据行锁定的锁定方案。

这些锁定方案没有链式数据页,所以它们可以在发生阻塞时为插入 分配额外的页。

使用循环策略对表进行分区。将堆表分区可以在表中创建多个页链, 这样就可以为插入操作提供多个最后页。

由于有多个最后页可用,所以对表的并发插入很少会相互阻塞。分 区可提高堆表的并发性,而且无需为不同的用户组创建单独的表。

有关对表进行分区的详细信息,请参见 Performance and Tuning Series: Physical Database Tuning (《性能和调优系列:物理数据库调优》) 中的 “用分区提高插入性能”。

创建聚簇索引以在表中的数据页之间分配更新。

与分区类似,这种解决方法可以为表创建多个插入点。不过,这种 方法也会因需要维护表中的行的物理顺序而产生开销。


其它锁定原则


以下锁定原则有助于减少锁争用并提高性能:

使用每个应用程序所需要的最低级别锁定。只在必要时使用隔离级 别 2 3

其它事务的更新可能会延迟,直到使用隔离级别 3 的事务在事务结 束时释放所有共享锁。

只在非重复读取或幻像可能影响结果时使用隔离级别 3


如果只有几个查询要求隔离级别 3,请在这些查询中使用 holdlock 关 键字或 at isolation serializing 子句,而不要对整个事务使用 set transaction isolation level 3

如果事务中的大部分查询都要求隔离级别 3,请使用 set transaction isolation level 3,但对其它可以以隔离级别 1 执行的查询使用 noholdlock at isolation read committed

若要在活动表上执行大量插入、更新或删除,可以通过在使用游标 并频繁提交的存储过程内执行操作来减少阻塞。

如果应用程序必须返回一行,等待用户交互,然后更新该行,请考 虑使用时间戳和 tsequal 函数,而不要使用 holdlock

如果使用第三方软件,请仔细检查应用程序中的锁定模式,看是否 存在并发问题。

其它调优方法也有助于减少锁争用。例如,如果一个进程持有某个页上 的锁,而且必须执行物理 I/O 才能读取另一页,与要读取的页已在高速 缓存中的情况相比,该进程持有锁的时间要长得多。在这种情况下,更 好地利用高速缓存或使用大 I/O 均可以减少锁争用。还可以通过改进索 引和跨磁盘均匀分配物理 I/O 来减少锁争用。




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