Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 监控和提高数据库性能 » 提高数据库性能 » 性能提高提示 » 减少表碎片

 

减少表碎片的方法

以下方法有助于控制表碎片:

  • 使用 PCTFREE   SQL Anywhere 在每一页上保留了额外的空间,以允许行略微地增大。当对行的更新使行大小超过为它分配的初始空间时,该行将被拆分,而初始行位置将包含一个指针,它指向存储整个行的另一页。例如,如果用 UPDATE 语句填充空行或将新列插入表,可能会导致严重的行拆分。当更多的行存储在单独的页上时,需要更多的时间来访问附加页。

    通过指定应该为将来的更新而保留的空间在表页中所占的百分比,可以减少表中的碎片数。对 PCTFREE 的指定可以用 CREATE TABLE、ALTER TABLE、DECLARE LOCAL TEMPORARY TABLE 或 LOAD TABLE 来设置。请参见PCTFREE 子句

  • 重组表   可以使用 REORGANIZE TABLE 语句或者在 Sybase Central 的 [碎片] 选项卡中单击 [重组] 来整理特定表的碎片。请参见REORGANIZE TABLE 语句使用 [碎片] 选项卡(SQL Anywhere 插件)

  • 重建数据库   倘若重建分两步过程执行(即,将数据卸载并存储到磁盘,然后重装),则重建数据库将整理包括系统表在内的所有表的碎片。以这种方式进行重建还有一个优点,会重排表行以便它们按聚簇索引和主键指定的顺序出现。一步重建(例如,使用 -ar、-an 或 -ac 选项)不会减少表碎片。请参见重建数据库卸载实用程序 (dbunload)


使用 [碎片] 选项卡(SQL Anywhere 插件)