Maison > Article > base de données > Comment supprimer une partition dans MySQL
Dans MySQL, vous pouvez utiliser l'instruction alter avec "DROP PARTITION" pour supprimer une partition. La fonction de "DROP PARTITION" est de supprimer la partition spécifiée. La syntaxe est "ALTER TABLE 'nom de la table' DROP PARTITION 'nom de la partition. '".
L'environnement d'exploitation de ce tutoriel : système windows10, version mysql8.0.22, ordinateur Dell G3.
La syntaxe pour supprimer une partition est : ALTER TABLE 'nom de la table' DROP PARTITION 'nom de la partition'
Effacer les données de la partition sont vides, conserver la partition sans la supprimer, nettoyer simplement les données , la commande est la suivante
alter table bm_scenes_data_reminder truncate partition p20210104;
Supprimez la partition
alter table bm_scenes_data_reminder drop partition p20210104;
Exécutez l'instruction de création de table de vue après la suppression, vous pouvez voir que la partition p20210104 a disparu
Ajouter une partition
##Si vous souhaitez rajouter la partition nouvellement supprimée partition p20210104 ? ce qu'il faut faire. Essayez d'abord d'exécuter directement la commande d'ajout de partition
ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210104 VALUES LESS THAN (738159) ENGINE = InnoDB);
Les résultats sont les suivants, indiquant que ce n'est pas réalisable.
mysql> ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210104 VALUES LESS THAN (738159) ENGINE = InnoDB); ERROR 1481 (HY000): MAXVALUE can only be used in last partition definition mysql>
##1 l'étape n'est pas réalisable, l'invite doit être après la dernière partition pour ajouter comme ça.
Donc, si vous devez rajouter la partition p20210104 (c'est-à-dire que vous devez ajouter une partition au milieu), vous ne pouvez d'abord supprimer que toutes les partitions après p20210104, puis ajouter la partition p20210104, puis rajouter les partitions après p20210104. L'opération est la suivante :
##Supprimez d'abord toutes les partitions après la partition p20210104
ALTER TABLE bm_scenes_data_reminder drop PARTITION p20210105; ALTER TABLE bm_scenes_data_reminder drop PARTITION p20210106; ALTER TABLE bm_scenes_data_reminder drop PARTITION p20210107; ALTER TABLE bm_scenes_data_reminder drop PARTITION p20210108; ALTER TABLE bm_scenes_data_reminder drop PARTITION p20210109; ALTER TABLE bm_scenes_data_reminder drop PARTITION p20210110; ALTER TABLE bm_scenes_data_reminder drop PARTITION future;
##Ajoutez la partition p20210104
ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210104 VALUES LESS THAN (738159) ENGINE = InnoDB);
##Ajoutez toutes les partitions après la partition p20210104
ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210105 VALUES LESS THAN (738160) ENGINE = InnoDB); ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210106 VALUES LESS THAN (738161) ENGINE = InnoDB); ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210107 VALUES LESS THAN (738162) ENGINE = InnoDB); ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210108 VALUES LESS THAN (738163) ENGINE = InnoDB); ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210109 VALUES LESS THAN (738164) ENGINE = InnoDB); ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210110 VALUES LESS THAN (738165) ENGINE = InnoDB); ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION future VALUES LESS THAN MAXVALUE ENGINE = InnoDB);
Enfin, vérifiez le ddl et trouvez que les partitions sont rajoutées. Cependant, cette méthode d'opération supprimera toutes les données de partition après la partition p20210104. Veuillez être prudent dans l'environnement en ligne officiel
Cas
Le système dispose d'une table de système d'exploitation sys_log, qui peut supprimer des partitions il y a 90 jours. chaque jour et créez-en une nouvelle en même temps. Pour la partition après 4 jours (c'est-à-dire créer une table pour la partition après 4 jours chaque jour), les étapes sont les suivantes :
##Créez une nouvelle table ordinaire et exécutez-le une seule fois
CREATE TABLE `sys_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `begin_time` datetime DEFAULT NULL COMMENT '开始时间', `end_time` datetime DEFAULT NULL COMMENT '结束时间', `spend_mills` int(11) DEFAULT NULL COMMENT '运行时长,单位ms', `username` varchar(100) DEFAULT NULL COMMENT '用户id', `log_status` int(11) NOT NULL DEFAULT '0' COMMENT '运行状态,[0]成功[1]失败', `code` int(11) NOT NULL DEFAULT '0' COMMENT '错误码', `remote_addr` varchar(50) DEFAULT '' COMMENT '远程地址', `request_uri` varchar(255) DEFAULT NULL COMMENT '请求路径', `user_agent` text COMMENT '用户代理', `req_data` text NOT NULL COMMENT '请求参数', `resp_data` longtext NOT NULL COMMENT '返回结果', PRIMARY KEY (`id`) USING BTREE, KEY `idx_log_begintime` (`begin_time`) USING BTREE COMMENT '系统日志的beginTime字段索引' ) ENGINE=Innodb DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC
##Modifiez-le dans une table de partition et exécutez-le une seule fois, en laissant une partition pour l'heure actuelle et les futures partitions futures
ALTER TABLE `sys_log` DROP PRIMARY KEY, ADD PRIMARY KEY(`id`,`begin_time`); alter table sys_log partition by RANGE (to_days(begin_time)) ( PARTITION p20210816 VALUES LESS THAN (738383), PARTITION future VALUES LESS THAN MAXVALUE );
##Effectuez les opérations de partition suivantes chaque jour pour ajouter une partition d'une journée, tels que
ALTER TABLE sys_log drop PARTITION future; ALTER TABLE sys_log ADD PARTITION (PARTITION p20210817 VALUES LESS THAN (738384) ENGINE = InnoDB); ALTER TABLE sys_log ADD PARTITION (PARTITION p20210818 VALUES LESS THAN (738385) ENGINE = InnoDB); ALTER TABLE sys_log ADD PARTITION (PARTITION p20210819 VALUES LESS THAN (738386) ENGINE = InnoDB); ALTER TABLE sys_log ADD PARTITION (PARTITION future VALUES LESS THAN MAXVALUE ENGINE = InnoDB);
## Configuration des tâches planifiées, effectuer le nettoyage et la création de partitions une fois par jour
30 4 * * * /bin/python /home/testuser/SyslogPartitionClear.py >/dev/null 2>&1
Apprentissage recommandé : Tutoriel vidéo mysql
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!