Inhaltsverzeichnis
MySQL Schnelles Löschen sehr großer Tabellen
Erstellen Sie einen festen Link zur Tabelle
Löschen der Tabelle
Dateilöschung ausführen
MySQL löscht schnell große Tabellendaten
Heim Datenbank MySQL-Tutorial So löschen Sie schnell eine sehr große Tabelle in MySQL

So löschen Sie schnell eine sehr große Tabelle in MySQL

May 28, 2023 pm 04:55 PM
mysql

MySQL Schnelles Löschen sehr großer Tabellen

Wenn Sie eine große Tabelle direkt in MySQL löschen, kann es dazu führen, dass MySQL hängen bleibt, was sich negativ auf Ihr Unternehmen auswirken kann. Voraussetzung für das Löschen einer sehr großen Tabelle ist, dass es sich bei der Tabelle um einen eigenständigen Tabellenbereich handelt, damit die Löschung wirksam ist.

# du -sh pay_bills.ibd 
175G        pay_bills.ibd
# 创建硬链接
# ln pay_bills.ibd pay_bills.ibd_hdlk
Nach dem Login kopieren

Löschen der Tabelle

Unter Linux verfügt jede Speicherdatei über einen Inode-Index, der auf die Datei verweist, und mehrere Dateinamen können über denselben Inode-Index auf dieselbe Speicherdatei verweisen.

Wenn der Inode-Index, auf den der Dateiname verweist, auch von anderen Dateinamen referenziert wird, wird nur die Referenz zwischen dem Dateinamen und dem Inode-Index gelöscht.

Wenn der Inode-Index, auf den der Dateiname verweist, nicht von einer anderen Datei referenziert wird Namen, entfernen Sie dann den Verweis zwischen dem Dateinamen und dem Inode-Index und löschen Sie die Speicherdatei, auf die der Inode-Index verweist.

Tatsächlich wird nur ein Dateiverweis auf pay_bills.ibd gelöscht. Unser pay_bills.ibd_hdlk-Verweis auf die physische Datei ist noch vorhanden, sodass kein Löschvorgang auf Betriebssystemebene durchgeführt wird und die E/A-Schwankung gering ist, was die Auswirkungen verringert auf MySQL.

mysql> drop table pay_bills;
Query OK, 0 rows affected (3.24 sec)
Nach dem Login kopieren

Dateilöschung ausführen

Truncate-Tool installieren

# yum install coreutils -y
Nach dem Login kopieren

Löschskript ausführen

#!/bin/bash
TRUNCATE=/usr/bin/truncate
# 从175G开始每次删除2G,最后如果脚本truncate后还剩下部分文件,使用rm删除
for i in `seq 175 -2 1`; do 
  $TRUNCATE -s ${i}G  pay_bills.ibd_hdlk
  sleep 1
done
rm -f pay_bills.ibd_hdlk
Nach dem Login kopieren

MySQL löscht schnell große Tabellendaten

Das Projekt wurde zum ersten Mal gestartet. Die für Leistungstests generierte Datenmenge war riesig, und es Es waren alles unbrauchbare Daten, aber einige müssen beibehalten werden. Oft ist es notwendig, die Daten systematisch zu bereinigen oder die nützlichen Daten herauszufiltern, bevor sie in die Tabelle eingefügt werden! Behalten Sie die Tabellenstruktur bei oder erstellen Sie die Tabelle neu (exportieren Sie die Tabellenstruktur in die Datenbank) und führen Sie die SQL-Anweisung erneut aus.

MySQL löscht oder löscht Tabellendaten

1. Löscht alle Daten, behält die Tabellenstruktur bei und kann die Wiederherstellung nicht rückgängig machen. Das Löschen von Zeilen ist extrem langsam.

3. Löschen Sie die Tabelle, Daten und Tabellenstruktur werden zusammen gelöscht.

5. Exportieren Sie alle Tabellenstrukturen der Datenbank, führen Sie sie erneut aus und löschen Sie alle Tabellen (Konsistent mit 4).

Tabellendatensyntax löschen Tabellenname;

aus Tabellenname löschen, wobei Spaltenname = „Wert“

DROP `t_product_events` IF EXIST;
CREATE TABLE `t_product_events` (
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '事件ID',
`level` int(11) NULL DEFAULT NULL,
`product_id` bigint(20) NOT NULL COMMENT '产品类型ID',
`identifier` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '事件名称',
`description` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '事件描述',
`type` int(11) NOT NULL COMMENT '事件类型,0:info(信息)、1:alert(告警)、2:error(故障)',
`ref_id` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '引入模板时有意义',
`original_required` tinyint(2) NOT NULL,
`update_required` tinyint(2) NOT NULL DEFAULT 0 COMMENT '是否是标准功能的必选事件,0:可选,1:必选',
`custom` tinyint(2) NOT NULL COMMENT '0:模板导入,1:自定义',
`method` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '事件对应的方法名称(根据identifier生成)',
`create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0),
`ref` bigint(20) NULL DEFAULT NULL,
`related` int(11) NULL DEFAULT 0 COMMENT '被预发布或者已发布关联个数',
`copyright` tinyint(2) NULL DEFAULT 0 COMMENT '是否发布过, 1 发布过 0未发布',
`prerelease` tinyint(2) NULL DEFAULT 0 COMMENT '是否预发布过, 1 预发布过 0未预发布',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_product_id`(`product_id`) USING BTREE COMMENT '查询优化'
) ENGINE = InnoDB AUTO_INCREMENT = 497560 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '产品类型事件表' ROW_FORMAT = Compact;
Nach dem Login kopieren
ist

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

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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHPs Fähigkeiten zur Verarbeitung von Big-Data-Strukturen PHPs Fähigkeiten zur Verarbeitung von Big-Data-Strukturen May 08, 2024 am 10:24 AM

PHPs Fähigkeiten zur Verarbeitung von Big-Data-Strukturen

Wie optimiert man die MySQL-Abfrageleistung in PHP? Wie optimiert man die MySQL-Abfrageleistung in PHP? Jun 03, 2024 pm 08:11 PM

Wie optimiert man die MySQL-Abfrageleistung in PHP?

Wie verwende ich MySQL-Backup und -Wiederherstellung in PHP? Wie verwende ich MySQL-Backup und -Wiederherstellung in PHP? Jun 03, 2024 pm 12:19 PM

Wie verwende ich MySQL-Backup und -Wiederherstellung in PHP?

Wie füge ich mit PHP Daten in eine MySQL-Tabelle ein? Wie füge ich mit PHP Daten in eine MySQL-Tabelle ein? Jun 02, 2024 pm 02:26 PM

Wie füge ich mit PHP Daten in eine MySQL-Tabelle ein?

Welche Anwendungsszenarien gibt es für Java-Aufzählungstypen in Datenbanken? Welche Anwendungsszenarien gibt es für Java-Aufzählungstypen in Datenbanken? May 05, 2024 am 09:06 AM

Welche Anwendungsszenarien gibt es für Java-Aufzählungstypen in Datenbanken?

So beheben Sie den Fehler „mysql_native_password nicht geladen' unter MySQL 8.4 So beheben Sie den Fehler „mysql_native_password nicht geladen' unter MySQL 8.4 Dec 09, 2024 am 11:42 AM

So beheben Sie den Fehler „mysql_native_password nicht geladen' unter MySQL 8.4

Wie verwende ich gespeicherte MySQL-Prozeduren in PHP? Wie verwende ich gespeicherte MySQL-Prozeduren in PHP? Jun 02, 2024 pm 02:13 PM

Wie verwende ich gespeicherte MySQL-Prozeduren in PHP?

Strategien zur Leistungsoptimierung für PHP-Array-Paging Strategien zur Leistungsoptimierung für PHP-Array-Paging May 02, 2024 am 09:27 AM

Strategien zur Leistungsoptimierung für PHP-Array-Paging

See all articles