Rumah >pangkalan data >tutorial mysql >Bagaimana dengan cepat memadam jadual yang sangat besar dalam MySQL

Bagaimana dengan cepat memadam jadual yang sangat besar dalam MySQL

王林
王林ke hadapan
2023-05-28 16:55:134317semak imbas

Pemadaman pantas jadual yang sangat besar dalam MySQL

Jika anda memadamkan jadual besar secara langsung dalam MySQL, ia mungkin menyebabkan MySQL tergantung, yang mungkin memberi kesan negatif pada perniagaan anda. Prasyarat untuk memadamkan jadual yang sangat besar ialah jadual adalah ruang jadual bebas, supaya pemadaman berkesan.

Jadual mencipta pautan keras

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

Melakukan pemadaman jadual

Dalam Linux, setiap fail yang disimpan akan mempunyai Indeks Inode yang menghala ke fail Berbilang nama fail boleh dihantar Indeks Inode yang sama menunjuk ke fail storan yang sama.

Jika Indeks Inode yang dirujuk oleh nama fail juga dirujuk oleh nama fail lain, hanya rujukan antara nama fail dan Indeks Inode akan dipadamkan

Jika Indeks Inode dirujuk oleh nama fail ialah Jika ia tidak dirujuk oleh nama fail lain, padamkan rujukan antara nama fail dan Indeks Inode dan padamkan fail storan yang ditunjukkan oleh Indeks Inode.

Malah, ia hanya memadamkan rujukan fail kepada pay_bills.ibd Rujukan pay_bills.ibd_hdlk kami kepada fail fizikal masih wujud, jadi tiada operasi pemadaman peringkat OS akan dilakukan mengurangkan kesan pada fail MySQL.

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

Laksanakan pemadaman fail

Pasang alat truncate

# yum install coreutils -y

Laksanakan skrip pemadaman

#!/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

MySQL dengan cepat mengosongkan data jadual besar

MySQL memadam atau mengosongkan data jadual

Lima cara untuk mengosongkan data jadual

1 Buat asal pemulihan

2. pemadaman baris demi baris yang sangat perlahan dan tidak sesuai untuk memadamkan sejumlah besar data

3 struktur jadual dipadam bersama

4. Eksport struktur jadual dan laksanakannya semula; 5. Eksport semua struktur jadual pangkalan data dan laksanakan semula untuk mengosongkan semua jadual (selaras dengan 4)

Kosongkan sintaks data jadual

pangkas nama jadual jadual; (hanya struktur jadual dikekalkan, sangat cepat)

padam daripada nama jadual;

padam daripada nama jadual di mana nama lajur="value ";

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;

Atas ialah kandungan terperinci Bagaimana dengan cepat memadam jadual yang sangat besar dalam MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam