1. トランザクションはACID特性を持つ
2. トランザクション分離レベル 1) 分離レベルの定義と問題点
2) MySQLの変更レベルと分離レベルを見ると show variables like 'tx_isolation'; # MySQL8 より前の分離レベルを表示しますshow variables like 'transaction_isolation'; # MySQL8 より前の分離レベルを表示します set global transaction_isolation='READ-COMMITTED'; // 分離レベル、バルブドメイン READ-UNCOMMITTED、READ-COMMITTED、REPEATABLE-READ、SERIALIZABLE を設定します トランザクション分離レベルはセッション レベルに設定できます。セッションごとに異なるレベルを設定できます。 セッショントランザクション分離レベルをコミットされていない読み取りに設定します。 セッショントランザクション分離レベルをコミット読み取りに設定します。 セッショントランザクション分離レベルを繰り返し読み取りに設定します。 セッショントランザクション分離レベルをシリアル化可能に設定します。 3) Springトランザクション分離レベル Spring トランザクションは、デフォルトでデータベース分離レベルを使用します。@Transactional の isolation パラメータに注釈を付けることで、セッション分離レベルを調整できます。分離レベルはセッション レベルであり、JDBC java.sql.Connection インターフェイスは分離レベルの設定をサポートします。 Spring がトランザクションを開始すると (DataSourceTransactionManager.doBegin)、アノテーション構成に従って接続の分離レベルが設定されます。 MySQLドライバcom.mysql.cj.jdbc.ConnectionImplは、セッションレベルの分離レベルを調整するためにSQL文を実行します。 3. 行き詰まり デッドロックは、2 つ以上のトランザクションが同じリソースを占有し、お互いが占有しているリソースのロックを要求したときに発生し、悪循環を引き起こします。デッドロックの例: # トランザクション 1 トランザクションを開始します。 アカウントを更新します。ID=1 のところに money=10 を設定します。 アカウントを更新します。ID=2 のところに money=20 を設定します。 専念; # トランザクション 2 トランザクションを開始します。 アカウントを更新します。ID=2 のところに money=10 を設定します。 アカウントを更新します。ID=1 のところに money=20 を設定します。 専念; 偶然、トランザクション 1 とトランザクション 2 が同時に最初の更新ステートメントの実行を終了し、2 番目の更新ステートメントの実行を準備したところ、レコードが相手側によってロックされていることがわかったとします。すると、2 つのトランザクションは、相手側が要求したロックを保持したまま、相手側がリソースを解放するのを待機することになり、無限ループが発生します。 デッドロックの問題を回避するために、データベースはさまざまなデッドロック検出およびデッドロック長超過メカニズムを実装しています。InnoDB は、行レベルの排他ロックが最も少ないトランザクションをロールバックすることでデッドロックを処理します。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Xftp のダウンロードとインストールのチュートリアル (グラフィック チュートリアル)
>>: Vueは下部のポップアップウィンドウで複数選択を実装します
数日前、バスで仕事に行きました。バスのカードリーダーの実際の使用シーンを実際に見て、カードリーダーの...
目次導入ダウンロードしてインストールする設定docker-composeをインストールする導入Doc...
目次序文問題: 大きなファイルのコピーNodeJS のストリームとバッファバッファストリーム解決策 ...
Docker の人気と成熟に伴い、Docker は徐々にプロジェクトをデプロイするための第一の選択肢...
目次1. Cocos Creatorでのオーディオ再生の基本1. 基本2. 一般的な方法2. Coc...
Ubuntu 20.04 では、デフォルトで root ログインが有効になっていないため、デスクトッ...
img 画像タグに alt 属性を追加しますか?画像 img タグの alt 属性を見落とすことはよ...
目次概要本日正午、開発およびテスト環境の MySQL サービスで接続数が多すぎるというエラーが報告さ...
コンセプト紹介: MySQL の redo ログにはトランザクションの動作が記録されることはご存じの...
目次1. このキーワード2. カスタム属性3. 包括的なケース1:タブの実装付録要約する1. このキ...
1. プロジェクトを右クリックしてプロパティを選択します2. プロジェクトファセットをクリック3. ...
サーバーの負荷を軽減するために、ユーザーが入力するときにフロントエンドページで簡単な検証を実行する必...
区切り文字なしの文字列抽出質問の要件データベース内のフィールド値:実装効果: 1行のデータを複数行に...
大学 4 年生のときのインターンシップ中に、表内のデータの番号をクリックすると、そのデータの下に新し...
目次スケルトンスクリーンとはアプレットでスケルトン画面を生成する方法導入方法表示と非表示ユーザーエク...