例如,执行SELECTCHECKPOINT(10);会将系统中10%脏页写入磁盘。
创建数据库时,联机日志文件通常被扩展至一定长度,其内容则被初始化为空,当系统运行时,该文件逐渐被产生的日志所填充。
为了达到循环利用日志系统空间的目的,必须在所有日志文件空间将被占满时,系统能够自动清空一部分日志,以便重用日志文件的空间,
为了保证被清空的日志所―保护‖的数据在磁盘上是安全的,需要引入一个关键的数据库概念——检查点。
当系统产生检查点时,将系统缓冲区中被修改过的数据页写入磁盘,以保证当前日志所―保护‖的数据页都已安全写入磁盘,这样日志文件即可被安全重用。
当服务器启动和关闭时,系统都会产生检查点。
服务器运行过程中,系统会自动判断是否需要执行检查点;
当空闲日志空间不足时,系统自动产生一个检查点;
系统调度线程也会定时产生检查点;
还可以通过调用系统函数CHECKPOINT主动生成检查点。
系统调度线程根据dm.ini的参数配置,产生检查点,下面给出具体的例子和说明。
CKPT_INTERVAL=#每间隔秒,产生检查点间隔
CKPT_FLUSH_RATE=5#检查点的刷盘比例为5%,将系统中所有脏页的5%写入磁盘
CKPT_FLUSH_PAGES=#一个检查点最少写入个脏页
检查点系统函数CHECKPOINT(FLUSH_RATE),其参数FLUSH_RATE为INTEGER类型或DOUBLE类型,指示刷盘比例,替代dm.ini中的CKPT_FLUSH_RATE,同时CKPT_FLUSH_PAGES参数同时生效。
例如,执行SELECTCHECKPOINT(10);会将系统中10%脏页写入磁盘。