Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
为 dbspace 或事务日志预分配空间,或在重命名或移动 dbspace 文件时更新目录。
ALTER DBSPACE { dbspace-name | TRANSLOG | TEMPORARY } { ADD number [ add-unit ] | RENAME filename }
add-unit : PAGES | KB | MB | GB | TB
TRANSLOG 子句 提供一个专用的 dbspace 名称 TRANSLOG,以便为事务日志预分配磁盘空间。如果估计事务日志增长速度很快,则预分配可以提高性能。例如,当处理许多二进制大对象 (BLOB)(如位图)时,可能需要使用此功能。
TEMPORARY 子句 提供专用 dbspace 名称 TEMPORARY,用于为临时 dbspace 增加空间。在为临时 dbspace 添加空间时,所增加的空间将立即体现在相应的临时文件中。如果为数据库的临时 dbspace 预分配空间,则在执行使用大型工作表的复杂查询过程中,性能将得到提高。
ADD 子句 带 ADD 子句的 ALTER DBSPACE 语句可为 dbspace 预分配磁盘空间。它使相应的数据库文件按指定的大小扩展,可以指定的单位包括:页、千字节 (KB)、兆字节 (MB)、千兆字节 (GB) 或千吉字节 (TB)。如果未指定单位,则使用缺省的 PAGES。创建数据库后,数据库的页面大小是固定的。
如果未预分配空间,则当需要空间时,对于 2 KB、4 KB 和 8 KB 的页面大小,数据库文件一次大约扩展 256 KB;对于其它页面大小将扩展大约 32 个页面。预分配空间可在装载大量数据时提高性能,还可以使数据库文件在文件系统中保持更好的连续性。
可以使用此子句向任何预定义的 dbspace(system、temporary、temp、translog 和 translogmirror)添加空间。请参见预定义 dbspace。
RENAME 子句 如果重命名主文件以外的数据库文件或将其移到不同的目录或设备,可以使用带 RENAME 子句的 ALTER DBSPACE,以确保数据库启动时 SQL Anywhere 能够找到新文件。filename 参数可以是字符串文字或变量。
名称更改生效,如下所示:
如果 dbspace 在语句执行前(即,尚未重命名实际文件)已打开,它仍是可访问的;但是存储在目录中的名称已更新。数据库停止后,必须使用 RENAME 子句重命名文件,使之与所提供的文件名匹配,否则文件名将不会与目录中的 dbspace 名匹配,而且数据库服务器无法在下次启动数据库时打开 dbspace。
如果在执行语句时未打开 dbspace,数据库服务器将在更新目录后尝试打开它。如果可以打开 dbspace,就可以访问它。如果无法打开 dbspace,则不返回任何错误。
要确定 dbspace 是否打开,请执行以下语句。如果结果为 NULL,则 dbspace 未打开。
SELECT DB_EXTENDED_PROPERTY('FileSize','dbspace-name');
对主 dbspace(即 system)使用带 RENAME 子句的 ALTER DBSPACE 无效。
每个数据库都保存在一个或多个文件中。dbspace 是一个附加文件,它具有与每个数据库文件关联的逻辑名称,用于保存比主数据库文件自己所能容纳的数据更多的数据。ALTER DBSPACE 修改主 dbspace(也称为根文件)或附加 dbspace。数据库的 dbspace 名保存在 ISYSFILE 系统表中。主数据库文件的 dbspace 名为 system。
当启动多文件数据库时,启动行或 ODBC 数据源说明会向 SQL Anywhere 告知主数据库文件的位置。主数据库文件中保存着系统表。SQL Anywhere 在这些系统表中查找其它 dbspace 的位置,然后逐个打开它们。可通过设置 default_dbspace 选项指定在哪个 dbspace 中创建新表。
DBA 权限,并且是与数据库的唯一连接。
自动提交。
SQL/2008 服务商扩充。
下面的示例将 system dbspace 的大小增加 200 页:
ALTER DBSPACE system ADD 200;
以下示例将 system dbspace 的大小增加了 400 MB:
ALTER DBSPACE system ADD 400 MB;
以下示例更改与 system_2 dbspace 关联的文件名:
ALTER DBSPACE system_2 RENAME 'e:\db\dbspace2.db';