目次
トランザクション ロールバック
ロールバック メカニズム:
概要
ホームページ データベース mysql チュートリアル MySQL ロールバック (概要共有)

MySQL ロールバック (概要共有)

Jun 24, 2022 pm 12:54 PM
mysql

この記事は、mysql に関する関連知識を提供します。主にロールバック関連の問題を整理し、主にブックストアのロールバックとロールバック メカニズムを紹介します。一緒に見てみましょう。皆さんが助けてくれることを願っています。

MySQL ロールバック (概要共有)

推奨学習: mysql ビデオ チュートリアル

大規模なテーブルを操作すると、操作時間が長すぎたり、オンラインに影響を与える ビジネスでは、大規模なテーブル操作をロールバックする必要があります。大規模なテーブル操作を停止した後、ロールバックを待つのは非常に長いプロセスです。時間を短縮する方法をいくつか知っていて、実稼働環境でのデータの整合性に懸念を抱いているかもしれませんが、介入しないことを選択することもできます。

トランザクション ロールバック

トランザクションはリレーショナル データベースの実行単位であり、最終段階のコントロールを通じて送信またはロールバックできます。整合性が保証できないさまざまなシナリオでロールバック操作を実行します。 MySQL でのロールバックは、トランザクションに関連する最新の変更を元に戻す方法に関する情報が含まれる元に戻すログを通じて実行されます。 Undo ログは Undo ログ セグメントに存在し、Undo ログ セグメントはロールバック セグメントに含まれます。ロールバック セグメントは、UNDO 表スペースおよびグローバル Temporary 表スペースに配置されます。
関係は次のとおりです。

MySQL ロールバック (概要共有)

  • undo ファイル

    MySQL ロールバック (概要共有)

mysql > show variables like '%undo%';
+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| innodb_max_undo_log_size | 1073741824         |
| innodb_undo_directory    | /opt/data8.0/mysql |
| innodb_undo_log_encrypt  | OFF                |
| innodb_undo_log_truncate | ON                 |
| innodb_undo_tablespaces  | 2                  |
+--------------------------+--------------------+
5 rows in set (0.00 sec)
ログイン後にコピー

は、次のことを指します。グローバル Temporary ユーザー作成の一時テーブルに対する変更のロールバック セグメントを格納する一時テーブルスペース (ibtmp1)。

MySQL ロールバック (概要共有)

mysql > SELECT @@innodb_temp_data_file_path;
+-------------------------------+
| @@innodb_temp_data_file_path  |
+-------------------------------+
| ibtmp1:128M:autoextend:max:30G |
+-------------------------------+
ログイン後にコピー

ロールバックに含まれるファイルを理解したら、読み続けてください。

ロールバック メカニズム:

MySQL ロールバック制御は内部 innodb エンジンによって調整され、人間が制御するメカニズムは提供されません。現在提供されている MySQL ロールバック パラメータは次のとおりです:

mysql> SHOW VARIABLES LIKE  '%ROLL%';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| innodb_rollback_on_timeout | OFF   |
| innodb_rollback_segments   | 128   |
+----------------------------+-------+
ログイン後にコピー

innodb_rollback_on_timeout:

デフォルトでは、InnoDB はトランザクションがタイムアウトしたときにのみ最後のステートメントをロールバックします。 --InnoDB -rollback-on-timeout が指定されている場合、トランザクション タイムアウトにより InnoDB が中止され、トランザクション全体がロールバックされます。ロールバックなどの指定された時間が経過すると、デフォルトでオフになります。データに不整合が生じる可能性が考えられます。この方法はお勧めできません。

Innodb_rollback_segments (1~128):

各 UNDO 表スペースに割り当てられるロールバック セグメントの数と、UNDO レコードを生成するトランザクションに割り当てられるグローバル一時表スペースの数を定義します。
ロールバック セグメントでサポートされるトランザクションの数: ロールバック セグメントのアンドゥ スロットの数と、各トランザクションに必要なアンドゥ ログの数によって異なります。

公式に提供されるロールバックのアンドゥ スロットの数セグメントは InnoDB に基づいています ページ サイズ関連:

MySQL ロールバック (概要共有)

最新の MySQL8.0.27 ソース コード実装より storage\innobase\include\trx0rseg.h:

/* Number of undo log slots in a rollback segment file copy 
这里 UNIV_PAGE_SIZE正常页面的大小  即 1024*/
#define TRX_RSEG_N_SLOTS (UNIV_PAGE_SIZE / 16)

/* Maximum number of transactions supported by a single rollback segment 
单个回滚段支持的最大事务数1024/2=512
*/
#define TRX_RSEG_MAX_N_TRXS (TRX_RSEG_N_SLOTS / 2)
ログイン後にコピー

デフォルトではページ 1024 スロット (TRX_RSEG_N_SLOTS) に分割されており、各スロットがアンドゥ ログ オブジェクトに対応するため、理論上 InnoDB は 128 * 512 = 65536 個の通常トランザクションをサポートできます。
原則的な部分については、「MySQL」「エンジン機能」「InnoDB undo ログ ローミング」を参照してください。
undbo ロールバックの同時読み取りおよび書き込みシナリオを正式に提供します。

MySQL ロールバック (概要共有)

から戻るアピールの原則 実際のアプリケーション シナリオでは:
ロールバック セグメントをサポートする機能は依然として相当なものですが、ロールバックの大規模なバッチを実行すると非常に遅くなることがよくあります。特にオンライン処理中は、100,000 行をロールバックするのに 10 分かかる場合があります。あるいはそれ以上です。
以下では、sysbench を使用して 5,000 万の単一テーブル データを準備します。無負荷状態で、約 1 分間削除してから、kill -9 を使用してトランザクションを強制停止し、トランザクションをロールバックします。

MySQL ロールバック (概要共有)

明らかに再起動の効果が優れています。
ただし、kill -9 メソッドはデータ ページを簡単に破損する可能性があり、大きなリスクがあります。日常生活でもデータベースに負荷がかかるため、大規模なトランザクションをロールバックするコストが非常に高額になることが想像できます。

概要

大規模なロールバック操作はできる限り回避する必要があります。これはデータベースのリソースとパフォーマンスを消費し、実稼働環境で重大な実稼働事故につながる可能性があります。大規模なトランザクションのロールバックを回避できない場合は、次の方法を実行できます。

  • バッチ操作の場合は、バッチで送信できます。たとえば、
  • UNDO 領域と 1,000 ~ 5,000 行のグローバル一時テーブル領域を適切に調整できます。 4 つの元に戻すファイルを使用し、1G グローバル ibtmp1 を初期化することをお勧めします。高可用性環境でデータの一貫性を確保すると、スレーブを新しいマスターに昇格させ、サービスを提供し、大規模なトランザクションがロールバックされるのを待つことができます。
  • 極端な場合には、kill -9 を使用して操作を再開できます。データの量が非常に多いため、mysql のリカバリは遅くなります。この時点では、mysql がクラッシュ リカバリを実行するまで待つ必要があります。
  • データ ページが破損している場合、または再起動プロセス中にロールバックがスキップされた場合は、innodb_force_recovery=3 を渡すことができます (トランザクション ロールバック操作は実行されません)。 )
  • 推奨学習:
mysql ビデオ チュートリアル

以上がMySQL ロールバック (概要共有)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Laravelは紹介例 Laravelは紹介例 Apr 18, 2025 pm 12:45 PM

Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

MySQLおよびPHPMYADMIN:コア機能と関数 MySQLおよびPHPMYADMIN:コア機能と関数 Apr 22, 2025 am 12:12 AM

MySQLとPHPMyAdminは、強力なデータベース管理ツールです。 1)MySQLは、データベースとテーブルを作成し、DMLおよびSQLクエリを実行するために使用されます。 2)PHPMyAdminは、データベース管理、テーブル構造管理、データ操作、ユーザー許可管理のための直感的なインターフェイスを提供します。

MySQL対その他のプログラミング言語:比較 MySQL対その他のプログラミング言語:比較 Apr 19, 2025 am 12:22 AM

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

Laravel Frameworkインストール方法 Laravel Frameworkインストール方法 Apr 18, 2025 pm 12:54 PM

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

MySQLの外国キーの目的を説明してください。 MySQLの外国キーの目的を説明してください。 Apr 25, 2025 am 12:17 AM

MySQLでは、外部キーの機能は、テーブル間の関係を確立し、データの一貫性と整合性を確保することです。外部キーは、参照整合性チェックとカスケード操作を通じてデータの有効性を維持します。パフォーマンスの最適化に注意し、それらを使用するときに一般的なエラーを避けてください。

mysqlとmariadbを比較対照します。 mysqlとmariadbを比較対照します。 Apr 26, 2025 am 12:08 AM

MySQLとMariaDBの主な違いは、パフォーマンス、機能、ライセンスです。1。MySQLはOracleによって開発され、Mariadbはフォークです。 2. Mariadbは、高負荷環境でパフォーマンスを向上させる可能性があります。 3.MariaDBは、より多くのストレージエンジンと機能を提供します。 4.MySQLは二重ライセンスを採用し、MariaDBは完全にオープンソースです。既存のインフラストラクチャ、パフォーマンス要件、機能要件、およびライセンスコストを選択する際に考慮する必要があります。

SQL対MySQL:2つの関係を明確にします SQL対MySQL:2つの関係を明確にします Apr 24, 2025 am 12:02 AM

SQLはリレーショナルデータベースを管理するための標準言語であり、MySQLはSQLを使用するデータベース管理システムです。 SQLは、CRUD操作を含むデータベースと対話する方法を定義しますが、MySQLはSQL標準を実装し、ストアドプロシージャやトリガーなどの追加機能を提供します。

MySQL:データベース、phpmyAdmin:管理インターフェイス MySQL:データベース、phpmyAdmin:管理インターフェイス Apr 29, 2025 am 12:44 AM

MySQLとPHPMyAdminは、次の手順を通じて効果的に管理できます。1。データベースの作成と削除:PHPMyAdminをクリックして完了します。 2。テーブルの管理:テーブルを作成し、構造を変更し、インデックスを追加できます。 3。データ操作:データの挿入、更新、削除、SQLクエリの実行をサポートします。 4。データのインポートとエクスポート:SQL、CSV、XML、およびその他の形式をサポートします。 5。最適化と監視:最適化可能なコマンドを使用してテーブルを最適化し、クエリアナライザーと監視ツールを使用してパフォーマンスの問題を解決します。

See all articles