我正在对使用 Bold for Delphi 对象持久性框架的应用程序的数据库进行一些维护。该数据库已经投入生产多年,其中一些表已经变得非常大。其中之一是BOLD_CLOCKLOG
与 Bold 的事务管理有关。
我想修剪这张表(它最大为 1.2GB,条目来自 2006 年 1 月)。
谁能确认系统不需要这些旧信息?
我正在对使用 Bold for Delphi 对象持久性框架的应用程序的数据库进行一些维护。该数据库已经投入生产多年,其中一些表已经变得非常大。其中之一是BOLD_CLOCKLOG
与 Bold 的事务管理有关。
我想修剪这张表(它最大为 1.2GB,条目来自 2006 年 1 月)。
谁能确认系统不需要这些旧信息?
从粗体文档:
BOLD_CLOCKLOG
为了能够将 TimeStamp 列中使用的事务编号映射到相应的物理时间(例如 2001-01-01 12:34),持久性映射器将存储带有时间戳和时间的日志。通常,每次数据库操作都会写入此日志,但如果到数据库的流量非常密集,则可以通过设置属性 ClockLogGranularity 来限制写入此日志的频率。还应实现事件 OnGetCurrentTime 以确保所有客户端具有相同的时间。可以通过标记值控制此表的使用:Model.UseClockLog
所以我相信这用于对 Boldobjects 进行版本控制,请参阅粗体文档中的对象版本控制扩展。如果您的应用程序不需要它,您可以将它放到数据库中。
在我们的 Bold 应用程序中,我们不使用该功能。为什么不简单地测试关闭模型中的 Bold_ClockLog,删除那个大表并尝试使用您的应用程序。我很确定如果有什么问题,它会立即这么说。
我还可以提到我们有一个自己的自定义对象历史。它只是 ObjectHistory 类中的大字符串(如 TStringList.DelimetedText),具有时间、用户和有关操作的注释。这比 Bolds 内置的 objecthistory 更适合我们的需要。缺点当然是我们需要在记录到历史记录时在代码中添加调用。
Bold_ClockLog 是一个可选表,它的目的是存储整数时间戳和相应的 DateTime 值之间的映射。
这允许您找出对任何对象的最后修改的日期时间。
如果您不需要此功能,请随意清空表格,它不会造成任何问题。
除了 Bold_ClockLog,Bold_XFiles 是另一个趋于变大的可选表。但与 Bold_ClockLog 不同的是,Bold_XFiles 不能被清空。
这两个表都可以在模型标签值中打开/关闭。