优化
This commit is contained in:
@@ -77,6 +77,14 @@ CREATE TABLE IF NOT EXISTS file_export_task (
|
||||
content_type VARCHAR(128) NULL COMMENT '文件类型',
|
||||
size_bytes BIGINT UNSIGNED NULL COMMENT '文件字节数',
|
||||
failure_message VARCHAR(1000) NULL COMMENT '失败原因',
|
||||
dispatch_version INT NOT NULL DEFAULT 1 COMMENT '派发版本,仅执行重试时递增',
|
||||
attempt_count INT NOT NULL DEFAULT 0 COMMENT '已执行尝试次数',
|
||||
max_attempts INT NOT NULL DEFAULT 3 COMMENT '自动重试上限',
|
||||
next_retry_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '允许执行的最早时间',
|
||||
lease_owner VARCHAR(128) NULL COMMENT '当前执行实例标识',
|
||||
lease_until DATETIME(3) NULL COMMENT '执行租约截止时间',
|
||||
last_heartbeat_at DATETIME(3) NULL COMMENT '最后心跳时间',
|
||||
execution_deadline_at DATETIME(3) NULL COMMENT '本次执行截止时间',
|
||||
requested_by BIGINT UNSIGNED NOT NULL COMMENT '申请用户ID',
|
||||
requested_username VARCHAR(128) NULL COMMENT '申请账号快照',
|
||||
requested_at DATETIME(3) NOT NULL COMMENT '申请时间',
|
||||
@@ -93,5 +101,40 @@ CREATE TABLE IF NOT EXISTS file_export_task (
|
||||
UNIQUE KEY uk_file_export_task_no (task_no),
|
||||
KEY idx_file_export_owner (tenant_id, app_code, requested_by, requested_at),
|
||||
KEY idx_file_export_status (status, requested_at),
|
||||
KEY idx_file_export_dispatch (status, next_retry_at, id),
|
||||
KEY idx_file_export_lease (status, lease_until),
|
||||
KEY idx_file_export_expiry (status, expires_at)
|
||||
) ENGINE=InnoDB COMMENT='公共异步导出任务表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS file_export_task_guard (
|
||||
guard_key VARCHAR(64) NOT NULL COMMENT '任务创建串行化锁键',
|
||||
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (guard_key)
|
||||
) ENGINE=InnoDB COMMENT='导出任务创建并发保护表:低频创建入口使用单行锁保证重复提交及活动上限';
|
||||
|
||||
INSERT IGNORE INTO file_export_task_guard (guard_key) VALUES ('GLOBAL_CREATE');
|
||||
|
||||
CREATE TABLE IF NOT EXISTS file_export_outbox (
|
||||
id BIGINT UNSIGNED NOT NULL COMMENT 'Outbox记录ID',
|
||||
event_id VARCHAR(64) NOT NULL COMMENT '投递意图唯一标识',
|
||||
task_id BIGINT UNSIGNED NOT NULL COMMENT '关联导出任务ID',
|
||||
dispatch_version INT NOT NULL COMMENT '任务派发版本',
|
||||
topic VARCHAR(128) NOT NULL COMMENT '目标Topic',
|
||||
tag VARCHAR(64) NOT NULL COMMENT '消息Tag',
|
||||
message_key VARCHAR(64) NOT NULL COMMENT '消息Key',
|
||||
payload_json JSON NOT NULL COMMENT '命令消息体',
|
||||
status VARCHAR(24) NOT NULL DEFAULT 'PENDING' COMMENT 'PENDING/CLAIMED/SENT/QUARANTINED',
|
||||
attempt_count INT NOT NULL DEFAULT 0 COMMENT '累计发送尝试次数',
|
||||
next_retry_at DATETIME(3) NOT NULL COMMENT '允许发送的最早时间',
|
||||
lease_owner VARCHAR(128) NULL COMMENT '领取实例标识',
|
||||
lease_until DATETIME(3) NULL COMMENT '领取租约截止时间',
|
||||
sent_at DATETIME(3) NULL COMMENT '发送成功时间',
|
||||
last_error VARCHAR(1000) NULL COMMENT '最后发送错误',
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_file_export_outbox_event (event_id),
|
||||
UNIQUE KEY uk_file_export_outbox_task_version (task_id, dispatch_version),
|
||||
KEY idx_file_export_outbox_publish (status, next_retry_at, id),
|
||||
KEY idx_file_export_outbox_task (task_id, dispatch_version, status, sent_at)
|
||||
) ENGINE=InnoDB COMMENT='导出命令事务Outbox表';
|
||||
|
||||
Reference in New Issue
Block a user