目次
1. バッファ プールをクリアする
ホームページ データベース mysql チュートリアル mysql ライブラリに 1TB フォームをドロップする方法

mysql ライブラリに 1TB フォームをドロップする方法

Jun 02, 2023 pm 10:43 PM
mysql

1. バッファ プールをクリアする

テーブルを削除すると、innodb エンジンは各 バッファ プール インスタンス内のテーブルをクリーンアップします。中間の対応するデータ ブロック ページについては、システムへの影響を避けるために、ここでのクリア操作は実際には flush ではありませんが、関連するページは flush キューから削除されます。 。ただし、削除プロセス中は、各 バッファ プール のグローバル ロックを保持し、# から削除するために、この バッファ プール 内で対応するページを検索します。 ##フラッシュリスト を削除します。 バッファ プール内で検索および削除する必要があるページが多すぎると、トラバース時間が増加し、他のトランザクション操作がブロックされ、深刻な場合にはデータベースがロックされる可能性があります。 (推奨コース: MySQL チュートリアル)

ここでもう 1 つ注意する必要があるのは、データベースの

バッファ プール

が大きい値に設定されている場合です。サイズが異なると、移動時間は変化します。 バッファ プールをクリーニングする場合、このテーブルのデータを含む AHI のクリーニングも含まれます。AHI の機能については、主に の場合にここでは説明しません。 b ツリー のレベルが高くなると、b ツリー によるレイヤーごとの検索を避けるために、AHI は特定の検索条件に基づいて対応するデータ ページを直接クエリできます。レイヤーごとの検索をスキップする レイヤーの配置手順。次に、AHI は バッファ プール サイズの 1/16 を占有します。オンライン テーブル データが特に大きくなく、同時実行性もそれほど高くない場合は、AHI を有効にすることはお勧めできません。 AHI 機能をオフにします。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">mysql&amp;gt; SHOW GLOBAL VARIABLES LIKE 'innodb_adaptive_hash_index'; +----------------------------+-------+ | Variable_name                   | Value | +----------------------------+-------+ | innodb_adaptive_hash_index | ON    | +----------------------------+-------+ 1 row in set (0.01 sec) mysql&amp;gt; SET GLOBAL innodb_adaptive_hash_index=OFF; Query OK, 0 rows affected (0.00 sec) mysql&amp;gt; SHOW GLOBAL VARIABLES LIKE 'innodb_adaptive_hash_index'; +----------------------------+-------+ | Variable_name                   | Value | +----------------------------+-------+ | innodb_adaptive_hash_index | OFF   | +----------------------------+-------+ 1 row in set (0.01 sec)</pre><div class="contentsignin">ログイン後にコピー</div></div>

2. 該当するディスク データ ファイルを削除します。 ibd

データ ファイルを削除するとき、データ ファイルが存在しない場合、大きすぎると、削除プロセスで大量の

IO

が生成され、より多くの時間が消費され、ディスク IO のオーバーヘッドが急増します。CPU の負荷が高すぎます。他のプログラムの動作に影響を与えます。私の友人がオンライン データベースから 1 TB のテーブルを削除したことがありますが、その結果、データベースは 20 分間応答しなくなり、最終的にはデータベースがクラッシュして再起動されました。 これで、

drop table

が 2 つのことを実行したことがわかりました。次に、上記の 2 つのことを最適化します。

Buffer Pool

バッファをクリアする際に、 バッファ プールのサイズを減らすには、innodb_buffer_pool_instances パラメータを適切に設定し、バッファ プールのデータ ブロック リストのスキャン時間を短縮し、# をオフにします。 ##AHIFunctionステップ 2 では、linux

のハード接続機能を巧みに使用して、実際の物理ファイルの削除を遅らせることができます。

複数のファイル名が同時に同じ INODE

を指している場合、この

INODE への参照の数は N&gt;1 であり、そのうちのいずれか 1 つを削除すると、ファイル名は非常に高速になります。直接の物理ファイル ブロックは削除されていないためです。ポインタが削除されただけです。INODE の参照番号が N=1 の場合、ファイルを削除するにはすべてのデータをクリアする必要があります。時間のかかる;データベース テーブルの .ibd

ファイルにハード リンクを作成すると、テーブルが削除されたときに、物理ファイルを削除する場合、実際に削除されるのは物理ファイルへのポインタなので、削除操作の応答速度は約1秒以内と非常に高速です。 #

1

2

3

4

先创建表文件的硬链接

ln t_test.ibd t_test.ibd.bak

删除表

drop table t_test;

ログイン後にコピー

最後のステップは、実際に物理ファイルを削除し、そのファイルが占有しているディスク領域を解放することです。次に問題は、物理ファイルを適切に削除する場合は、coreutils# をお勧めします。ツールセットの##truncate

コマンド

もちろん、最初に関連するソフトウェアをインストールする必要があります。パッケージ

1

2

3

4

5

6

7

8

9

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

ログイン後にコピー
がインストールされたら、大きなファイルを非常に削除するスクリプトを作成できます。 ${i}G は、10G

1

2

3

4

5

6

7

8

9

10

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

ログイン後にコピー
を削除するたびに意味します。

以上がmysql ライブラリに 1TB フォームをドロップする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPのビッグデータ構造処理スキル PHPのビッグデータ構造処理スキル May 08, 2024 am 10:24 AM

PHPのビッグデータ構造処理スキル

PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか? PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか? Jun 03, 2024 pm 08:11 PM

PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか?

PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか? PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか? Jun 03, 2024 pm 12:19 PM

PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか?

データベースにおける Java 列挙型のアプリケーション シナリオは何ですか? データベースにおける Java 列挙型のアプリケーション シナリオは何ですか? May 05, 2024 am 09:06 AM

データベースにおける Java 列挙型のアプリケーション シナリオは何ですか?

PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか? PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか? Jun 02, 2024 pm 02:26 PM

PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか?

MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 Dec 09, 2024 am 11:42 AM

MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法

PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか? PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか? Jun 02, 2024 pm 02:13 PM

PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか?

PHP 配列ページングのパフォーマンス最適化戦略 PHP 配列ページングのパフォーマンス最適化戦略 May 02, 2024 am 09:27 AM

PHP 配列ページングのパフォーマンス最適化戦略

See all articles