如果在运行于服务器上的大型数据库上使用 VALIDATE TABLE 语句,而服务器的高速缓存又太小,无法包含表及其最大索引,该语句就会很慢。通常,对于每个索引都至少会读取一次表中的所有页。而且,如果索引查寻需要进行完全比较,则可以读取的页数与表中的行数(而非页数)成比例。
如果您希望减少校验所需的时间,则可以将 WITH EXPRESS CHECK 选项与 VALIDATE TABLE 语句一起使用,或者将 -fx 选项与 dbvalid 实用程序一起使用。根据数据库的大小、高速缓存的大小和所需的校验类型,这两个功能可显著减少执行校验所需的时间。
快速校验会导致读取表的每一行并评估所有列。对每个索引都完全扫描一次并完成检查,以确保索引中引用的行存在于表中。快速检查选项还对单个索引页的有效性进行检查。表中的行数必须与索引中的条目数相匹配。快速选项不是对每一行都执行单个索引查寻,因此会节省时间。
因为快速检查功能不执行单个查寻,所以快速校验功能有可能(尽管不太可能)忽略某种形式的索引损坏。如果发生索引损坏,由于校验已经确认所有数据可被读取,所以,通过卸载并重建数据库可恢复数据。也可以使用 ALTER INDEX 语句的 REBUILD 子句修正索引损坏。请参见ALTER INDEX 语句。
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |