序文:データベースの運用や保守の際には、リンクの総数がいくつあるか、アクティブなリンクがいくつあるか、実行に時間がかかりすぎるリンクはないかなど、データベースの接続状態に注意を払うことがよくあります。さまざまなデータベースの異常も、リンクの状態を通じて間接的に反映される可能性があります。特に、データベースがデッドロックしたり、ひどくスタックしたりした場合は、まずデータベースに異常なリンクがあるかどうかを確認し、これらの異常なリンクを削除する必要があります。この記事では、主にデータベース リンクを表示する方法と異常なリンクを削除する方法について説明します。 1. データベースリンクを表示データベース リンクを表示するために最もよく使用されるステートメントは show processlist です。これにより、データベース内に存在するスレッドのステータスを表示できます。通常のユーザーは現在のユーザーが開始したリンクのみを表示できますが、PROCESS グローバル権限を持つユーザーはすべてのユーザーのリンクを表示できます。 show processlist の結果の Info フィールドには、各ステートメントの最初の 100 文字のみが表示されます。さらに情報を表示する必要がある場合は、show full processlist を使用できます。同様に、information_schema.processlist テーブルを表示することで、データベース接続ステータス情報を表示できます。 # 通常のユーザーは、現在のユーザーによって開始されたリンクのみを表示できます。mysql> select user(); +--------------------+ | ユーザー() | +--------------------+ | テストユーザー@localhost | +--------------------+ セット内の 1 行 (0.00 秒) mysql> 権限を表示します。 +----------------------------------------------------------------------+ | testuser@% への権限付与 | +----------------------------------------------------------------------+ | 'testuser'@'%' に *.* の使用権限を付与 | | `testdb`.* に対する SELECT、INSERT、UPDATE、DELETE 権限を 'testuser'@'%' に付与します | +----------------------------------------------------------------------+ セット内の 2 行 (0.00 秒) mysql> プロセスリストを表示します。 +--------+-----------+-----------+---------+--------+---------+----------+------------------+ | ID | ユーザー | ホスト | db | コマンド | 時間 | 状態 | 情報 | +--------+-----------+-----------+---------+--------+---------+----------+------------------+ | 769386 | testuser | localhost | NULL | スリープ | 201 | | NULL | | 769390 | testuser | localhost | testdb | クエリ | 0 | 開始 | プロセスリストを表示 | +--------+-----------+-----------+---------+--------+---------+----------+------------------+ セット内の 2 行 (0.00 秒) mysql> information_schema.processlist から * を選択します。 +--------+-----------+-----------+---------+--------+----------+-----------+----------------------------------------------+ | ID | ユーザー | ホスト | DB | コマンド | 時間 | 状態 | 情報 | +--------+-----------+-----------+---------+--------+----------+-----------+----------------------------------------------+ | 769386 | testuser | localhost | NULL | スリープ | 210 | | NULL | | 769390 | testuser | localhost | testdb | クエリ | 0 | 実行中 | information_schema.processlist から * を選択 | +--------+-----------+-----------+---------+--------+----------+-----------+----------------------------------------------+ セット内の 2 行 (0.00 秒) # PROCESS 権限を付与すると、すべてのユーザーのリンクが表示されます。mysql> grant process on *.* to 'testuser'@'%'; クエリは正常、影響を受けた行は 0 行 (0.01 秒) mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> 権限を表示します。 +----------------------------------------------------------------------+ | testuser@% への権限付与 | +----------------------------------------------------------------------+ | *.* のプロセスを 'testuser'@'%' に許可 | | `testdb`.* に対する SELECT、INSERT、UPDATE、DELETE 権限を 'testuser'@'%' に付与します | +----------------------------------------------------------------------+ セット内の 2 行 (0.00 秒) mysql> プロセスリストを表示します。 +--------+----------+--------------------+---------+--------+---------+------------------+ | ID | ユーザー | ホスト | db | コマンド | 時間 | 状態 | 情報 | +--------+----------+--------------------+---------+--------+---------+------------------+ | 769347 | ルート | ローカルホスト | testdb | スリープ | 53 | | NULL | | 769357 | ルート | 192.168.85.0:61709 | NULL | スリープ | 521 | | NULL | | 769386 | testuser | localhost | NULL | スリープ | 406 | | NULL | | 769473 | testuser | localhost | testdb | クエリ | 0 | 開始 | プロセスリストを表示 | +--------+----------+--------------------+---------+--------+---------+------------------+ セット内の 4 行 (0.00 秒) show processlist の結果を通じて、各スレッド リンクの詳細情報を明確に把握できます。特定のフィールドの意味は比較的簡単に理解できます。各フィールドが何を表しているかの詳細な説明は次のとおりです。
データベース リンクが多すぎると、特定のユーザーまたは特定のステータスのリンクのみを確認したい場合など、有用な情報をフィルタリングするのが面倒になります。この時点で、show processlist を使用すると、必要のない情報が見つかります。この時点で、information_schema.processlist を使用してフィルタリングすると、はるかに簡単になります。次に、いくつかの一般的なフィルタリング要件を示します。 # 特定の ID のリンク情報のみを表示します。 select * from information_schema.processlist where id = 705207; # 特定のユーザーのリンクを除外する select * from information_schema.processlist where user = 'testuser'; # アイドル状態ではないリンクをすべて除外します。select * from information_schema.processlist where command != 'Sleep'; # アイドル時間が 600 秒を超えるリンクを除外します。select * from information_schema.processlist where command = 'Sleep' and time > 600; # 特定の状態のリンクを除外する select * from information_schema.processlist where state = 'Sending data'; # 特定のクライアント IP のリンクをフィルタリングします。select * from information_schema.processlist where host like '192.168.85.0%'; 2. データベースリンクを削除するデータベース リンクが異常な場合は、kill ステートメントを使用してリンクを強制終了できます。kill の標準構文は次のとおりです: KILL [CONNECTION | QUERY] processlist_id; KILL ではオプションの CONNECTION または QUERY 修飾子を使用できます。
リンクを削除する機能は SUPER 権限に依存します。
緊急事態が発生し、リンクを一括で削除する必要がある場合は、SQL を連結して削除ステートメントを取得し、それを実行できます。これは非常に便利です。リンクを削除するために使用できる SQL ステートメントをいくつか示します。 # 600 秒以上アイドル状態になっているリンクを強制終了し、それらを連結して kill ステートメントを取得します。select concat('KILL ',id,';') from information_schema.`processlist` ここで、command = 'Sleep'、time > 600; # 特定の状態のリンクを削除し、それらを連結して kill ステートメントを取得します。select concat('KILL ',id,';') from information_schema.`processlist` ここで、state = 'データを送信中'; information_schema.`processlist` から concat('KILL ',id,';') を選択します。 ここで、state = 'テーブル メタデータ ロックを待機しています'; # ユーザーが開始したリンクを強制終了し、kill ステートメントを連結します。select concat('KILL ',id,';') from information_schema.`processlist` ユーザー = 'testuser'; kill ステートメントは注意して使用する必要があることに注意してください。特に、このリンクが更新ステートメントまたはテーブル構造変更ステートメントを実行する場合、リンクを強制終了するには比較的長いロールバック操作が必要になることがあります。 要約:この記事では、データベース リンクを表示および削除する方法について説明します。将来的にデータベースに問題があると思われる場合は、できるだけ早くデータベース リンクの状態を確認できます。 上記は、MySQL リンクを表示し、異常なリンクを削除する方法の詳細です。MySQL リンクを表示し、異常なリンクを削除する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: CSS における XHTML タグの対応する属性と使用法
この記事ではクラスタの展開に関連する内容は紹介しませんバージョン制約Docker エンジン >...
VMware Workstation は、開発、テスト、デモンストレーション、展開のために仮想マシン...
JavaScriptでよく使われるいくつかの文字列メソッド文字列は読み取り専用データです。よく使用...
目次序文JavaScript find() メソッドJavaScript filter() メソッド...
この記事の例は MySQL 5.0 以降で実行されます。ユーザー権限を付与するための MySQL コ...
目次1. 現在のシステムにMySQLがインストールされているかどうかを確認する2. インストールされ...
1. ポート 80 が占有されているかどうかを確認します。通常、ポート 80 は Apache サー...
目次導入厳密モードの使用厳格モードの新機能例外を強制的にスローする変数の使用を簡素化する議論を単純化...
1. ダウンロード、例として8.0を取り上げますダウンロードアドレス: https://dev.my...
<iframe src="./ads_top_tian.html" all...
前の章では、高性能な MySQL に不可欠な、最適化されたデータ型の選択方法とインデックスの効率的な...
目次DOM処理配列方法要約するDOM処理DOM はドキュメントの構造化された表現を提供し、スクリプト...
Docker は、アプリケーションをより速く配信するのに役立つオープンソースのコンテナ エンジンです...
まず、CSS3 の相対的な長さの単位を見てみましょう (詳細なチュートリアルを参照してください)。相...
ダウンロード:ステップ 1: ウェブサイトを開きます (ダウンロードするには公式ウェブサイトにアクセ...