1.0.345.sql 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. -- 1.0.345 S1 看板异步重算任务表、全局锁,以及陈旧 S1 RUNNING 日志收口。
  2. SET NAMES utf8mb4;
  3. CREATE TABLE IF NOT EXISTS `ado_s1_dashboard_rebuild_job` (
  4. `id` BIGINT NOT NULL AUTO_INCREMENT,
  5. `tenant_id` BIGINT NOT NULL,
  6. `factory_id` BIGINT NOT NULL DEFAULT 1,
  7. `status` VARCHAR(20) NOT NULL,
  8. `trigger_type` VARCHAR(20) NOT NULL,
  9. `requested_by` BIGINT NULL,
  10. `batch_id` VARCHAR(100) NULL,
  11. `transform_run_log_id` BIGINT NULL,
  12. `stage_rows` INT NOT NULL DEFAULT 0,
  13. `standard_rows` INT NOT NULL DEFAULT 0,
  14. `dwd_rows` INT NOT NULL DEFAULT 0,
  15. `kpi_rows` INT NOT NULL DEFAULT 0,
  16. `atomic_rows` INT NOT NULL DEFAULT 0,
  17. `error_message` VARCHAR(2000) NULL,
  18. `submitted_at` DATETIME(3) NOT NULL,
  19. `started_at` DATETIME(3) NULL,
  20. `finished_at` DATETIME(3) NULL,
  21. `heartbeat_at` DATETIME(3) NULL,
  22. `duration_ms` INT NULL,
  23. `create_time` DATETIME(3) NOT NULL,
  24. `update_time` DATETIME(3) NOT NULL,
  25. PRIMARY KEY (`id`),
  26. KEY `ix_s1_rebuild_status` (`status`, `submitted_at`),
  27. KEY `ix_s1_rebuild_scope` (`tenant_id`, `factory_id`, `status`, `submitted_at`)
  28. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  29. CREATE TABLE IF NOT EXISTS `ado_s1_mdp_run_lock` (
  30. `lock_name` VARCHAR(64) NOT NULL,
  31. `holder_id` VARCHAR(100) NULL,
  32. `job_id` BIGINT NULL,
  33. `status` VARCHAR(20) NOT NULL DEFAULT 'FREE',
  34. `acquired_at` DATETIME(3) NULL,
  35. `heartbeat_at` DATETIME(3) NULL,
  36. PRIMARY KEY (`lock_name`)
  37. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  38. INSERT INTO `ado_s1_mdp_run_lock` (`lock_name`, `status`)
  39. SELECT 'S1_MDP_FULL', 'FREE'
  40. FROM DUAL
  41. WHERE NOT EXISTS (SELECT 1 FROM `ado_s1_mdp_run_lock` WHERE `lock_name`='S1_MDP_FULL');
  42. UPDATE `mdp_transform_run_log`
  43. SET `status`='FAILED',
  44. `end_time`=NOW(3),
  45. `error_message`='HTTP 请求已取消/服务中断后的存量收口',
  46. `update_time`=NOW(3),
  47. `duration_ms`=LEAST(2147483647, GREATEST(0, TIMESTAMPDIFF(SECOND, `start_time`, NOW())) * 1000)
  48. WHERE `job_code`='S1_MDP_SYNC_TRANSFORM'
  49. AND `status`='RUNNING'
  50. AND `start_time` < DATE_SUB(NOW(), INTERVAL 30 MINUTE);