Heim > Datenbank > MySQL-Tutorial > Hauptteil

So löschen Sie eine Partition in MySQL

WBOY
Freigeben: 2022-03-09 15:59:45
Original
13924 Leute haben es durchsucht

In MySQL können Sie die alter-Anweisung mit „DROP PARTITION“ verwenden, um eine Partition zu löschen. Die Syntax lautet „ALTER TABLE 'Tabellenname' DROP PARTITION 'Partitionsname ' ".

So löschen Sie eine Partition in MySQL

Die Betriebsumgebung dieses Tutorials: Windows10-System, MySQL8.0.22-Version, Dell G3-Computer.

So löschen Sie eine Partition in MySQL

Die Syntax zum Löschen einer Partition lautet: ALTER TABLE 'Tabellenname' DROP PARTITION 'Partitionsname'

Wenn die Partitionsdaten leer sind, behalten Sie die Partition ohne zu löschen, bereinigen Sie einfach die Daten , der Befehl lautet wie folgt:

alter table bm_scenes_data_reminder truncate partition p20210104;
Nach dem Login kopieren

Löschen Sie die Partition

alter table bm_scenes_data_reminder drop partition p20210104;
Nach dem Login kopieren

Führen Sie nach dem Löschen die Anweisung zur Erstellung einer Ansichtstabelle aus. Sie können sehen, dass die Partition p20210104 nicht mehr vorhanden ist

Partition hinzufügen

##Wenn Sie die neu gelöschte Partition wieder hinzufügen möchten p20210104 Partition? was zu tun. Versuchen Sie zunächst, den Befehl zum Hinzufügen einer Partition direkt auszuführen

ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210104 VALUES LESS THAN (738159) ENGINE = InnoDB);
Nach dem Login kopieren
Nach dem Login kopieren

Die Ergebnisse sind wie folgt, was darauf hinweist, dass dies nicht möglich ist.

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>
Nach dem Login kopieren

##1 Schritt ist nicht durchführbar, die Eingabeaufforderung muss nach der letzten Partition erfolgen, die so hinzugefügt werden soll.

Wenn Sie also die Partition p20210104 wieder hinzufügen müssen (das heißt, Sie müssen eine Partition in der Mitte hinzufügen), können Sie nur alle Partitionen nach p20210104 zuerst löschen, dann die Partition p20210104 hinzufügen und danach die Partitionen wieder hinzufügen p20210104. Der Vorgang ist wie folgt:

##Löschen Sie zuerst alle Partitionen nach der 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;
Nach dem Login kopieren

##Fügen Sie die Partition p20210104 hinzu.

ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210104 VALUES LESS THAN (738159) ENGINE = InnoDB);
Nach dem Login kopieren
Nach dem Login kopieren

##Fügen Sie alle Partitionen nach der Partition p20210104 wieder hinzu dass die Partitionen wieder hinzugefügt werden. Diese Vorgangsmethode löscht jedoch alle Partitionsdaten nach der Partition p20210104. Bitte seien Sie in der offiziellen Online-Umgebung vorsichtig

Fall

Das System verfügt über eine Betriebssystemtabelle sys_log, die Partitionen vor 90 Tagen löschen kann Jeden Tag und gleichzeitig eine neue erstellen Für die Partition nach 4 Tagen (d. h. jeden Tag nach 4 Tagen eine Tabelle für die Partition erstellen) sind die Schritte wie folgt:

##Erstellen Sie eine neue normale Tabelle und Führen Sie es nur einmal aus

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);
Nach dem Login kopieren

##Ändern Sie es in eine Partitionstabelle und führen Sie es nur einmal aus, wobei eine Partition für die aktuelle Zeit und zukünftige zukünftige Partitionen übrig bleibt

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
Nach dem Login kopieren

##Führen Sie jeden Tag die folgenden Partitionsvorgänge aus, um eine Tagespartition hinzuzufügen. wie

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
);
Nach dem Login kopieren

## Geplante Aufgabenkonfiguration, Partitionsbereinigung und -erstellung einmal am Tag durchführen

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);
Nach dem Login kopieren

Empfohlenes Lernen:

MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo löschen Sie eine Partition in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!