Rumah > pangkalan data > tutorial mysql > Bagaimana untuk menggugurkan borang 1TB dalam perpustakaan mysql

Bagaimana untuk menggugurkan borang 1TB dalam perpustakaan mysql

王林
Lepaskan: 2023-06-02 22:43:46
ke hadapan
1072 orang telah melayarinya

1. Kosongkan penimbal Kolam Penampan

Pada drop table, enjin innodb akan mengosongkan halaman blok data yang sepadan pada jadual dalam setiap contoh buffer pool, untuk mengelakkan kesan pada sistem , operasi pembersihan di sini sebenarnya bukan flush, tetapi mengalih keluar halaman yang terlibat daripada baris gilir flush. Tetapi semasa proses pengalihan keluar, proses pemadaman akan menahan kunci global setiap buffer pool, dan kemudian cari halaman yang sepadan dalam buffer pool ini untuk memadamkannya daripada flush list. Jika terdapat terlalu banyak halaman yang perlu dicari dan dipadamkan dalam buffer pool, masa traversal akan meningkat, yang akan menyebabkan operasi transaksi lain disekat, dan dalam kes yang teruk, pangkalan data mungkin dikunci.

(Kursus yang disyorkan: Tutorial MySQL)

Ada satu lagi perkara yang perlu anda perhatikan di sini Jika pangkalan data buffer pool ditetapkan kepada saiz yang besar, ia akan menyebabkan traversal masa untuk menjadi lebih lama. Apabila membersihkan buffer pool, ia juga termasuk pembersihan AHI yang mengandungi data jadual ini Fungsi AHI tidak akan dibincangkan di sini terutamanya apabila tahap b+tree menjadi lebih tinggi b+tree Carian lapisan demi lapisan, AHI boleh menanyakan terus halaman data yang sepadan berdasarkan keadaan carian tertentu, melangkau langkah penentududukan lapisan demi lapisan. Kedua, AHI akan menduduki 1/16 daripada saiz buffer pool Jika data jadual dalam talian tidak terlalu besar dan konkurensinya tidak sangat tinggi, anda tidak disyorkan untuk mematikan AHI fungsi

mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_adaptive_hash_index';
+----------------------------+-------+
| Variable_name                   | Value |
+----------------------------+-------+
| innodb_adaptive_hash_index | ON    |
+----------------------------+-------+
1 row in set (0.01 sec)


mysql> SET GLOBAL innodb_adaptive_hash_index=OFF;
Query OK, 0 rows affected (0.00 sec)


mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_adaptive_hash_index';
+----------------------------+-------+
| Variable_name                   | Value |
+----------------------------+-------+
| innodb_adaptive_hash_index | OFF   |
+----------------------------+-------+
1 row in set (0.01 sec)
Salin selepas log masuk

2 Padam fail data cakera yang sepadan ibd

Apabila memadamkan fail data, jika fail data terlalu besar, proses pemadaman akan menjana besar. bilangan IO dan mengambil lebih banyak masa, mengakibatkan cakera IOOverhead melambung, CPUBeban terlalu tinggi, menjejaskan pengendalian program lain. Rakan baik saya pernah memadamkan jadual 1TB daripada pangkalan data dalam talian Akibatnya, pangkalan data menjadi tidak responsif selama 20 minit, dan akhirnya pangkalan data ranap dan dimulakan semula.

Sekarang kita tahu bahawa drop table telah melakukan 2 perkara, kita harus mengoptimumkan 2 perkara di atas

Untuk mengosongkan penimbal Buffer Pool, untuk mengurangkan saiz buffer pool, Anda boleh menetapkan parameter innodb_buffer_pool_instances dengan munasabah untuk mengurangkan buffer pool masa pengimbasan senarai blok data, dan pada masa yang sama mematikan fungsi AHI

Dalam langkah 2, anda boleh dengan bijak gunakan ciri sambungan keras linux untuk menangguhkan pemadaman fail fizikal sebenar.

Apabila beberapa nama fail menghala ke INODE yang sama pada masa yang sama, nombor rujukan INODE ini ialah N>1, dan memadam mana-mana nama fail akan menjadi sangat pantas blok fail fizikal langsung belum Padam Ia hanya memadamkan penunjuk; apabila nombor rujukan INODE ialah N=1, memadamkan fail memerlukan mengosongkan semua blok data yang berkaitan dengan fail, jadi ia akan memakan masa yang lebih lama. ; jika

diberikan kepada pangkalan data Fail .ibd jadual mencipta pautan keras Apabila memadamkan jadual atau memadam fail fizikal, apa yang sebenarnya dipadamkan ialah penunjuk kepada fail fizikal. kelajuan tindak balas operasi pemadaman akan menjadi sangat pantas, kira-kira kurang daripada 1 saat

Berikut ialah demonstrasi operasi khusus

先创建表文件的硬链接
ln t_test.ibd t_test.ibd.bak
删除表
drop table t_test;
Salin selepas log masuk

Langkah terakhir ialah memadam fail fizikal dan lepaskan ruang cakera yang diduduki oleh fail Kemudian persoalan timbul Bagaimana jika anda memadam fail fizikal dengan anggun. Sudah tentu, perintah coreutils dalam set alat truncate

memerlukan anda untuk. pasang pakej perisian yang berkaitan dahulu

wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.29.tar.xz


使用非root进行解压
tar -xvJf coreutils-8.29.tar.xz
cd coreutils-8.29
./configure
make
使用root进行make install
Salin selepas log masuk
Selepas pemasangan, anda boleh menulis skrip untuk memadam fail besar dengan cara yang sangat elegan ,

bermakna, padam 10G setiap kali${i}G

#!/bin/bash


TRUNCATE=/usr/local/bin/truncate
for i in `seq 2194 -10 10 `; 
do 
  sleep 2
  $TRUNCATE -s ${i}G /data/mysql/t_test.ibd.hdlk 
done
rm -rf /data/mysql/t_test.ibd.hdlk ;
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk menggugurkan borang 1TB dalam perpustakaan mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan