Chinaunix首页 | 论坛 | 博客
  • 博客访问: 427404
  • 博文数量: 239
  • 博客积分: 8010
  • 博客等级: 中将
  • 技术积分: 2431
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-02 21:12
文章分类
文章存档

2008年(239)

我的朋友

分类:

2008-06-17 23:01:37

数据库系统

DB2系统中,有两种类型的日志文件:主日志文件(primary log file)和辅助日志文件(secondary log file)。通常情况下,事务的日志信息存放在主日志文件中。在系统中存在大数据量处理的事务时,系统才会用到辅助日志文件,有关辅助日志文件的使用以及长事务的实现,可以参见下面的长事务处理。下列数据库配置参数和数据库日志有关:

LOGRETAIN:设定数据库日志的归档模式。

USEREXIT:设定是否启用用户出口标志。

LOGPRIMARY:设定主日志文件的数目。

LOGSECOND:设定辅助日志文件的数目。

LOGFILSIZ:设定一个日志文件的磁盘空间大小。

LOGBUFSZ:设定内存中日志缓冲区的大小。

MINCOMMIT:设定系统提交的事务数。在达到此设定后,日志写进程被激活,将日志缓冲区中的日志信息写入磁盘。

 

1. 不生成数据库日志

 

在特殊情况下,要提高数据库系统的处理速度,可以使事务的更新处理不产生日志信息。在DB2系统中,不能对整个数据库进行设置,使针对该数据库中所有表的更新处理都不产生日志信息。可以在一个事务中,改变表的属性,使该事务对表的更新操作不生成日志。这种属性更改,仅仅局限于当前事务,只对当前事务起作用。其他事务对该表的更新处理仍旧要产生日志信息。

另外,向表中插入数据时,可以使用load工具代替import工具。import工具对数据的插入,就好像是用一条条的SQL插入语句,要产生日志信息。而load工具,不但避免了日志信息的生成,而且限制表间参照、触发器等的检查和执行,因而加快了处理速度。

 

2. 日志文件的归档

 

DB2数据库系统支持归档日志和非归档日志(DB2资料中称作循环日志)两种模式,确省情况下,数据库处于非归档日志模式。

要使数据库处于归档日志模式,设置LOGRETAINUSEREXIT这两个参数中的任何一个,或者两个参数都设置。

在归档日志模式下,当前日志文件被写满后,系统就重新生成一个新的日志文件。对日志文件的归档,可以采用自动和手工两种方式。

1)自动归档。设置USEREXIT数据库参数,数据库就自动归档日志。但在设置该参数前,还需要其他一些操作。

2)手工归档。定期手工归档、删除日志目录下不再被系统需要的日志文件,从而保证日志目录下有足够的空间,以便系统能够在需要时,产生新的日志文件。

对日志文件自动或者手工归档方式的具体实现,可参看第9章。

 

3. 长事务的处理

 

要使DB2系统有足够的日志存放空间,以保证长事务的顺利完成,我们必须要明了主日志文件和辅助日志文件的使用方式。通常情况下,事务的日志信息存放在主日志文件中。配置参数LOGPRIMARYLOGSECOND设定系统分别创建的主日志文件、辅助日志文件的个数。

在非归档日志模式下,日志文件被循环使用。在处理长事务时,如果所有主日志文件中均包含该长事务的日志信息,也就是所有的主日志文件都处于活动状态,系统就不能覆盖最前面的主日志文件。这时,系统开始循环使用辅助日志文件。在所有辅助日志文件也都写满长事务的日志信息、处于活动状态而长事务仍旧没有结束时,由于没有可用的日志信息存放空间,系统就被迫挂起。

在归档日志模式下,当前日志文件被写满后,系统就重新生成一个新的日志文件。配置参数LOGPRIMARYLOGSECOND实际上设定可处于活动状态的主日志文件、辅助日志文件的个数。对长事务的处理,类似于上面的非归档日志模式。

要避免系统被挂起,需要有足够的日志存放空间,也就是保证有无限个可被循环使用、或者可被创建的辅助日志文件。将配置参数LOGSECOND设为-1,只要有足够磁盘空间,数据库系统就可以创建无限个辅助日志文件。

阅读(515) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~