7.4.3 INFORMIX数据库系统
INFORMIX系统使用了两类日志文件:逻辑日志文件(logical log file)和物理日志文件(physical log file)。逻辑日志文件用来存放数据库系统中所有更新事务的日志信息,就是我们这一章所讲的数据库日志;物理日志文件并不存放日志信息,它被用来保存数据被更新前的原有映像。任何事务在更新数据前,都需要将这些数据备份到物理日志文件中。
INFORMIX系统在下列两种情况下,需要用到物理日志文件:
(1)如果当前事务需要回退,INFORMIX系统直接使用物理日志文件中的原有数据映像,覆盖当前事务所做的修改,使数据恢复到事务处理之前的状态。
(2)INFORMIX系统在恢复时使用物理日志文件,将数据库恢复到一个物理上的一致点,然后再根据逻辑日志文件中的日志信息,进行事务的前滚和回退。
INFORMIX系统中物理日志文件的使用,总给人“蛇足”的感觉。如果没有物理日志文件,数据库系统照样可以从逻辑日志文件中读出当前事务所有已经执行的更新操作,反方向执行以回退事务,照样可以完成数据库系统的恢复。DB2和SYBASE系统就是这样实现的。物理日志文件的使用,虽说提高了事务回退的效率,但事务处理之前的原有数据保存,既影响事务的处理速度,又要消耗系统资源。在ORACLE系统中,也存在类似于物理日志文件的回退表空间。但ORACLE系统的回退表空间,除了用做事务的回退之外,还和数据库系统的并发控制——多版本两阶段锁机制的实现,有着密切的关系,是数据库系统不可或缺的一个组成部分。
在INFORMIX系统中,每一个逻辑日志文件、物理日志文件并不是对应到一个操作系统文件或者裸设备上。所有的逻辑日志文件、物理日志文件可以放置在一个表空间中,系统根据每个日志文件的大小,在这个表空间上进行空间的分配。下列配置参数和数据库日志有关:
LOGBUFF:设定逻辑日志缓冲区的内存空间。
LOGFILES:设定逻辑日志文件的数目。
LOGSIZE:设定单个逻辑日志文件的空间大小。
PHYSBUFF:设定物理日志缓冲区的内存空间。
PHYSDBS:设定物理日志文件使用的表空间。
PHYSFILE:设定单个物理日志文件的空间大小。
LTAPEDEV:设定对逻辑日志文件备份时所使用的备份设备。可以是磁带机、操作系统文件。
LTAPEBLK:设定对逻辑日志文件备份时所使用的块大小。
LTAPESIZE:设定进行逻辑日志文件备份的备份设备所使用介质的空间大小。
1. 不生成数据库日志
在特殊情况下,要提高数据库系统的处理速度,可以使事务的更新处理不产生日志信息。在INFORMIX系统中,可以设置整个数据库,使它处于不记日志模式,从而对数据库中所有表的更新处理都不产生日志信息。也可以改变单个表的属性为不记日志模式,从而只是对该表的更新操作,不会产生日志信息。
另外,向表中插入数据时,可以使用ONLOAD工具。使用该工具装入数据时,要求数据库处于不记日志模式,不会产生日志信息。在数据装入完成后,再使用命令改变数据库的日志模式。要删除一个表中的所有记录数据,可以首先移走整个表,然后重新创建该表。更好的方法是使用truncate table命令,该命令删除表中的所有记录,不会生成日志信息,在保留表结构的同时回收表所拥有的磁盘空间。
2. 日志文件的归档
INFORMIX系统只有一种日志模式,即归档日志模式,系统循环地使用所有的逻辑日志文件,任何日志文件被写满之后、再次被使用之前,必须被归档保存。在实际操作时,可以根据需要,设置逻辑日志的备份设备参数:LTAPEDEV = /dev/null,数据库系统会将写满的逻辑日志文件自动标记为已归档,尽管实际的归档操作并没有被执行。另外,物理日志文件不需要被归档。
3. 长事务的处理
要使INFORMIX系统有足够的日志信息存放空间,以保证长事务的顺利完成,我们首先要了解和长事务有关的配置参数。
LTXHWM:设定单个事务能够使用的逻辑日志文件数,占总数目的百分比。一旦达到这个比例,系统就开始回退事务。
LTXEHWM:设定单个事务能够使用的逻辑日志文件数,占总数目的百分比。一旦达到这个比例,该事务就独享剩余的逻辑日志文件空间,其它事务被挂起。
DYNAMIC_LOGS:设定是否允许系统自动增加逻辑日志文件。这些逻辑日志文件在事务完成后被系统删除。
当一个事务所使用的逻辑日志文件达到配置参数LTXHWM的值后,系统就认定此事务为一个长事务。为防止事务占用所有的日志文件空间而引起系统挂起,系统就开始回滚该事务。由于回滚事务仍旧要产生日志、要写入逻辑日志文件,当事务所使用的逻辑日志文件达到配置参数LTXEHWM的值后,系统就暂停其他事务的执行,所有剩余日志文件空间全部用作该事务的回退。
一个逻辑日志文件被写满之后,系统就自动切换到下一个逻辑日志文件,这个日志文件就成为当前日志文件。除此之外,在切换时系统还要检查新的当前日志文件的下一个日志文件。如果它处于活动状态并且配置参数DYNAMIC_LOGS被设置,系统就自动在新的当前日志文件之后增加一个新的逻辑日志文件。
只要设置配置参数DYNAMIC_LOGS,同时将LTXHWM和LTXEHWM的值设为100,系统就会在需要时创建新的逻辑日志文件,一直到事务的完成。通过这种方式,可以保证长事务的处理有足够的日志信息存放空间。
物理日志文件在更新事务的处理过程中,要存放数据被更新前的映像。事务处理的数据量越大,需要的空间就越多。因此,管理员在处理长事务时,还要保证物理日志文件有足够可用空间。
INFORMIX系统使用了两类日志文件:逻辑日志文件(logical log file)和物理日志文件(physical log file)。逻辑日志文件用来存放数据库系统中所有更新事务的日志信息,就是我们这一章所讲的数据库日志;物理日志文件并不存放日志信息,它被用来保存数据被更新前的原有映像。任何事务在更新数据前,都需要将这些数据备份到物理日志文件中。
INFORMIX系统在下列两种情况下,需要用到物理日志文件:
(1)如果当前事务需要回退,INFORMIX系统直接使用物理日志文件中的原有数据映像,覆盖当前事务所做的修改,使数据恢复到事务处理之前的状态。
(2)INFORMIX系统在恢复时使用物理日志文件,将数据库恢复到一个物理上的一致点,然后再根据逻辑日志文件中的日志信息,进行事务的前滚和回退。
INFORMIX系统中物理日志文件的使用,总给人“蛇足”的感觉。如果没有物理日志文件,数据库系统照样可以从逻辑日志文件中读出当前事务所有已经执行的更新操作,反方向执行以回退事务,照样可以完成数据库系统的恢复。DB2和SYBASE系统就是这样实现的。物理日志文件的使用,虽说提高了事务回退的效率,但事务处理之前的原有数据保存,既影响事务的处理速度,又要消耗系统资源。在ORACLE系统中,也存在类似于物理日志文件的回退表空间。但ORACLE系统的回退表空间,除了用做事务的回退之外,还和数据库系统的并发控制——多版本两阶段锁机制的实现,有着密切的关系,是数据库系统不可或缺的一个组成部分。
在INFORMIX系统中,每一个逻辑日志文件、物理日志文件并不是对应到一个操作系统文件或者裸设备上。所有的逻辑日志文件、物理日志文件可以放置在一个表空间中,系统根据每个日志文件的大小,在这个表空间上进行空间的分配。下列配置参数和数据库日志有关:
LOGBUFF:设定逻辑日志缓冲区的内存空间。
LOGFILES:设定逻辑日志文件的数目。
LOGSIZE:设定单个逻辑日志文件的空间大小。
PHYSBUFF:设定物理日志缓冲区的内存空间。
PHYSDBS:设定物理日志文件使用的表空间。
PHYSFILE:设定单个物理日志文件的空间大小。
LTAPEDEV:设定对逻辑日志文件备份时所使用的备份设备。可以是磁带机、操作系统文件。
LTAPEBLK:设定对逻辑日志文件备份时所使用的块大小。
LTAPESIZE:设定进行逻辑日志文件备份的备份设备所使用介质的空间大小。
1. 不生成数据库日志
在特殊情况下,要提高数据库系统的处理速度,可以使事务的更新处理不产生日志信息。在INFORMIX系统中,可以设置整个数据库,使它处于不记日志模式,从而对数据库中所有表的更新处理都不产生日志信息。也可以改变单个表的属性为不记日志模式,从而只是对该表的更新操作,不会产生日志信息。
另外,向表中插入数据时,可以使用ONLOAD工具。使用该工具装入数据时,要求数据库处于不记日志模式,不会产生日志信息。在数据装入完成后,再使用命令改变数据库的日志模式。要删除一个表中的所有记录数据,可以首先移走整个表,然后重新创建该表。更好的方法是使用truncate table命令,该命令删除表中的所有记录,不会生成日志信息,在保留表结构的同时回收表所拥有的磁盘空间。
2. 日志文件的归档
INFORMIX系统只有一种日志模式,即归档日志模式,系统循环地使用所有的逻辑日志文件,任何日志文件被写满之后、再次被使用之前,必须被归档保存。在实际操作时,可以根据需要,设置逻辑日志的备份设备参数:LTAPEDEV = /dev/null,数据库系统会将写满的逻辑日志文件自动标记为已归档,尽管实际的归档操作并没有被执行。另外,物理日志文件不需要被归档。
3. 长事务的处理
要使INFORMIX系统有足够的日志信息存放空间,以保证长事务的顺利完成,我们首先要了解和长事务有关的配置参数。
LTXHWM:设定单个事务能够使用的逻辑日志文件数,占总数目的百分比。一旦达到这个比例,系统就开始回退事务。
LTXEHWM:设定单个事务能够使用的逻辑日志文件数,占总数目的百分比。一旦达到这个比例,该事务就独享剩余的逻辑日志文件空间,其它事务被挂起。
DYNAMIC_LOGS:设定是否允许系统自动增加逻辑日志文件。这些逻辑日志文件在事务完成后被系统删除。
当一个事务所使用的逻辑日志文件达到配置参数LTXHWM的值后,系统就认定此事务为一个长事务。为防止事务占用所有的日志文件空间而引起系统挂起,系统就开始回滚该事务。由于回滚事务仍旧要产生日志、要写入逻辑日志文件,当事务所使用的逻辑日志文件达到配置参数LTXEHWM的值后,系统就暂停其他事务的执行,所有剩余日志文件空间全部用作该事务的回退。
一个逻辑日志文件被写满之后,系统就自动切换到下一个逻辑日志文件,这个日志文件就成为当前日志文件。除此之外,在切换时系统还要检查新的当前日志文件的下一个日志文件。如果它处于活动状态并且配置参数DYNAMIC_LOGS被设置,系统就自动在新的当前日志文件之后增加一个新的逻辑日志文件。
只要设置配置参数DYNAMIC_LOGS,同时将LTXHWM和LTXEHWM的值设为100,系统就会在需要时创建新的逻辑日志文件,一直到事务的完成。通过这种方式,可以保证长事务的处理有足够的日志信息存放空间。
物理日志文件在更新事务的处理过程中,要存放数据被更新前的映像。事务处理的数据量越大,需要的空间就越多。因此,管理员在处理长事务时,还要保证物理日志文件有足够可用空间。