1

我们运行 oozie 并且作业安排得太频繁,导致数据库增长非常快,进而导致数据库运行缓慢。

所以我们开始频繁地清除记录,并且随着时间清除(即从表中删除 *)引入了锁,它再次开始导致应用程序运行缓慢。

我们开始考虑基于表中的 start_time 或 end_time 字段对表进行分区等选项,但是当我们意识到我们无法在不是主键的键上对 mysql 表进行分区时,我们遇到了死胡同。

样品表说明

CREATE TABLE `WF_JOBS` (

  `id` varchar(255) NOT NULL,
  `app_name` varchar(255) DEFAULT NULL,
  `app_path` varchar(255) DEFAULT NULL,
  `conf` mediumtext,
  `group_name` varchar(255) DEFAULT NULL,
  `parent_id` varchar(255) DEFAULT NULL,
  `run` int(11) DEFAULT NULL,
  `user_name` varchar(255) DEFAULT NULL,
  `bean_type` varchar(31) DEFAULT NULL,
  `auth_token` text,
  `created_time` datetime DEFAULT NULL,
  `end_time` datetime DEFAULT NULL,
  `external_id` varchar(255) DEFAULT NULL,
  `last_modified_time` datetime DEFAULT NULL,
  `log_token` varchar(255) DEFAULT NULL,
  `proto_action_conf` text,
  `sla_xml` text,
  `start_time` datetime DEFAULT NULL,
  `status` varchar(255) DEFAULT NULL,
  `wf_instance` mediumblob,
  PRIMARY KEY (`id`),
  KEY `I_WF_JOBS_DTYPE` (`bean_type`),
  KEY `I_WF_JOBS_END_TIME` (`end_time`),
  KEY `I_WF_JOBS_EXTERNAL_ID` (`external_id`),
  KEY `I_WF_JOBS_LAST_MODIFIED_TIME` (`last_modified_time`),
  KEY `I_WF_JOBS_STATUS` (`status`)

) 

关于如何在不导致锁定的情况下清除或删除表的任何线索,或者有没有办法在 mysql 中对表进行分区而不创建任何更多的键,以便我们可以直接删除分区

-贾比尔

4

0 回答 0