-
- SET LOG 语句
使用 SET LOG 语句来将您的数据库日志记录模式从缓冲的事务日志记录更改为未缓冲的事务日志记录,反之亦然。
此语句是对 SQL 的 ANSI/ISO 标准的扩展。与大多数扩展不一样,SET LOG 语句在符合 ANSI 的数据库中是无效的。
语法
用法
当您创建数据库或向现有的数据库添加日志记录时,您激活事务的日志记录。这些事务日志可为缓冲的或未缓冲的。
缓冲的日志记录是在内存缓冲区中保持事务直到该缓冲区满为止的一类日志记录,不管提交或回滚事务的时间。数据库服务器提供此选项来通过减少磁盘写的次数提高操作速度。
Attention: 以缓冲的日志记录您只可获得微小的效率提升,但会招致一些风险。在系统故障的时候,数据库服务器不可恢复内存缓冲区中任何已完成的事务,这些尚未写到磁盘。
下列示例中的 SET LOG 语句将事务日志记录模式更改为缓冲的日志记录:
SET BUFFERED LOG;
未缓冲的日志记录是不在内存缓冲区中保持事务的日志记录。事务一结束,数据库服务器就将事务写到磁盘。当您正在使用未缓冲的日志记录时,如果发生系统故障,则您恢复所有已完成的事务,但不包括仍在缓冲区中的那些。事务日志的缺省条件是未缓冲的日志记录。
下列示例中的 SET LOG 语句将事务日志记录模式更改为未缓冲的日志记录:
SET LOG;
SET LOG 语句仅定义当前会话的模式。数据库管理员以 ondblog 实用程序设置的缺省模式保持不变。
缓冲的选项不影响从外部表的检索。对于分布式查询,带有日志记录的数据库仅可从带有日志记录的数据库检索,但与数据库使用缓冲的还是非缓冲的日志记录无关。
符合 ANSI 的数据库不可使用缓冲的日志记录。
您不可更改符合 ANSI 的数据库的日志记录模式。如果您以 WITH LOG MODE ANSI 关键字创建了数据库,则在后期您不可使用 SET LOG 语句将日志记录模式更改为缓冲的或未缓冲的事务日志记录。