日志文件类型和参数
正如持久数据库恢复页面中所解释的那样,SmartEDB 运行时使用事务日志文件在先前应用程序崩溃的情况下自动执行恢复操作。持久数据库 I/O 页面解释了不同的日志类型以及如何为不同的应用程序配置选择合适的类型。事务写入日志的方式由事务提交策略决定。以下部分说明了如何在 C 应用程序中设置日志类型和提交策略。
设置日志文件类型
日志类型在“Database.Parameters.LogType”中指定。例如:
Database.Parameters parameters = new Database.Parameters();
...
// Set log file type
parameters.logType = Database.LogType.UndoLog;
提交策略
根据“持久数据库 I/O”页面,SmartEDB 为 RedoLog 和 UndoLog 日志类型提供了四种提交策略。在调用 Database 方法 open() 之前,需通过参数 Database.Parameters.DefaultCommitPolicy 设置提交策略。
NoSync 策略会将所有事务保留在缓存中,直到应用程序显式调用 Connection 方法 diskFlush() 将缓存刷新到介质。
对于 RedoLog 的延迟策略,数据库会将事务保留在内存中,直到达到指定的日志文件大小百分比。相关阈值参数包括 Database.Parameters.RedoLogLimit、Database.Parameters.DelayedCommitThreshold 和 Database.Parameters.MaxDelayedTransactions,可在传递给 Database 方法 open() 的参数中设置。默认情况下,阈值设为可用页面池大小的一半。
例如,以下代码片段演示了如何设置日志类型、提交策略和参数:
Database.Parameters parameters = new Database.Parameters();
...
parameters.logType = Database.LogType.RedoLog;
parameters.defaultCommitPolicy = Database.CommitPolicy.Delayed;
parameters.maxDelayedTransactions = 100;
...
db.open("operations-db", parameters, DATABASE_SIZE);