用途:介绍 MariaDB 10.3+ 独有的系统版本表(system-versioned tables)与应用时间段(application-time periods),用于审计追踪、GDPR 式历史保留、时间旅行查询和双时态数据建模。MySQL 无对应功能,PostgreSQL 有 periods 但无系统时间,迁移前需重写。
主要能力:WITH SYSTEM VERSIONING 自动记录行历史;FOR SYSTEM_TIME 支持 AS OF、BETWEEN、FROM...TO、ALL 等时间旅行查询;PARTITION BY SYSTEM_TIME 支持显式、LIMIT 大小限制、INTERVAL 时间轮转及 10.9.1+ 的 AUTO 自动分区;DELETE HISTORY 用于合规清理;10.4+ 应用时间段用 PERIOD FOR 描述业务有效期,支持 FOR PORTION OF 的 DELETE/UPDATE;10.5+ 可组合为双时态表。
使用方式:建表时加 WITH SYSTEM VERSIONING,或 ALTER TABLE ... ADD SYSTEM VERSIONING;需要墙上时钟时间旅行或分区时必须显式声明 TIMESTAMP(6) 的 row_start/row_end 与 PERIOD FOR SYSTEM_TIME。清理历史用 DELETE HISTORY FROM t BEFORE SYSTEM_TIME 'ts',需单独 DELETE HISTORY 权限。
限制:事务精度表不能分区;TRUNCATE 被禁止(错误 4137);普通 SELECT 只返回当前行;FOR PORTION OF 仅适用于应用时间段,不能用于 system_time;ALTER 历史准确性受 system_versioning_alter_history 影响,无法重建当时不存在的列值。具体版本行为与更多示例见资料中的参考文件。