远程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 使用 syspartitions 通过聚簇索引来查找根页以选择特定列

(例如,姓氏)(在低于 15.0 的版本中,Adaptive Server 使用 sysindexes)。 遍历索引时, Adaptive Server 在访问的每一页上执行二进制搜索,它首 先检查根页上的值,然后按照页指针继续检查。

5-1:使用聚簇索引在所有页锁定表中选择一行

select *

image

image

1132

Bennet Chan Dull Edwards

1132

Bennet Chan Dull Edwards

1007

Bennet

1132

Greane

1133

Hunter

1127

1007

Bennet

1132

Greane

1133

Hunter

1127

1133

Greane

Green

Greene

1133

Greane

Green

Greene

指针

指针

指针

指针

from employees where lname = "Green"


1001

Bennet 1007

Karsen

1009

Smith

1062


1009

Karsen

1315

1009

Karsen

1315

1127

Hunter Jenkins

1127

Hunter Jenkins

根页 中间

数据页


5- 1 的根级页中,“Green”大于 “Bennet”但小于 “Karsen”,因 此 “Bennet”的指针指向页 1007。在页 1007 上,“Green”大于 “Greane” 但小于 “Hunter”,因此指向页 1133 的指针连接到了数据页,此处即为 需选择的行所在的位置并从这里将数据返回给用户。

这个使用聚簇索引的检索需要对以下各项都进行一次读取:

索引的根级

中间级

数据页

这些读取可能来自高速缓存或来自磁盘。对频繁使用的表,在高速缓存 中经常可以找到索引的较高级别,而较低级别和数据页则由磁盘中读取。


物理和逻辑读取之间的关系

如果 Adaptive Server 从磁盘读取页,则会将其计数为物理读取和逻辑读 取。逻辑 I/O 的成本始终大于或等于物理 I/O

逻辑 I/O 始终报告 2K 的数据页。将以缓冲区大小为单位报告物理读取 和写入。在一个 I/O 操作中读取的多页将作为一个单元进行处理:它们 作为一个缓冲区进行读取、写入和移入高速缓存。


聚簇索引和插入操作

当将某行插入带聚簇索引的所有页锁定表时,数据行必须根据表上的键 值以物理顺序放置。

数据页上的其它行根据需要在页中向下移动,为新值让出空间。只要该 页有新行的空间,插入就不会影响数据库中的任何其它页。

聚簇索引用于查找新行的位置。

5-2 显示现有数据页上有新行空间的一种简单情况。在这种情况下, 索引中的键值不必更改。


5-2:向带有聚簇索引的所有页锁定表中插入一行


image

image

image

1132

Bennet Chan Dull Edwards

1132

Bennet Chan Dull Edwards

1007

Bennet

1132

Greane

1133

Hunter

1127

1007

Bennet

1132

Greane

1133

Hunter

1127

1133

Greane

Greco

Green

Greene

1133

Greane

Greco

Green

Greene

指针

指针

指针

指针

insert employees (lname) values ("Greco")


1001

Bennet

1007

Karsen

Smith

1009

1062


image

image

1009

Karsen

1315

1009

Karsen

1315

1127

Hunter Jenkins

1127

Hunter Jenkins

根页 中间

数据页


对完整数据页的页面拆分

如果数据页上没有可用于新行的足够空间,必须执行页面拆分。

新的数据页被分配到一个已为表所使用的扩充上。如果无可用空间, 则分配一个新扩充。

相邻页上的下一页或前一页指针被更改,以在页链中并入新页。这 需要将这些页读取到内存并将其锁定。

大约有半数的行被移到新页,其中新行按顺序被插入。

聚簇索引的高一级别被更改为指向新页。

如果表还具有非聚簇索引,则所有指向受影响数据行的指针都必须 更改为指向新页和行位置。

在某些情况下,页面拆分的处理方法有所不同。请参见 87 页的 “页 面拆分的例外情况

5-3 中,页面拆分需要向现有索引页 (页 1007)添加新行。


5-3:在带聚簇索引的所有页锁定表中进行页面拆分


1133

Greane Greco Green Greene

1133

Greane Greco Green Greene

之前

1132

Bennet Chan Dull Edwards

1133

Greane

Greaves

Greco

1133

Greane

Greaves

Greco

指针

指针

insert employees (lname)

image

image

image

1007

Bennet

1132

Greane

1133

Green

Hunter

1144

1127

1007

Bennet

1132

Greane

1133

Green

Hunter

1144

1127

1144

Green Greene

1144

Green Greene

指针

指针

values ("Greaves")


1001

Bennet

1007

Karsen

Smith

1009

1062


1127

Hunter Jenkins

1009

Karsen

1315

1009

Karsen

1315

根页 中间

数据页


页面拆分的例外情况


50-50 页面拆分的例外情况:

如果要插入的行很大,需要拆分页面的前页或后页都无法容纳,则 将分配两个新页,一页用于该行,另一页用于它后面的各行。

如果可能,当 Adaptive Server 拆分页面时,将同时保留重复值。

如果 Adaptive Server 检测到所有插入均发生在页末尾 (由于键值递 增的原因),则即使插入的新行与页底部不相符合,也不会拆分该 页。而是分配一个新页并将该行放置到新页上。

如果 Adaptive Server 检测到插入按顺序发生在页的其它位置,则该 页将在插入点处被拆分。


索引页的页面拆分


如果需要将新行添加到完整索引页,该索引页的页面拆分过程与数据页 面拆分类似。

将分配一个新页,半数索引行被转移到新页上。 新行被插入到索引的下一最高级别处,以指向新的索引页。


页面拆分对性能的影响

页面拆分的开销非常大。除转移行、分配页和记录操作等实际工作外, 额外开销还包括更新:

聚簇索引本身

相邻页上的页指针 (以维持页链接)

所有指向受拆分影响的行的非聚簇索引条目

当为随时间推移而不断变大的表创建聚簇索引时,可使用 fillfactor 在数 据页和索引页上留出空间。这将暂时减少页面拆分的数量。

请参见 123 页的 “选择索引的空间管理属性


溢出页


当新插入行与完整数据页的最后一行有相同键时,将在所有页锁定表上 为非唯一性聚簇索引创建专门的溢出页。将为其分配一个新数据页并链 接到页链,新插入行被放置到新页上。


5-4:将溢出页添加到所有页锁定表的聚簇索引


insert employees (lname) values("Greene")



插入前

插入后


image

1133

Greane Greco Green Greene

1133

Greane Greco Green Greene

1133

Greane Greco Green Greene

1133

Greane Greco Green Greene

1156

Greene

1156

Greene

溢出数据页


1134

Gresham Gridley


1134

Gresham Gridley

1134

Gresham Gridley

数据页


只有被放置在溢出页上的行是具有相同键值的附加行。在带有许多重复 键值的非唯一性聚簇索引中,同一值可以有大量溢出页。

聚簇索引不包含直接指向溢出页的指针。而是由下一页指针来跟随溢出 页链,直至找到一个与搜索值不匹配的值为止。


聚簇索引和删除操作

当从具有聚簇索引的所有页锁定表中删除行时,页上其它行将上移填充 清空的空间以保持页上数据的连续性。

5-5 所显示的页在 delete 操作 (删除该页上的第二行)之前有四行。 删除行之后的两行向上移动。


5-5:从带有聚簇索引的表中删除一行


删除前


image

1133

Greane Green Greco Greene

1133

Greane Green Greco Greene

要删除的 数据


image

delete

from employees

where lname = "Green"


Bennet

1132

Greane

1133

Hunter

1127

Bennet

1132

Greane

1133

Hunter

1127

指针

指针

1007


1132

Bennet Chan Dull Edwards


1001

Bennet 1007

Karsen 1009

Smith 1062

1009

Karsen 1315

指针

指针

1133

Greane Greco Greene

Green

Green

1127

Hunter Jenkins

根页 中间

数据页

删除页上最后一行


如果删除数据页上的最后一行,该页将被重新分配并且相邻页上的下一 页和上一页指针也将被更改。

在索引的叶级和中间级中指向该页的行被删除。

如果重新分配的数据页与属于该表的其它页位于同一扩充上,则当该表 需要附加页时,它可被再次使用。

如果重新分配的数据页是属于该表的扩充上的最后一页,该扩充也将被 重新分配并可用于数据库中其它对象的扩展。


5-6 显示了删除操作后的表,其中指向删除页的指针已从索引页 1007

中删除,页上其后的索引行被上移以保持使用空间的连续性。

5-6:删除页上最后一行 (删除之后)


delete

image

from employees where lname = "Gridley"


指针

指针

R1007


1133

指针

指针

Greane Green Greane


1134


Bennet

1132

Greane

1133

Hunter

1127

可用于重新分

配的空白页

Bennet

1132

Greane

1133

Hunter

1127

可用于重新分

配的空白页

1001


Bennet

1007

Karsen

1009

Smith

1062

Bennet

1007

Karsen

1009

Smith

1062

1009

Karsen 1315

1127

y

y

Gridle

Gridle

Gridley

Gridley

Hunter Jenkins

根页 中间

数据页


索引页合并


如果从索引页删除一个指针,只在该页上保留一行,该行将被移动到一 个相邻页上,同时重新分配该空白页。父页上的指针将被更新以反映这 些更改。




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