我们运行oozie并且过于频繁地安排作业会导致数据库快速增长,从而导致数据库速度变慢。
所以我们开始频繁清除记录并且随着时间的推移(即从表中删除*)引入了锁,这些锁再次开始导致应用程序变慢。
我们开始研究基于表中的start_time或end_time字段来对表进行分区的选项,但是当我们意识到我们无法在不是原始密钥的密钥上对mysql表进行分区时,我们遇到了死胡同。
示例表desc
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中对表进行分区而不创建任何其他键以便我们可以直接删除分区
-jabir