MySQL のデッドロック チェックとデッドロック除去の例の詳細な説明

MySQL のデッドロック チェックとデッドロック除去の例の詳細な説明

1. クエリプロセス

プロセスリストを表示

2. 対応するプロセスを照会し、IDを強制終了します。

検証(強制終了後にロックが残っているかどうかを確認)

2. テーブルがロックされているかどうかを確認する

In_use > 0 の OPEN TABLES を表示します。

例:

新しいセッションを作成し、次のディスプレイロックの例を実行します。

テーブル account_data.account READ をロックします。
スリープ(160)を選択します。
テーブル account_data.account のロックを解除します。

別のセッションを開いて、ロック テーブルの状態を確認します。

mysql> In_use > 0 の場合の OPEN TABLES を表示します。
+--------------+---------+--------+-------------+
| データベース | テーブル | 使用中 | 名前がロックされています |
+--------------+---------+--------+-------------+
| アカウントデータ | アカウント | 1 | 0 |
+--------------+---------+--------+-------------+
セット内の 1 行 (0.00 秒)

mysql> information_schema.innodb_locks\G から * を選択します。
空のセット、警告 1 (0.00 秒)

エラー: 
クエリが指定されていません

mysql> プロセスリストを表示\G;
************************** 1. 行 ****************************
  識別子: 5
 ユーザー: root
 ホスト: 192.168.0.206:64294
  デシベル: NULL
コマンド: スリープ
 時間: 4051
 州: 
 情報: NULL
************************** 2. 行 ****************************
  識別子: 8
 ユーザー: root
 ホスト: 192.168.0.206:64297
  デシベル: NULL
コマンド: スリープ
 時間: 4042
 州: 
 情報: NULL
************************** 3. 行 ****************************
  識別子: 10
 ユーザー: root
 ホスト: ローカルホスト
  デシベル: NULL
コマンド: クエリ
 時間: 0
 状態: 開始
 情報: プロセスリストを表示
************************** 4. 行 ****************************
  識別子: 19
 ユーザー: root
 ホスト: 192.168.0.206:54603
  db:アカウントデータ
コマンド: スリープ
 時間: 245
 州: 
 情報: NULL
************************** 5. 行 ****************************
  識別子: 20
 ユーザー: root
 ホスト: 192.168.0.206:54604
  db:情報スキーマ
コマンド: クエリ
 時間: 20
 状態: ユーザーの睡眠
 情報: スリープを選択(160)
セット内の行数は 5 です (0.00 秒)

エラー: 
クエリが指定されていません

マイSQL>

3. 5.5 では、information_schema ライブラリ (innoDB エンジン) に 3 つのロック テーブルが追加されました。

innodb_trx ## 現在実行中のすべてのトランザクション

innodb_locks ## 現在のロック

innodb_lock_waits ## ロック待機間の対応

これら 3 つのテーブルの構造を見てみましょう。

[email protected] : information_schema 13:28:38> desc innodb_locks;
+————-+————————+——–+————+——-+
| フィールド | タイプ | Null | キー | デフォルト | 追加 |
+————-+————————+——–+————+——-+
| lock_id | varchar(81) | NO | | | |#ロックID
| lock_trx_id | varchar(18) | NO | | | |#ロックを所有するトランザクションID
| lock_mode | varchar(32) | NO | | | |#ロック モード | lock_type | varchar(32) | NO | | | |#ロック タイプ | lock_table | varchar(1024) | NO | | | |#ロックされたテーブル | lock_index | varchar(1024) | YES | | NULL | |#ロックされたインデックス | lock_space | bigint(21) unsigned | YES | | NULL | |#ロックされたテーブル領域番号 | lock_page | bigint(21) unsigned | YES | | NULL | |#ロックされたページ番号 | lock_rec | bigint(21) unsigned | YES | | NULL | |#ロックされたレコード番号 | lock_data | varchar(8192) | YES | | NULL | |#ロックされたデータ+————-+——————+——–+————+————-+
セット内の行数は 10 です (0.00 秒)
 
[email protected]:information_schema 13:28:56>desc innodb_lock_waits;
+——————-+————-+——–+————+——-+
| フィールド | タイプ | Null | キー | デフォルト | 追加 |
+——————-+————-+——–+————+——-+
| requesting_trx_id | varchar(18) | NO | | | |#ロックを要求するトランザクションID
| requested_lock_id | varchar(81) | NO | | | |#要求されたロックのロックID
| blocking_trx_id | varchar(18) | NO | | | |#現在ロックを所有しているトランザクションID
| blocking_lock_id | varchar(81) | NO | | | |#現在のロックのロックID
+——————-+————-+——–+————+——-+
セット内の 4 行 (0.00 秒)
 
[email protected] : information_schema 13:29:05> desc innodb_trx ;
+————————-+————————+——–+————————+——-+
| フィールド | タイプ | Null | キー | デフォルト | 追加 |
+————————-+————————+——–+————————+——-+
| trx_id | varchar(18) | NO | | | |#トランザクションID
| trx_state | varchar(13) | NO | | | |#トランザクションステータス:
| trx_started | datetime | NO | | 0000-00-00 00:00:00 | |#トランザクション開始時刻;
| trx_requested_lock_id | varchar(81) | はい | | NULL | |#innodb_locks.lock_id
| trx_wait_started | datetime | YES | | NULL | |#トランザクション開始待機時間 | trx_weight | bigint(21) unsigned | NO | | 0 | |#
| trx_mysql_thread_id | bigint(21) unsigned | NO | | 0 | |#トランザクションスレッドID
| trx_query | varchar(1024) | YES | | NULL | |#特定の SQL ステートメント| trx_operation_state | varchar(64) | YES | | NULL | |#トランザクションの現在の操作ステータス| trx_tables_in_use | bigint(21) unsigned | NO | | 0 | |#トランザクションで使用されているテーブルの数| trx_tables_locked | bigint(21) unsigned | NO | | 0 | |#トランザクションが保持するロックの数| trx_lock_structs | bigint(21) unsigned | NO | | 0 | |#
| trx_lock_memory_bytes | bigint(21) unsigned | NO | | 0 | |#トランザクションロックメモリサイズ (B)
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
| trx_adaptive_hash_timeout | bigint(21) 符号なし | NO | | 0 | |#
+————————-+————————+——–+————————+——-+
セット内の行数は 22 行 (0.01 秒)

ロックされた取引を表示する

INFORMATION_SCHEMA.INNODB_LOCKS から * を選択します。

ロックを待機しているトランザクションを表示する

INFORMATION_SCHEMA.INNODB_LOCK_WAITS から * を選択します。

ロックをブロックするスレッド情報を表示する

3.1 show processlistを使用して表示する

3.2 show engine innodb statusを使用して直接表示する

------------ 
取引 
------------ 
Trx ID カウンター 4131 
トランザクションの n:o < 4119 のパージが完了しました。n:o < 0 の状態を元に戻します: 実行中ですがアイドル状態です 
履歴リストの長さ 126 
各セッションのトランザクションのリスト: 
---トランザクション0、開始されていません 
MySQL スレッド ID 2、OS スレッド ハンドル 0x7f953ffff700、クエリ ID 115 localhost root init 
エンジンの InnoDB ステータスを表示 
---トランザクション 4130、アクティブ 41 秒開始インデックス読み取り 
使用中の MySQL テーブル 1、ロックされているテーブル 1 
LOCK WAIT 2 ロック構造体、ヒープ サイズ 360、1 行ロック 
MySQL スレッド ID 4、OS スレッド ハンドル 0x7f953ff9d700、クエリ ID 112 ローカルホスト ルート更新中 
empno=7788 の emp から削除 
------- TRX はこのロックが許可されるまで 41 秒待機しています: ## 41 秒待機しました 
レコード ロック スペース ID 16 ページ番号 3 n ビット 88 テーブル `test`.`emp` のインデックス `PRIMARY` trx ID 4130 lock_mode X はレコードをロックしますが、ギャップ待機はロックしません 
レコード ロック、ヒープ番号 9 物理レコード: n_fields 10、コンパクト フォーマット、情報ビット 0 ## スレッド 4 は、test.emp、ページ番号 = 3 の主キーに X ロックを追加するのを待機しています。 
 0: 長さ 4; 16 進数 80001e6c; asc l;; 
 1: 長さ 6; 16 進数 000000001018; 昇順 ;; 
 2: 長さ 7; 16 進数 91000001420084; asc B ;; 
 3: 長さ 5; 16 進数 53434f5454; 昇順 SCOTT;; 
 4: 長さ 7; 16 進数 414e414c595354; asc ANALYST;; 
 5: 長さ 4; 16 進数 80001d8e; asc ;; 
 6: 長さ 4; 16 進数 208794f0; 昇順;; 
 7: 長さ 4; 16 進数 80000bb8; 昇順 ;; 
 8: SQL NULL; 
 9: 長さ 4; 16 進数 80000014; 昇順 ;; 
 
------------------ 
---トランザクション 4129、アクティブ 45 秒開始インデックス読み取り 
使用中の MySQL テーブル 1、ロックされているテーブル 1 
LOCK WAIT 2 ロック構造体、ヒープ サイズ 360、1 行ロック 
MySQL スレッド ID 7、OS スレッド ハンドル 0x7f953ff6c700、クエリ ID 111 ローカルホスト ルート更新中 
empno=7788 で emp set sal=3500 を更新します 
------- TRX はこのロックが許可されるまで 45 秒待機しています: ## 45 秒待機しました 
レコード ロック スペース ID 16 ページ番号 3 n ビット 88 テーブル `test`.`emp` のインデックス `PRIMARY` trx ID 4129 lock_mode X はレコードをロックしますが、ギャップ待機はロックしません 
レコード ロック、ヒープ番号 9 物理レコード: n_fields 10、コンパクト フォーマット、情報ビット 0 ## スレッド 7 は、test.emp、ページ番号 = 3 の主キーに X ロックを追加するのを待機しています。 
 0: 長さ 4; 16 進数 80001e6c; asc l;; 
 1: 長さ 6; 16 進数 000000001018; 昇順 ;; 
 2: 長さ 7; 16 進数 91000001420084; asc B ;; 
 3: 長さ 5; 16 進数 53434f5454; 昇順 SCOTT;; 
 4: 長さ 7; 16 進数 414e414c595354; asc ANALYST;; 
 5: 長さ 4; 16 進数 80001d8e; asc ;; 
 6: 長さ 4; 16 進数 208794f0; 昇順;; 
 7: 長さ 4; 16 進数 80000bb8; 昇順 ;; 
 8: SQL NULL; 
 9: 長さ 4; 16 進数 80000014; 昇順 ;; 
 
------------------ 
---トランザクション 4128、アクティブ 51 秒 
2 つのロック構造体、ヒープ サイズ 360、1 つの行ロック 
MySQL スレッド ID 3、OS スレッド ハンドル 0x7f953ffce700、クエリ ID 110 ローカルホスト ルートのクリーンアップ中

主な根本原因は依然として thread=3 によって引き起こされていることはわかっていますが、この結果は innodb ステータスからは分析できません。

上記から、スレッド 4 とスレッド 7 の両方が、test.emp、ページ番号 = 3 のプライマリ キーに X ロックを追加するのを待機していることがわかります。ただし、スレッド 7 は 45 秒間待機し、スレッド 4 は 41 秒間待機します。ロックはスレッド 7 よりも後で適用されるため、スレッド 7 がスレッド 4 をブロックしたことがわかります。スレッド 7 が待機している理由については、ここでは根本的な原因を分析できません。

3.3 mysqladmin debugを使用して表示する

# mysqladmin -S /tmp/mysql3306.sock デバッグ

エラー ログには次の内容が表示されます:

スレッド database.table_name ロック/待機中 Lock_type 
 
 
3 test.t3 ロック - 読み取り 低優先度読み取りロック 
7 test.emp ロック済み - 書き込み 優先度の高い書き込みロック

この方法では、スレッド ID=3 と 7 がブロッカーであることがわかりますが、スレッド 7 もスレッド ID=3 によってブロックされていると判断するにはまだ正確さが足りません。

3.4 innodb_lock_monitorを使用してブロッキングロックスレッドを取得する

MySQL [test]> CREATE TABLE innodb_lock_monitor (a INT) ENGINE=INNODB; ## 任意のデータベースにこのテーブルを作成すると、ロックモニターが有効になります 
クエリは正常、影響を受けた行は 0 行、警告は 1 件 (0.07 秒) 
 
MySQL [テスト]> 警告を表示\G 
************************** 1. 行 **************************** 
 レベル: 警告 
 コード: 131 
メッセージ: テーブル名 innodb_lock_monitor を使用して診断出力を有効にすることは非推奨であり、将来のリリースで削除される可能性があります。INFORMATION_SCHEMA または PERFORMANCE_SCHEMA テーブルを使用するか、SET GLOBAL innodb_status_output=ON を使用してください。 
セット内の 1 行 (0.00 秒)

注: これにより 5.6 では警告が発生しますが、使用には影響しません。

次に、show engine innodb status を使用して以下を表示します。

------------ 
取引 
------------ 
Trx ID カウンター 4667 
トランザクションの n:o < 4659 のパージが完了しました。n:o < 0 の状態を元に戻します: 実行中ですがアイドル状態です 
履歴リストの長さ 138 
各セッションのトランザクションのリスト: 
---トランザクション0、開始されていません 
MySQL スレッド ID 9、OS スレッド ハンドル 0x7f813c5f7700、クエリ ID 152 localhost root init 
エンジンの InnoDB ステータスを表示 
---トランザクション 4663、アクティブ 78 秒開始インデックス読み取り 
使用中の MySQL テーブル 1、ロックされているテーブル 1 
LOCK WAIT 2 ロック構造体、ヒープ サイズ 360、1 行ロック 
MySQL スレッド ID 4、OS スレッド ハンドル 0x7f813c628700、クエリ ID 149 ローカルホスト ルート更新中 
empno=7788 の emp から削除 
------- TRX はこのロックが許可されるまで 78 秒待機しています: ## 78 秒待機しました 
レコード ロック スペース ID 16 ページ番号 3 n ビット 88 テーブル `test`.`emp` のインデックス `PRIMARY` trx ID 4663 lock_mode X はレコードをロックしますが、ギャップ待機はロックしません 
レコード ロック、ヒープ番号 9 物理レコード: n_fields 10、コンパクト フォーマット、情報ビット 0 ## スレッド 4 は、test.emp、ページ番号 = 3 の主キーに X ロックを追加するのを待機しています。 
 0: 長さ 4; 16 進数 80001e6c; asc l;; 
 1: 長さ 6; 16 進数 000000001018; 昇順 ;; 
 2: 長さ 7; 16 進数 91000001420084; asc B ;; 
 3: 長さ 5; 16 進数 53434f5454; 昇順 SCOTT;; 
 4: 長さ 7; 16 進数 414e414c595354; asc ANALYST;; 
 5: 長さ 4; 16 進数 80001d8e; asc ;; 
 6: 長さ 4; 16 進数 208794f0; 昇順;; 
 7: 長さ 4; 16 進数 80000bb8; 昇順 ;; 
 8: SQL NULL; 
 9: 長さ 4; 16 進数 80000014; 昇順 ;; 
 
------------------ 
TABLE LOCK テーブル `test`.`emp` trx id 4663 ロック モード IX ## 主キー行に X ロックを追加する前に、まずテーブルにインテンション ロック IX を追加します。 
レコード ロック スペース ID 16 ページ番号 3 n ビット 88 テーブル `test`.`emp` のインデックス `PRIMARY` trx ID 4663 lock_mode X はレコードをロックしますが、ギャップ待機はロックしません 
レコード ロック、ヒープ番号 9 物理レコード: n_fields 10、コンパクト フォーマット、情報ビット 0 
 0: 長さ 4; 16 進数 80001e6c; asc l;; 
 1: 長さ 6; 16 進数 000000001018; 昇順 ;; 
 2: 長さ 7; 16 進数 91000001420084; asc B ;; 
 3: 長さ 5; 16 進数 53434f5454; 昇順 SCOTT;; 
 4: 長さ 7; 16 進数 414e414c595354; asc ANALYST;; 
 5: 長さ 4; 16 進数 80001d8e; asc ;; 
 6: 長さ 4; 16 進数 208794f0; 昇順;; 
 7: 長さ 4; 16 進数 80000bb8; 昇順 ;; 
 8: SQL NULL; 
 9: 長さ 4; 16 進数 80000014; 昇順 ;; 
 
---トランザクション 4662、アクティブ 81 秒開始インデックス読み取り 
使用中の MySQL テーブル 1、ロックされているテーブル 1 
LOCK WAIT 2 ロック構造体、ヒープ サイズ 360、1 行ロック 
MySQL スレッド ID 7、OS スレッド ハンドル 0x7f813c5c6700、クエリ ID 148 ローカルホスト ルート更新中 
empno=7788 で emp set sal=3500 を更新します 
------- TRX はこのロックが許可されるまで 81 秒待機しています: ## 81 秒待機しました 
レコード ロック スペース ID 16 ページ番号 3 n ビット 88 インデックス `PRIMARY`、テーブル `test`.`emp` trx ID 4662 lock_mode X はレコードをロックしますが、ギャップ待機はロックしません 
レコード ロック、ヒープ番号 9 物理レコード: n_fields 10、コンパクト フォーマット、情報ビット 0 ## スレッド 7 は、test.emp、ページ番号 = 3 の主キーに X ロックを追加するのを待機しています。 
 0: 長さ 4; 16 進数 80001e6c; asc l;; 
 1: 長さ 6; 16 進数 000000001018; 昇順 ;; 
 2: 長さ 7; 16 進数 91000001420084; asc B ;; 
 3: 長さ 5; 16 進数 53434f5454; 昇順 SCOTT;; 
 4: 長さ 7; 16 進数 414e414c595354; asc ANALYST;; 
 5: 長さ 4; 16 進数 80001d8e; asc ;; 
 6: 長さ 4; 16 進数 208794f0; 昇順;; 
 7: 長さ 4; 16 進数 80000bb8; 昇順 ;; 
 8: SQL NULL; 
 9: 長さ 4; 16 進数 80000014; 昇順 ;; 
 
------------------ 
TABLE LOCK テーブル `test`.`emp` trx id 4662 ロック モード IX ## 主キー行に X ロックを追加する前に、まずテーブルにインテンション ロック IX を追加します。 
レコード ロック スペース ID 16 ページ番号 3 n ビット 88 インデックス `PRIMARY`、テーブル `test`.`emp` trx ID 4662 lock_mode X はレコードをロックしますが、ギャップ待機はロックしません 
レコード ロック、ヒープ番号 9 物理レコード: n_fields 10、コンパクト フォーマット、情報ビット 0 
 0: 長さ 4; 16 進数 80001e6c; asc l;; 
 1: 長さ 6; 16 進数 000000001018; 昇順 ;; 
 2: 長さ 7; 16 進数 91000001420084; asc B ;; 
 3: 長さ 5; 16 進数 53434f5454; 昇順 SCOTT;; 
 4: 長さ 7; 16 進数 414e414c595354; asc ANALYST;; 
 5: 長さ 4; 16 進数 80001d8e; asc ;; 
 6: 長さ 4; 16 進数 208794f0; 昇順;; 
 7: 長さ 4; 16 進数 80000bb8; 昇順 ;; 
 8: SQL NULL; 
 9: 長さ 4; 16 進数 80000014; 昇順 ;; 
 
---トランザクション 4615、アクティブ 1579 秒、InnoDB 1222 内でスレッドが宣言されました 
使用中の MySQL テーブル 2、ロックされている 0 
2 つのロック構造体、ヒープ サイズ 360、1 つの行ロック 
MySQL スレッド ID 3、OS スレッド ハンドル 0x7f813c659700、クエリ ID 147 localhost root データ送信 
select count(*) from t3 a,t3 b ## これはスレッド3で現在実行されているSQLです 
Trx 読み取りビューでは、ID >= 4662 の trx は表示されず、< 4659 が表示されます。 
テーブル ロック テーブル `test`.`emp` trx id 4615 ロック モード IX ## スレッド 3 は、テーブルに対する意図的な IX ロックと、test.emp テーブル、ページ番号 = 3 の主キーに対する行レベル X ロックを保持しています。 
レコード ロック スペース ID 16 ページ番号 3 n ビット 88 テーブル `test`.`emp` のインデックス `PRIMARY` trx ID 4615 lock_mode X はレコードをロックしますが、ギャップはロックしません 
レコード ロック、ヒープ番号 9 物理レコード: n_fields 10、コンパクト フォーマット、情報ビット 0 
 0: 長さ 4; 16 進数 80001e6c; asc l;; 
 1: 長さ 6; 16 進数 000000001018; 昇順 ;; 
 2: 長さ 7; 16 進数 91000001420084; asc B ;; 
 3: 長さ 5; 16 進数 53434f5454; 昇順 SCOTT;; 
 4: 長さ 7; 16 進数 414e414c595354; asc ANALYST;; 
 5: 長さ 4; 16 進数 80001d8e; asc ;; 
 6: 長さ 4; 16 進数 208794f0; 昇順;; 
 7: 長さ 4; 16 進数 80000bb8; 昇順 ;; 
 8: SQL NULL; 
 9: 長さ 4; 16 進数 80000014; 昇順 ;;

スレッド 3 が現在 select t3 テーブル操作を実行しているのに、test.emp テーブルのページ num=3 をロックしているのはなぜですか?

test.emp テーブル上のスレッド 3 のトランザクションが時間内にコミットされなかった可能性があります。

したがって、スレッド 3 がスレッド 7 をブロックし、スレッド 7 がスレッド 4 をブロックしているため、根本的な原因はスレッド 3 にあると結論付けることができます。できるだけ早くスレッド 3 を送信するか、強制終了してください。

3.5. テーブルロックの状態を確認します。

mysql> 'table%' のようなステータスを表示します。
+----------------------------+---------+
| 変数名 | 値 |
+----------------------------+---------+
| テーブルロック即時 | 100 |
| テーブルロック待機 | 11 |
+----------------------------+---------+

3.6. InnoDB_row_lock ステータス変数をチェックして、システム上の行ロックの競合を分析します。

mysql> 'InnoDB_row_lock%' のようなステータスを表示します。
+---------------------------------+--------+
| 変数名 | 値 |
+---------------------------------+--------+
| Innodb_row_lock_current_waits | 0 |
| Innodb_row_lock_time | 159372 |
| Innodb_row_lock_time_avg | 39843 |
| Innodb_row_lock_time_max | 51154 |
| Innodb_row_lock_waits | 4 |
+---------------------------------+--------+
セット内の 5 行 (0.01 秒)

マイSQL>

4. 結論

InnoDB でのロック ブロッキングを分析する場合、いくつかの方法を比較します。

(1)show processlistを使用して表示するのは信頼できません。

(2)show engine innodb statusを直接使用して問題の根本原因を確認することは不可能である。

(3) mysqladmin debugを使用してロックを生成するすべてのスレッドを表示すると、それらを確認することはできますが、どれが根本的な原因であるかを判断することはできません。

(4) innodb_lock_monitorを有効にした後、show engine innodb statusを使用してロックブロックの根本原因を見つけます。

参考: https://www.jb51.net/article/201222.htm

これで、MySQL のデッドロック チェックとデッドロック除去に関するこの記事は終了です。MySQL のデッドロック チェックとデッドロック除去に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Mysqlは実行中のトランザクションを照会し、ロックを待機する方法
  • MySQLオンラインデッドロック分析練習
  • Mysql のデッドロックの表示とデッドロックの除去の詳細な説明
  • MySQLのデッドロックチェック処理の通常の方法
  • MySQLデッドロックの原因と解決策
  • MySQL デッドロック ルーチン: 一意のインデックスの下でのバッチ挿入順序の不一致
  • 異なるインデックスを更新してMySQLのデッドロックルーチンを解決する
  • ユニークインデックスの S ロックと X ロックによる MySQL デッドロック ルーチンの理解
  • MySQL (InnoDB) がデッドロックを処理する方法の詳細な説明
  • MySQL のロック待機とデッドロック問題の分析

<<:  純粋な CSS 実装 (スクリプトなし) HTML コマンド スタイルのツールチップ テキスト プロンプト効果

>>:  DockerがElasticsearch7.xを起動してエラーを報告する問題を解決する

推薦する

IDEA が MySQL ポート番号占有に接続できない問題の解決方法

コマンドラインでMYSQLに正常にログインでき、NavicatもMySQLに正常に接続できますが、I...

MySQL UPDATE ステートメントの「典型的な」落とし穴

目次1. 問題のあるSQL文たとえば、次の図のような質問をした人がいました。 問題は次のように要約で...

XHTML の珍しいが便利なタグ

Xhtml には、あまり使用されないが非常に便利なタグが多数あります。半分の労力で 2 倍の結果を達...

純粋なテキストとアイコン付きのボタンを実現するための HTML+CSS

この記事では、いくつかの基本的なページ要素の実装方法をまとめており、後で更新される予定です。まず、私...

MySQLのジョイントインデックス機能の分析と使用例

この記事では、例を使用して、MySQL 共同インデックスの機能と使用方法を説明します。ご参考までに、...

海外でダウンロードできる25個の新鮮で便利なアイコンセット

1. Eコマースアイコン2. アイコンスイーツ2 3. 携帯電話アイコンパック4. 旗アイコンセット...

js を使用して画像をモザイク化する方法の例

この記事では、主に js を使用して画像をモザイク化する方法の例を紹介し、次のように共有します。効果...

MySQL8のパスワードを忘れた場合の簡単な解決策

序文MySQL データベースのパスワードを忘れると、データベースに正常にアクセスできなくなり、パスワ...

QTとJavaScript間のインタラクティブデータの実装

1. QTからJSへのデータフロー1. QTはJS関数を呼び出し、JSはパラメータを通じてQTの値を...

MySQL 4 の一般的なマスタースレーブレプリケーションアーキテクチャ

目次1つのマスターと複数のスレーブのレプリケーションアーキテクチャマルチレベルレプリケーションアーキ...

衝突検出を実装するためのjs

この記事の例では、衝突検出を実装するためのjsの具体的なコードを参考までに共有しています。具体的な内...

Dockerfileを使用してApacheイメージを作成する方法

目次1. Dockerイメージ2. 既存のイメージに基づいてインスタンスを作成する3. ローカルテン...

データベースの水平セグメンテーションを実装するための2つのアイデア

導入インターネット アプリケーションの普及に伴い、膨大なデータの保存とアクセスがシステム設計における...

MySQL 接続例外とエラー 10061 の解決方法

MySQL は、スウェーデンの会社 MySQL AB によって開発されたリレーショナル データベース...

ネイティブJSで様々なモーションの複合モーションを実現

この記事では、ネイティブ JS で実装された複合モーションを紹介します。複合モーションとは、異なる属...