私たちは 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 でテーブルを分割する方法はありますか
-ジャビル