| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- -- 1.0.345 S1 看板异步重算任务表、全局锁,以及陈旧 S1 RUNNING 日志收口。
- SET NAMES utf8mb4;
- CREATE TABLE IF NOT EXISTS `ado_s1_dashboard_rebuild_job` (
- `id` BIGINT NOT NULL AUTO_INCREMENT,
- `tenant_id` BIGINT NOT NULL,
- `factory_id` BIGINT NOT NULL DEFAULT 1,
- `status` VARCHAR(20) NOT NULL,
- `trigger_type` VARCHAR(20) NOT NULL,
- `requested_by` BIGINT NULL,
- `batch_id` VARCHAR(100) NULL,
- `transform_run_log_id` BIGINT NULL,
- `stage_rows` INT NOT NULL DEFAULT 0,
- `standard_rows` INT NOT NULL DEFAULT 0,
- `dwd_rows` INT NOT NULL DEFAULT 0,
- `kpi_rows` INT NOT NULL DEFAULT 0,
- `atomic_rows` INT NOT NULL DEFAULT 0,
- `error_message` VARCHAR(2000) NULL,
- `submitted_at` DATETIME(3) NOT NULL,
- `started_at` DATETIME(3) NULL,
- `finished_at` DATETIME(3) NULL,
- `heartbeat_at` DATETIME(3) NULL,
- `duration_ms` INT NULL,
- `create_time` DATETIME(3) NOT NULL,
- `update_time` DATETIME(3) NOT NULL,
- PRIMARY KEY (`id`),
- KEY `ix_s1_rebuild_status` (`status`, `submitted_at`),
- KEY `ix_s1_rebuild_scope` (`tenant_id`, `factory_id`, `status`, `submitted_at`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
- CREATE TABLE IF NOT EXISTS `ado_s1_mdp_run_lock` (
- `lock_name` VARCHAR(64) NOT NULL,
- `holder_id` VARCHAR(100) NULL,
- `job_id` BIGINT NULL,
- `status` VARCHAR(20) NOT NULL DEFAULT 'FREE',
- `acquired_at` DATETIME(3) NULL,
- `heartbeat_at` DATETIME(3) NULL,
- PRIMARY KEY (`lock_name`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
- INSERT INTO `ado_s1_mdp_run_lock` (`lock_name`, `status`)
- SELECT 'S1_MDP_FULL', 'FREE'
- FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM `ado_s1_mdp_run_lock` WHERE `lock_name`='S1_MDP_FULL');
- UPDATE `mdp_transform_run_log`
- SET `status`='FAILED',
- `end_time`=NOW(3),
- `error_message`='HTTP 请求已取消/服务中断后的存量收口',
- `update_time`=NOW(3),
- `duration_ms`=LEAST(2147483647, GREATEST(0, TIMESTAMPDIFF(SECOND, `start_time`, NOW())) * 1000)
- WHERE `job_code`='S1_MDP_SYNC_TRANSFORM'
- AND `status`='RUNNING'
- AND `start_time` < DATE_SUB(NOW(), INTERVAL 30 MINUTE);
|