この記事では、MySQL トランザクション分離について説明します。一定の参考値があるので、困っている友達が参考になれば幸いです。
#トランザクションの概要
トランザクションは、アトミックな SQL クエリのセット、または独立した作業です。ユニット。つまり、トランザクション内のステートメントはすべて正常に実行されるか、すべて失敗するかのどちらかです。 Mysql では、トランザクション サポートはエンジン層で実装されていますが、すべての Mysql エンジンがトランザクションをサポートしているわけではありません。たとえば、MyISAM エンジンはトランザクションをサポートしていません。これが、MyISAM が InnoDB に置き換えられた重要な理由の 1 つです。 。 トランザクションに関して言えば、間違いなく ACID を思い浮かべます。- 原子性
- 一貫性
- ##絶縁性
- 耐久性
絶縁レベル
データベース内で複数のトランザクションが同時に実行されると、トランザクション分離レベルの概念により、ダーティ リード、反復不能リード、ファントム リードなどの問題が発生する可能性があります。 SQL 標準では、次の 4 つの分離レベルが定義されています。- READ UNCOMMITTED (コミットされていない読み取り)まだ変更されていない場合でも、トランザクション内の変更。 commit され、他のトランザクションから参照できます。トランザクションは、ダーティ リードとも呼ばれる、コミットされていないデータを読み取ることができます。
- READ COMMITTEDトランザクションが送信されると、その変更は他のトランザクションから確認できるようになります。トランザクション内で同じクエリが 2 回実行されると結果が異なる可能性があるため、このレベルは非反復読み取りとも呼ばれます。
- REPEATABLE READ(繰り返し読み取り)トランザクションの実行中、データはトランザクションの開始時に表示されたデータと常に一致します。もちろん、このレベルでは、コミットされていないデータ変更も他のトランザクションからは見えません。
- SERIALIZABLE(シリアル化可能)レコードの同じ行については、書き込みと読み取りがロックされます。読み取り/書き込みロックの競合が発生した場合、後でアクセスされるトランザクションは、前のトランザクションが完了するまで待ってから続行すると、タイムアウトやロック競合の問題が大量に発生します。
transaction-isolation を目的の分離レベルに設定することです。
mysql> show variables like 'transaction_isolation'; +-----------------------+-----------------+ | Variable_name | Value | +-----------------------+-----------------+ | transaction_isolation | REPEATABLE-READ | +-----------------------+-----------------+ 1 row in set (0.00 sec)要するに、存在は合理的です。さまざまな分離レベルはさまざまなシナリオに適しています。ビジネス シナリオに基づいて決定する必要があります。
トランザクション分離の実装
Mysql では、実際には、各レコードの更新によってロールバック操作も記録されます。 、前の状態の最新の値を取得できます。 システムは、ロールバック ログを必要とするトランザクションがなくなると、ロールバック ログが削除されると自動的に判断します。 長いトランザクションの使用が推奨されない理由: 長いトランザクションは、システム内に非常に古いトランザクション ビューが存在することを意味します。これらのトランザクションはいつでもデータベース内のあらゆるデータにアクセスできるため、このトランザクションが送信される前に、データベースで使用される可能性のあるロールバック レコードを保持する必要があります。これにより、多くのストレージ領域が占有されます。同時に、長いトランザクションもロック リソースを占有し、ライブラリ全体がダウンする可能性があります。トランザクションの開始方法
- トランザクション ステートメントを明示的に開始します。トランザクションを開始または開始します。送信とはコミットを意味します。 return ロールバックを使用します。
- set autocommit = 0、このコマンドはスレッドの自動送信をオフにします。つまり、select ステートメントが実行されると、トランザクションが開始され、自動的にはコミットされません。アクティブにコミットまたはロールバックを実行するか、切断するまで。
クエリの長いトランザクション:
次のステートメントは、60 秒を超えるトランザクションをクエリします。mysql> select * from information_schema.innodb_trx where TIME_TO_SEC(timediff(now(),trx_started))>60; Empty set (0.00 sec)要約すると、開発プロセス中に、長いトランザクションを使用することをできるだけ少なくしてください。それが避けられない場合は、論理ログ スペースが十分な大きさであることを確認し、動的なログ スペースの増加をサポートしてください。 Innodb_trx テーブルを監視し、ロング トランザクション アラームを報告します。 推奨: 「
mysql ビデオ チュートリアル 」
以上がMySQL トランザクション分離についての簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

MySQLは、非同期、半同期、およびグループ複製の3つのモードを介してデータの複製を処理します。 1)非同期の複製パフォーマンスは高くなりますが、データが失われる可能性があります。 2)半同期複製により、データセキュリティが向上しますが、遅延が増加します。 3)グループレプリケーションは、高可用性要件に適したマルチマスターレプリケーションとフェールオーバーをサポートします。

説明ステートメントは、SQLクエリのパフォーマンスを分析および改善するために使用できます。 1.説明ステートメントを実行して、クエリプランを表示します。 2。出力結果を分析し、アクセスの種類、インデックスの使用量に注意し、順序を結合します。 3.分析結果に基づいてインデックスを作成または調整し、結合操作を最適化し、フルテーブルスキャンを回避してクエリ効率を向上させます。

論理バックアップにMySQLDUMPとホットバックアップにMySQLenterPriseBackupを使用することは、MySQLデータベースをバックアップする効果的な方法です。 1. mysqldumpを使用してデータベースをバックアップします:mysqldump-uroot-pmydatabase> mydatabase_backup.sql。 2。ホットバックアップにmysqlenterprisebackupを使用:mysqlbackup - user = root-password = password - backup-dir =/path/to/backupbackup。回復するときは、対応する寿命を使用します

MySQLのクエリが遅い主な理由には、インデックスの欠落または不適切な使用、クエリの複雑さ、過剰なデータボリューム、および不十分なハードウェアリソースが含まれます。最適化の提案には以下が含まれます。1。適切なインデックスを作成します。 2。クエリステートメントを最適化します。 3.テーブルパーティションテクノロジーを使用します。 4.適切にハードウェアをアップグレードします。

MySQLビューは、SQLクエリの結果に基づいた仮想テーブルであり、データを保存しません。 1)ビューは複雑なクエリを簡素化し、2)データセキュリティを強化し、3)データの一貫性を維持します。ビューは、テーブルのように使用できるデータベースにクエリを保存しますが、データは動的に生成されます。

MySQLdiffersfromotherSQLdialectsinsyntaxforLIMIT,auto-increment,stringcomparison,subqueries,andperformanceanalysis.1)MySQLusesLIMIT,whileSQLServerusesTOPandOracleusesROWNUM.2)MySQL'sAUTO_INCREMENTcontrastswithPostgreSQL'sSERIALandOracle'ssequenceandt

MySQLパーティション化により、パフォーマンスが向上し、メンテナンスが簡素化されます。 1)大きなテーブルを特定の基準(日付範囲など)、2)物理的に独立したファイルに物理的に分割する、3)MySQLはクエリするときに関連するパーティションに焦点を合わせることができます。

mysqlで許可を許可および取り消す方法は? 1。grantallprivilegesondatabase_name.to'username'@'host 'などの許可を付与するために付与ステートメントを使用してください。 2。Revokeallprivilegesondatabase_name.from'username'@'host 'など、Revoke Statementを使用して、許可のタイムリーな通信を確保します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

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

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ドリームウィーバー CS6
ビジュアル Web 開発ツール

ホットトピック









