远程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 时,它有一个缺省数据高速缓存,其中包含一个

2K 内存池,一个高速缓存分区以及一个螺旋锁。

为提高性能,可添加数据高速缓存,并将数据库或数据库对象绑定到 它们:

1 为减少对缺省数据高速缓存螺旋锁的争用,可将高速缓存分成 n 个, 其中 n 12481632 64。如果只有 1 个高速缓存分区时 发生对螺旋锁的争用 (此处使用 “x”指定),那么可期望螺旋锁争 用减少 x/ n,其中 n 为分区数。

2 当特定高速缓存分区螺旋锁表为热表 (用户应用程序对其需求较大 的表)时,应考虑将缺省高速缓存分割成命名高速缓存。

3 如果仍有争用,则考虑将指定高速缓存分割成指定高速缓存分区。

可根据用户定义的数据高速缓存和缺省数据高速缓存中的逻辑页大小, 配置 4K8K 16K 缓冲池,使 Adaptive Server 能执行大 I/O。另外, 大小可完全容纳表或索引的高速缓存可使用宽松的 LRU 高速缓存策略 来降低开销。

也可将缺省数据高速缓存或指定高速缓存分割成分区以减少螺旋锁争用。 请尝试通过下列方式配置数据高速缓存以改进性能:

配置足够大的命名数据高速缓存以容纳关键表和索引。这样可防止 其它服务器活动争用高速缓存空间,并加速使用这些表的查询,因 为所需页始终可在高速缓存中找到。

可配置这些高速缓存以使用能减少高速缓存开销的宽松 LRU 替换 策略。

为提高并发性,可将热表绑定到一个高速缓存上,而将表上的索引 绑定到其它高速缓存。

创建足够大的命名数据高速缓存,使其容纳表的热页,而其中大部 分查询只引用该表的一部分。

例如,如果某表包含了一年的数据,但 75% 的查询都引用最近月份 的数据 (大约该表的 8%),则配置一个大小为该表 10% 的高速缓 存,以将最常用的页保存在该高速缓存中,并为较不常用页留出一 些空间。


将决策支持系统 (DSS) 使用的表或数据库分配到已配置了大 I/O 的 特定高速缓存中。

这样可防止 DSS 应用程序与 OLTP 应用程序争用高速缓存空间。 DSS 应用程序通常访问大量连续页,而 OLTP 应用程序通常访问相 对较少的随机页。

tempdb 绑定到其自己的高速缓存上,防止它与其它用户进程发生 争用。

适当确定 tempdb 高速缓存的大小可为许多应用程序将大部分 tempdb 活动保留在内存中。如果此高速缓存足够大,则 tempdb 活动可避免 执行 I/O

将文本页绑定到命名高速缓存,以提高文本访问的性能。

将数据库日志绑定到高速缓存,再次减少对高速缓存空间和高速缓 存访问的争用。

当用户进程对高速缓存进行更改后,螺旋锁会拒绝所有其它进程对 此高速缓存的访问。

虽然螺旋锁的持有时间极短,也会减慢具有高事务处理速率的多处 理器系统的性能。配置多个高速缓存时,每个高速缓存都由单个螺 旋锁控制,提高具有多个 CPU 的系统的并发性。

在单个高速缓存中,添加高速缓存分区可创建多个螺旋锁,进一步 减少争用。单引擎服务器不存在螺旋锁争用问题。

指定数据高速缓存的这些可能用途中的大部分,对具有高事务处理速率 或频繁 DSS 查询和多用户的多处理器系统的影响最大。其中一些可提 高单 CPU 系统的性能,在它们能提高内存使用率并减少 I/O 时。


配置指定数据高速缓存的命令

用于配置高速缓存和缓冲池的命令如所示 5-1

5-1:用于配置高速缓存的命令

image

命令 快捷键

image

sp_cacheconfig 创建或删除指定高速缓存,并设置大小、高速缓存类型、高速缓

存策略或本地高速缓存分区数量。报告高速缓存和缓冲池大小。

image

sp_poolconfig 创建和删除 I/O 缓冲池,并更改它们的大小、清洗大小和异步预取

限制。

image

sp_bindcache 将数据库或数据库对象绑定到高速缓存上。

image

sp_unbindcache 解除指定数据库或数据库对象与高速缓存的绑定。


image

命令 快捷键

image

sp_unbindcache_all 解除绑定到指定高速缓存的所有数据库和对象。

image

sp_helpcache 报告数据高速缓存的摘要信息并列出绑定到高速缓存的数据库和

数据库对象。还报告高速缓存所需的开销数量。

image

sp_sysmon 报告用于调优高速缓存配置的统计信息,包括高速缓存螺旋锁争 用、高速缓存利用率和磁盘 I/O 模式。

image


有关配置命名高速缓存以及将对象绑定到高速缓存的完整说明,请参见

《系统管理指南,卷 2》中的第 4 章 “配置数据高速缓存”。只有系统 管理员才能配置命名高速缓存,并将数据库对象绑定到它们。


调优指定高速缓存


创建命名数据高速缓存和内存池,以及将数据库和数据库对象绑定到这 些高速缓存能显著降低或提高 Adaptive Server 性能。例如:

高速缓存使用不当会损害性能。

如果为服务器上只处理很小比例查询活动的数据库分配 25% 的数据 高速缓存,那么其它高速缓存上的 I/O 会增加。

未使用的池会降低性能。

如果添加 16K 缓冲池,但没有任何查询使用它,那么就已经占用了

2K 缓冲池的空间。 2K 缓冲池的高速缓存命中率降低, I/O 增加。

过度使用的池会降低性能。

如果配置一个 16K 的池,而实际上所有查询都使用该缓冲池,则 I/O 率会增加。页在 16K 缓冲池中快速循环,而 2K 高速缓存的利用 率却不足。 16K 缓冲池中的高速缓存命中率将非常低。

在平衡高速缓存中缓冲池的利用率后,性能可极大提高。

16K 2K 查询的高速缓存命中率都得到提高。执行 16K I/O 的查询 经常使用的大量页不会刷新磁盘中的 2K 页。使用 16K 的查询执行 的 I/O 数量大约相当于 2K I/O 所需 I/O 的八分之一。

调优指定高速缓存时,应始终测量当前性能,进行配置更改,并在相同 工作量下测量这些更改的效果。


高速缓存配置目标


配置高速缓存的目标包括:

在多引擎服务器上,减少对螺旋锁的争用。

提高高速缓存命中率和降低磁盘 I/O。作为回报,提高查询的高速 缓存命中率可减少锁争用,因为不需要执行物理 I/O 的查询通常只 能在较短时间内持有锁。

由于高效利用大 I/O,物理读取次数减少。

减少物理写入次数,因为其它进程不会从高速缓存中清除最近修改 的页。

适当使用宽松 LRU 策略时,高速缓存开销减少且 SMP 系统上的

CPU 总线延迟时间缩短。

使用高速缓存分区时, SMP 系统上对高速缓存螺旋锁的争用减少。

除了以每查询为基础帮助调优的命令 (如 showplan statistics io )外, 还需要使用性能监控工具 (如 sp_sysmon)来了解多个查询和多个应用 程序是如何在同时运行时共享高速缓存空间的。


收集数据并制定计划,然后执行

制定高速缓存使用计划的第一个步骤是为数据高速缓存提供尽可能多的 内存:

确定可分配给 Adaptive Server 的最大内存量。将 max memory 设置为 该值。

设置使用 Adaptive Server 内存的所有参数后, max memory total logical memory 的运行值之间的差值即为可用于其它配置及数据和过 程高速缓存的内存量。如果已充分配置其它所有配置参数,那么可 将此附加内存分配给数据高速缓存。对数据高速缓存进行的大多数 更改是动态的并且不需要重新启动。

如果将所有附加内存都分配给数据高速缓存,那么就没有用于重新 配置其它配置参数的可用内存了。但是,如果有额外内存可用,则 可动态增加 max memory 和其它动态配置参数(例如 procedure cache sizeuser connections 等)。

使用性能监控工具确定基本性能及调优目标。

可根据前面的步骤确定可分配给数据高速缓存的内存大小。包括已配置 高速缓存的大小,如缺省数据高速缓存和所有命名高速缓存。


通过查看现有对象和应用程序可确定数据高速缓存的大小。添加新高速 缓存或增加消耗内存的配置参数不会减小缺省数据高速缓存的大小。在 确定数据高速缓存可用的内存和单个高速缓存的大小后,可添加新高速 缓存和增加或减少现有数据高速缓存的大小。

通过分析 I/O 模式估计高速缓存需求,并通过分析查询计划和 I/O

统计信息估计缓冲池需求。

首先配置能获得最佳性能的、最简单的方案:

tempdb 高速缓存选择大小。

为所有日志高速缓存选择大小,并调优日志 I/O 大小。

为要完整保留在高速缓存中的特定表或索引选择大小。

为索引或数据高速缓存添加大 I/O 缓冲池 (如果适当)。

确定这些大小后,检查其余 I/O 模式、高速缓存争用情况和查询性 能。按 I/O 使用的比例为对象和数据库配置高速缓存。

配置高速缓存时,要牢记性能目标:

如果主要目标是减少螺旋锁争用,那么增加频繁使用的高速缓存的 分区数可能是唯一的方法。

将少数几个高 I/O 对象移动到单独的高速缓存中也可以减少螺旋锁 争用并提高性能。

如果主要目标是通过提高特定查询或应用程序的高速缓存命中率来 缩短响应时间,那么在为这些查询使用的表和索引创建高速缓存之 前,应全面了解访问方法和 I/O 要求。


估计高速缓存需求


通常,可根据查询将访问高速缓存中页的次数按比例配置高速缓存,并 根据选择了某种缓冲池大小的 I/O 的查询所使用的页数按比例配置高速 缓存中的缓冲池。

如果数据库及其日志位于单独的逻辑设备上,则可使用 sp_sysmon 或操 作系统命令估计高速缓存比例,以便按设备检查物理 I/O

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


I/O 和性能


通过将高速缓存分割成缓冲池,可配置缺省高速缓存和所有为大 I/O 创建 的指定高速缓存。缺省 I/O 大小为 2K,即一个 Adaptive Server 数据页。


image

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

image


对于频繁存储和访问页的查询, Adaptive Server 在单个 I/O 中最多读取 八个数据页。由于大部分 I/O 时间都花在磁盘上的物理定位和搜寻上, 因此大 I/O 可极大地缩短磁盘访问时间。在大多数情况下,可在缺省数 据高速缓存中配置一个 16K 缓冲池。

某些类型的 Adaptive Server 查询有可能从大 I/O 中获益。识别这些类型 的查询有助于确定数据高速缓存和内存池的正确大小。

在下列示例中,要么数据库或特定的表、索引或大对象 LOB 页更改(用 于 text image Java 行外列)都必须绑定到具有大内存池的命名数据高 速缓存,要么缺省数据高速缓存必须有大 I/O 缓冲池。可从大 I/O 中获 益的查询类型包括:

扫描整个表的查询。例如:

select title_id, price from titles select count(*) from authors

where state = "CA" /* no index on state */

具有聚簇索引的表上的范围查询。例如:

where indexed_colname >= value

扫描索引的叶级的查询,包括匹配和非匹配扫描。如果在 typeprice 上有非聚簇索引,因为查询中使用的所有列都包含在该索引 中,所以此查询可使用索引叶级上的大 I/O

select type, sum(price) from titles

group by type

连接整个表或表的大部分的查询。不同的 I/O 大小可用在一个连接 的不同表中。

选择 text image Java 行外列的查询。例如:

select au_id, copy from blurbs


生成笛卡尔乘积的查询。例如:

select title, au_lname from titles, authors

此查询需要扫描一个表的全部,并为第一个表的每一行完全扫描其 它表。这些查询的高速缓存策略遵循与连接相同的原则。

select into 这样分配大量页的查询。


image

注释 Adaptive Server 版本 12.5.0.3 或更高版本在 select into 中启用 大页分配。它根据扩充而不是单个页来分配页,因此为目标表发出 更少的日志请求。

如果为 Adaptive Server 配置大缓冲池,那么它会在将目标表页写入 磁盘时使用大 I/O 缓冲池。

image

create index 命令。

堆上的批量复制操作 — 拷入和拷出。

update statisticsdbcc checktable dbcc checkdb 命令。


优化程序和高速缓存选择

如果表或索引的高速缓存有 16K 缓冲池,那么优化程序将根据需要读取 的页数和表或索引的集群比,确定用于数据和叶级索引页的 I/O 大小。

优化程序的信息仅限于它所分析的单个查询,以及关于表和高速缓存的 统计信息。它没有关于有多少其它查询正在同时使用同一数据高速缓存 的信息。也没有关于分割表存储的方式是否将使大 I/O 或异步预取效率 降低的统计信息。

在某些情况下,这种不同因素的组合会导致产生过多 I/O。例如,如果 具有大型结果集的同步查询使用很小的内存池,将出现较高的 I/O 和较 低的性能。


为高速缓存选择合适的 I/O 大小组合

在任意数据高速缓存中,可最多配置四个缓冲池,但在大多数情况下, 单个对象的高速缓存在只使用一个 2K 缓冲池和一个 16K 缓冲池时能获 得最佳性能。日志未绑定到单独高速缓存的数据库的高速缓存也应有一 个配置为与日志 I/O(为该数据库配置的)大小相匹配的缓冲池;通常, 最佳的日志 I/O 大小为 4K


减少与高速缓存分区的螺旋锁争用

随着 SMP 系统上运行的引擎和任务数量增加时,对数据高速缓存上螺 旋锁的争用也增加。任何时候,某个任务需要访问高速缓存查找其中的 页或重新链接 LRU/MRU 链上的页时,它都持有高速缓存螺旋锁,以防 止其它任务同时修改该高速缓存。

有多个引擎和用户时,任务必须等待才能访问高速缓存。添加高速缓存分 区可将高速缓存分成各个分区,每个分区都由各自的螺旋锁提供保护。当 需要将某页读入高速缓存或对其进行定位时,将对数据库 ID 和页 ID 应 用散列函数,以确定包含该页的分区。

高速缓存分区数始终为 2 的乘方。每次增加分区数时,都会将螺旋锁争 用减少约 1/2。如果螺旋锁争用大于 10% 15%,应考虑增加该高速缓 存的分区数量。本示例在缺省数据高速缓存中创建了 4 个分区:

sp_cacheconfig "default data cache", "cache_partition=4"

必须重新启动服务器才能使高速缓存分区中的更改生效。

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

有关使用 sp_sysmon 监控高速缓存螺旋锁争用的信息,请参见 《性能和 调优系列:使用 sp_sysmon 监控 Adaptive Server》。

高速缓存中的每一个缓冲池都被分区成页的单独 LRU/MRU 链,有其自 己的清洗标记。


高速缓存替换策略和政策

Adaptive Server 优化程序使用两种高速缓存替换策略在刷新不常用页时 将常用页保留在高速缓存中。为降低高速缓存开销,可能需要考虑为某 些高速缓存设置高速缓存替换策略。


策略

替换策略决定从磁盘中读取页时,将其放在高速缓存的什么位置。优化 程序决定每个查询所使用的高速缓存替换策略:

读取和放弃 (或 MRU 替换)策略可在缓冲池中的清洗标记处链接 新读取的缓冲区。

• LRU 替换策略可在缓冲池的最近使用 (MRU) 端链接新读取的缓冲区。


高速缓存替换策略可影响查询混合的高速缓存命中率:

用读取和放弃策略读入高速缓存的页保留在高速缓存中的时间比在 高速缓存 MRU 端读入的查询短很多。如果再次需要此类页 (例 如,如果很快又运行相同的查询),那么这些页可能需要再次从磁 盘中读取。

用读取和放弃策略读入高速缓存的页不替换已驻留在高速缓存中清 洗标记前的页。这意味着已驻留在高速缓存中清洗标记前的页不会 被查询只使用过一次的页从高速缓存中清出。

请参见 《性能和调优系列:查询处理和抽象计划》中的第 7 章 “控制 优化”。


政策

系统管理员可指定是否要将高速缓存作为 MRU/LRU 链接页列表进行维 护 (严格)或是否可使用宽松 LRU 替换策略。

严格替换策略 — 替换缓冲池中最近最少使用的页,链接缓冲池中 页链开始处 (MRU 端)新读取的页。

宽松替换策略 — 尝试避免替换最近使用的页,但不产生使缓冲区 保持 LRU/MRU 顺序的开销。

缺省高速缓存替换政策是严格替换。仅在同时满足以下两个条件时使用 宽松替换策略:

高速缓存中极少或根本没有缓冲区替换。

数据从不更新或极少更新。

宽松 LRU 政策节省了使高速缓存保持 MRU/LRU 顺序的开销。在高速 缓存页的副本可以驻留在 CPU 本身的硬件高速缓存中的 SMP 系统上, 宽松 LRU 政策可减少连接 CPU 的总线的带宽。

如果已创建了一个高速缓存来容纳所有或大部分特定对象,且高速缓存 命中率大于 95%,那么对此高速缓存使用宽松高速缓存替换策略能略微 提高性能。

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


为数据库日志配置宽松 LRU 替换

日志页被日志记录所填充,并立即写入磁盘。当应用程序包括触发器、 延迟更新或事务回退时,可能要读取一些日志页,但它们通常都是近期 用过的页,仍在高速缓存中。

由于访问高速缓存中的这些页会将它们移到严格替换政策高速缓存的

MRU 端,因此使用宽松 LRU 替换时,日志高速缓存可能性能更好。


查寻表和索引的宽松 LRU 替换

大小确定为可容纳索引和常用查寻表的用户定义的高速缓存是宽松 LRU 替换的适用对象。如果某高速缓存是适用对象,但高速缓存命中率稍低 于 95% 这一性能指导值,则要确定略微增加高速缓存的大小是否能提供 足够空间来完全容纳表或索引。




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