何が大問題ですか? 長時間実行され、長時間コミットされないトランザクションは、大規模トランザクションと呼ばれます。 大企業の原因
大きな出来事の影響
大規模なトランザクションをクエリする方法 **注**: この記事のSQL操作はMySQLバージョン5.7に基づいています。 クエリ実行時間が 10 秒を超える場合を例に挙げます。 information\_schema.innodb\_trx から TIME\_TO\_SEC(timediff(now(),trx\_started))>10 となる \* を選択します。 大きな取引を避ける方法 一般的な解決策
mysql5.7 に基づくソリューション
付録 クエリトランザクション関連ステートメント **注**: SQL文はMySQL 5.7バージョンに基づいています # 実行中のすべてのトランザクションとその実行時間を照会します。 select t.\*,to\_seconds(now())-to\_seconds(t.trx\_started) idol\_time from INFORMATION\_SCHEMA.INNODB\_TRX t # トランザクションの詳細と実行されたSQLを照会する information\_schema.innodb\_trx a から now(),(UNIX\_TIMESTAMP(now()) - UNIX\_TIMESTAMP(a.trx\_started)) diff\_sec,b.id,b.user,b.host,b.db,d.SQL\_TEXT を選択し、information\_schema.innodb\_trx a を内部結合し information\_schema.PROCESSLIST b を生成します。 a.TRX\_MYSQL\_THREAD\_ID=b.id かつ b.command = 'Sleep' の場合 内部結合パフォーマンス\_schema.threads c ON b.id = c.PROCESSLIST\_ID 内部結合 performance\_schema.events\_statements\_current d ON d.THREAD\_ID = c.THREAD\_ID; # トランザクションによって実行されたすべての履歴SQLレコードをクエリする SELECT ps.id 'プロセスID'、 追伸:ユーザー様、 追伸:ホスト、 esh.EVENT_ID、 trx.trx_started、 esh.event\_name 'イベント名', esh.sql\_text 'SQL'、 追伸時間 から パフォーマンス\_SCHEMA.イベント\_ステートメント\_履歴 esh PERFORMANCE\_SCHEMA.threads th を esh.thread\_id = th.thread\_id に結合します information\_schema.PROCESSLIST ps を ps.id = th.processlist\_id に結合します。 LEFT JOIN information\_schema.innodb\_trx trx ON trx.trx\_mysql\_thread\_id = ps.id どこ trx.trx_id は NULL ではありません かつ ps.USER != 'SYSTEM\_USER' 注文する esh.EVENT_ID; # 単純なクエリトランザクションロック select \* from sys.innodb\_lock\_waits #トランザクションロックの詳細を照会するSELECT tmp.\*, c.SQL\_テキストブロッキング\_sql\_text、 p.HOST ブロッキング\_ホスト から ( 選択 r.trx_state 監視中のtrx_state、 r.trx_id 待機中のtrx_id、 r.trx\_mysql\_thread\_Id 待機中\_スレッド、 r.trx_query 待機クエリ、 b.trx_state ブロッキングtrx_state、 b.trx_id ブロッキングtrx_id、 b.trx\_mysql\_thread\_id ブロッキング\_スレッド、 b.trx_query ブロッキングクエリ から 情報\_schema.innodb\_lock\_waits w INNER JOIN information\_schema.innodb\_trx b ON b.trx\_id = w.blocking\_trx\_id INNER JOIN information\_schema.innodb\_trx r ON r.trx\_id = w.requesting\_trx\_id ) 一時、 情報\_schema.PROCESSLIST p、 パフォーマンス\_SCHEMA.イベント\_ステートメント\_現在のc、 PERFORMANCE\_SCHEMA.threads t どこ tmp.blocking_thread = p.id かつ t.thread_id = c.THREAD_ID かつ t.PROCESSLIST_ID = p.id 上記は、MySQL で大規模トランザクションを回避する方法と大規模トランザクションを解決する方法の詳細です。MySQL の大規模トランザクションの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: 単一マシン上での Tomcat の複数インスタンスの実装
>>: ReactプロジェクトでのTypeScriptの実装
Macでデータベースを操作する際に個人が遭遇するデータベース起動の問題の簡単な記録1. Apple-...
この記事では、例を使用して、MySQL ビューの一貫性を確保する方法 (チェック オプションを使用)...
目次1. インストール2.APi 3. react-beautiful-dnddemo 3.1dem...
目次序文始める序文サーバーのデフォルトの SSH ポート番号は通常 22 であるため、ほとんどのユー...
データベース接続のURLの詳細な説明と概要JDBC URL = プロトコル名 + サブプロトコル名 ...
この記事では、MySQL 8.0.13のインストールと設定のチュートリアルを参考までに紹介します。具...
序文2 つのテーブル内の同じフィールドの型が異なっていたり、エンコード タイプが異なっていたりするた...
1.VirtualBoxソフトウェアをダウンロードしてインストールするまず、VirtualBox の...
まず、Navicat for MySQL をダウンロードしてインストールする必要があります。正規版の...
目次1. テレポートの使用2. モーダルダイアログコンポーネントを完成させる3. コンポーネントのレ...
最初のステップはTypeScriptをグローバルにインストールすることですnpmを使用してインストー...
まず、href 属性と onclick イベントの実行順序について説明します。マウスが a タグをク...
まず、図をダウンロードしてください 1. まず、centos7に付属しているmariadbをアンイン...
VirtualBox をインストールした後、CentOS 7 をインストールします。ここでは詳細には...
設計意図ページを開発する際には、ページ上のナビゲーション メニューをクリックしたときにページを対応す...