我们运行 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 中对表进行分区而不创建任何更多的键,以便我们可以直接删除分区
-贾比尔