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

 


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

调优系统临时数据库以获得最佳性能

本节讨论与临时数据库相关的配置问题。


放置系统 tempdb


在确定 tempdb 的放置位置时:

应将 tempdb 和重要的应用程序数据库分开放在不同的物理磁盘上。

使用可用的最快磁盘。如果您的平台支持固态设备,并且您的应用 程序不适合使用 tempdb,则可以使用这些设备。

tempdb 扩展到其它设备后,从 systemdefault logsegment 段中 删除主设备。


尽管可以将 tempdb 扩展到 master 数据库所在的设备, Sybase 仍建议您 使用单独的设备。而且要记住,使用 Adaptive Server 镜像功能镜像的是 逻辑设备而不是数据库。如果镜像主设备,将创建驻留在主设备上的数 据库的所有部分的一个镜像。如果镜像使用 serial 进行写入,则频繁使 用 tempdb 数据库会对性能产生严重影响。


系统 tempdb 的初始分配

安装 Adaptive Server 时,tempdb 的大小为 4MB ,且全部位于主设备上, 如 6-1 所示。 tempdb 通常是系统管理需要增大的第一个数据库。服务 器上的用户越多,它就需要越大。根据需要,可能希望将 tempdb 分条, 使其位于多个设备上。

6-1tempdb 缺省分配


image

tempdb

数据和日志 (4mb)


d_master


使用 sp_helpdb 来查看 tempdb 的大小和状态。以下示例显示了 tempdb 在 安装时的缺省值:

sp_helpdb tempdb

name db_size owner dbid created status

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

tempdb 2.0 MB sa 2 May 22, 1999 select into/bulkcopy


device_frag size usage free kbytes

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

master 2.0 MB data and log 1248

tempdb 段中删除主设备

缺省情况下,tempdb systemdefault logsegment 段在主设备上的分 配大小为 4MB。在将新设备分配给 tempdb 时,除非将这些设备添加为 专用数据或日志,否则它们会自动划分到这三个段中。为 tempdb 分配第 二台设备后,可以将主设备从 defaultsystem logsegment 段中删除。 这样可以确保 tempdb 中的工作表和其它临时表不与其它操作争用主设 备资源。


use tempdb


从各段中删除主设备:

1 如果尚未进行此类操作,则将 tempdb 变更到其它设备上。例如:

alter database tempdb on tune3 = 20

2 发出 use tempdb 命令,然后从各段中删除主设备:

sp_dropsegment "default", tempdb, master sp_dropsegment "system", tempdb, master sp_dropsegment "logsegment", tempdb, master

3 要检验这些段是否已不再包括主设备,可对 master 数据库发出以下 命令:

select dbid, name, segmap from sysusages, sysdevices

where sysdevices.vdevno= sysusages.vdevno and dbid = 2

and (status&2=2 or status&3=3))

segmap 列对主设备上的任何分配都应报告 “0”,以表明不存在段 分配:

dbid name segmap

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

2 master 0

2 tune3 7

或者发出以下命令:

sp_helpdb 'tempdb'

device_fragments size usage created free kbytes

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

master 4.0 MB data only Feb 7 2008 2:18AM 2376

tune3 20.0 MB data and log May 16 2008 1:55PM 16212


device segment

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

master -- unused by any segments -- tune3 default

tune3 logsegment

tune3 system


配置用户创建的临时数据库

应用程序对临时数据库具有各自的资源和空间要求。除非您了解应用程 序要求,并维护符合这些数据库要求的应用程序与数据库或组的绑定, 否则请将所有临时数据库设为同样大小。如果所有临时数据库具有相同 大小,则无论为应用程序或会话分配了哪个数据库,应用程序都不会耗 尽资源或空间。


高速缓存用户临时数据库

通常,可采用相同的方式在组内的临时数据库中配置高速缓存。查询处 理器可以根据这些缓存特性选择查询计划,而且,如果使用具有其它配 置的高速缓存执行该计划,则会降低性能。


一般准则


本节介绍配置临时数据库的一般准则,该准则适用于系统和用户临时数 据库。


使用多个磁盘以提高并行查询性能

如果临时数据库跨多台设备 (如 6-2 所示),则可利用某些临时表或 工作表的并行查询性能。

6-2tempdb 跨越磁盘


image

磁盘 1

image

image

磁盘 2 磁盘 3


d_master


tempdb

tempdb


tempdb 绑定到其自己的高速缓存

在正常使用 Adaptive Server 的情况下,在创建、填充和删除临时表时, 临时数据库将大量使用数据高速缓存。

将临时数据库分配给其自己的数据高速缓存:

防止临时对象上的活动将其它对象刷新出缺省数据高速缓存

帮助在多个高速缓存间分布 I/O


用于高速缓存绑定的命令


使用 sp_cacheconfig sp_poolconfig 可创建指定数据高速缓存,并为大

I/O 配置规定大小的池。仅系统管理员可以配置高速缓存和池。


image

注释 对大 I/O 的引用位于一台逻辑页大小为 2K 的服务器上。如果服 务器的逻辑页大小为 8K,则用于 I/O 的基本单位为 8K。如果服务器的 逻辑页大小为 16K,则用于 I/O 的基本单位为 16K

image


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

配置了高速缓存且服务器已重新启动后,即可将 tempdb 绑定到新的高 速缓存:

sp_bindcache "tempdb_cache", tempdb


确定临时数据库的大小

为临时数据库分配足够空间可为各个并发 Adaptive Server 用户处理以下 进程:

用于合并连接的工作表

distinctgroup by order byreformattingor 策略以及实现某些 视图和子查询而创建的工作表

散列临时表 (创建这些表时使用 “#”作为表名的第一个字符)

临时表的索引

临时数据库中的常规用户表

由动态 SQL 创建的过程


如果使用临时表来拆分复合连接,某些应用程序可能会更好地执行。此 策略常用于:

优化程序不能为连接多于四个表的查询选择良好查询计划的情况

连接大量表的查询

非常复杂的查询

需要将过滤数据作为中间步骤的应用程序 您还可以使用临时数据库执行以下操作:

非规范化一些表并放入几个临时表中

规范化一个非规范划化的表进行集合处理

根据使用情况确定临时数据库的大小。对于大多数应用程序,应将临时 数据库的大小设置为用户数据库大小的 20-25%,以便提供足够空间供 其使用。


尽量减少临时数据库中的日志记录

即使在临时数据库中启用 trunc log on checkpoint 数据库选项, Adaptive Server 仍会将对临时数据库的更改写入事务日志。可通过以下方法减少 临时数据库中的日志活动:

使用 select into,而不使用 create table insert

仅将所需的列选择到临时表


使用 select into


在创建和填充临时数据库中的临时表时,应尽可能使用 select into 命令, 而不使用 create table insert...selectselect into/bulkcopy 数据库选项在临 时数据库中缺省为启用状态,以便执行上述操作。

select into 操作只记录最小量的日志,因此运行速度更快。跟踪的只是数据 页的分配,而不是每个数据行的实际更改。系统会完整记录 insert...select 查询中的每个数据插入操作,从而导致开销增加。


使用较短的行


如果在临时数据库中创建表的应用程序只使用少量表列,则可以通过以 下方法最大程度地减少日志记录的数量和大小:

只选择应用程序所需的列,而不在将数据插入表的查询中使用 select *

限制所选的行恰好满足应用程序要求


上述建议还可减小表本身的大小。


优化临时表


临时表的许多用法都简单明了,几乎不需要优化。但是,如果应用程序 需要多次访问临时数据库中的表,则需要对其进行检查,以尽可能优化 策略。通常,它包括使用多个过程或批处理对访问它的表的创建和索引 进行拆分。

在使用表的存储过程或批处理中创建表时,查询优化程序无法确定表的 大小,因为在优化查询时尚未创建该表,如 6-3 所示。这适用于临时 表和常规用户表。

6-3:优化和创建临时表


image

查询


语法分析和 规范化


??


??

??


??

查询在此处优化 优化 编译


表在此处创建 执行


结果


优化程序假定任何此类表都有 10 个数据页和 100 行。如果实际上表很 大,此假定可导致优化程序选择一个次优查询计划。


这两种技术可改善临时表的优化:

创建临时表的索引

将临时表复杂的使用拆分为多个批处理或过程,以便为优化程序提 供信息


创建临时表的索引


您可定义临时表的索引。多数情况下,这些索引可提高使用临时数据库 的查询的性能。优化程序像使用普通用户表的索引一样使用这些索引。 只是要求:

创建索引时表中必须包含数据。如果创建临时表并在空表上创建索 引, Adaptive Server 不会创建列统计信息 (如直方图和密度)。如果 创建索引后插入数据行,优化程序所拥有的统计信息将是不完整的。

当查询使用索引优化时,该索引必须存在。不能创建一个索引然后 在同一个批处理或过程中的查询中使用它们。查询处理器使用在存 储过程内运行的查询中的存储过程中创建的索引。

如果自索引创建以来或自运行 update statistics 以来,已经添加或删除 了行,优化程序可能选择次优计划。

为优化程序提供一个索引可显著提高性能,特别是在创建临时表并对其 执行大量操作的复杂过程中。


使用临时表创建嵌套过程


您需要采取额外步骤来创建上述过程。如果 select_proc 不存在,则无法 创建 base_proc;而没有临时表,也无法创建 select_proc

1 在过程外创建临时表。此表可以是空的;但它必须存在,且包含与

select_proc 兼容的列:

select * into #huge_result from ... where 1 = 2

2 按以上所示创建过程 select_proc

3 删除 #huge_result

4 创建过程 base_proc


tempdb 的使用拆分为多个过程

例如,此查询在使用 #huge_result 时会导致优化问题:

create proc base_proc as

select *

into #huge_result from ...

select *

from tab,

#huge_result where ...

通过使用两个过程可以获得更好的性能。当 base_proc 过程调用

select_proc 过程时,优化程序可确定表的大小:

create proc select_proc as

select *

from tab, #huge_result where ... create proc base_proc

as

select *

into #huge_result from ...

exec select_proc

如果处理 #huge_result 时需进行多次访问、连接或需要其它进程(如使用 while 循环),则对 #huge_result 创建索引可以提高性能。可在 base_proc 中 创建该索引,以便在优化 select_proc 时使用它。




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