この記事は、mysql に関する関連知識を提供します。主にロールバック関連の問題を整理し、主にブックストアのロールバックとロールバック メカニズムを紹介します。一緒に見てみましょう。皆さんが助けてくれることを願っています。
推奨学習: mysql ビデオ チュートリアル
大規模なテーブルを操作すると、操作時間が長すぎたり、オンラインに影響を与える ビジネスでは、大規模なテーブル操作をロールバックする必要があります。大規模なテーブル操作を停止した後、ロールバックを待つのは非常に長いプロセスです。時間を短縮する方法をいくつか知っていて、実稼働環境でのデータの整合性に懸念を抱いているかもしれませんが、介入しないことを選択することもできます。
トランザクション ロールバック
トランザクションはリレーショナル データベースの実行単位であり、最終段階のコントロールを通じて送信またはロールバックできます。整合性が保証できないさまざまなシナリオでロールバック操作を実行します。 MySQL でのロールバックは、トランザクションに関連する最新の変更を元に戻す方法に関する情報が含まれる元に戻すログを通じて実行されます。 Undo ログは Undo ログ セグメントに存在し、Undo ログ セグメントはロールバック セグメントに含まれます。ロールバック セグメントは、UNDO 表スペースおよびグローバル Temporary 表スペースに配置されます。
関係は次のとおりです。
- undo ファイル
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 > 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 に基づいています ページ サイズ関連:
最新の 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 ロールバックの同時読み取りおよび書き込みシナリオを正式に提供します。
から戻るアピールの原則 実際のアプリケーション シナリオでは:
ロールバック セグメントをサポートする機能は依然として相当なものですが、ロールバックの大規模なバッチを実行すると非常に遅くなることがよくあります。特にオンライン処理中は、100,000 行をロールバックするのに 10 分かかる場合があります。あるいはそれ以上です。
以下では、sysbench を使用して 5,000 万の単一テーブル データを準備します。無負荷状態で、約 1 分間削除してから、kill -9 を使用してトランザクションを強制停止し、トランザクションをロールバックします。
明らかに再起動の効果が優れています。
ただし、kill -9 メソッドはデータ ページを簡単に破損する可能性があり、大きなリスクがあります。日常生活でもデータベースに負荷がかかるため、大規模なトランザクションをロールバックするコストが非常に高額になることが想像できます。
概要
大規模なロールバック操作はできる限り回避する必要があります。これはデータベースのリソースとパフォーマンスを消費し、実稼働環境で重大な実稼働事故につながる可能性があります。大規模なトランザクションのロールバックを回避できない場合は、次の方法を実行できます。
- バッチ操作の場合は、バッチで送信できます。たとえば、
- UNDO 領域と 1,000 ~ 5,000 行のグローバル一時テーブル領域を適切に調整できます。 4 つの元に戻すファイルを使用し、1G グローバル ibtmp1 を初期化することをお勧めします。高可用性環境でデータの一貫性を確保すると、スレーブを新しいマスターに昇格させ、サービスを提供し、大規模なトランザクションがロールバックされるのを待つことができます。
- 極端な場合には、kill -9 を使用して操作を再開できます。データの量が非常に多いため、mysql のリカバリは遅くなります。この時点では、mysql がクラッシュ リカバリを実行するまで待つ必要があります。
- データ ページが破損している場合、または再起動プロセス中にロールバックがスキップされた場合は、innodb_force_recovery=3 を渡すことができます (トランザクション ロールバック操作は実行されません)。 )
- 推奨学習:
以上がMySQL ロールバック (概要共有)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

mysqlviewshavelimitations:1)supportallsqloperations、制限、dataManipulationswithjoinsorubqueries.2)それらは、特にパフォーマンス、特にパルフェクソルラージャターセット

reperusermanmanagementInmysqliscialforenhancingsecurationsinginuring databaseaperation.1)usecreateusertoaddusers、指定connectionsourcewith@'localhost'or@'% '。

mysqldoes notimposeahardlimitontriggers、しかしpracticalfactorsdeTerminetheireffectiveuse:1)serverconufigurationStriggermanagement; 2)complentiggersincreaseSystemload;

はい、それはssafetostoreblobdatainmysql、butonsiderheSeCactors:1)Storagespace:blobscanconsumesificantspace.2)パフォーマンス:パフォーマンス:大規模なドゥエットブロブスメイズ階下3)backupandrecized recized recized recize

PHP Webインターフェイスを介してMySQLユーザーを追加すると、MySQLI拡張機能を使用できます。手順は次のとおりです。1。MySQLデータベースに接続し、MySQLI拡張機能を使用します。 2。ユーザーを作成し、CreateUserステートメントを使用し、パスワード()関数を使用してパスワードを暗号化します。 3. SQLインジェクションを防ぎ、MySQLI_REAL_ESCAPE_STRING()関数を使用してユーザー入力を処理します。 4.新しいユーザーに権限を割り当て、助成金ステートメントを使用します。

mysql'sblobissuitable forstoringbinarydatawithinarationaldatabase、whileenosqloptionslikemongodb、redis、andcassandraofferferulesions forunstructureddata.blobissimplerbutcanslowdowdowd withwithdata

toaddauserinmysql、使用:createuser'username '@' host'identifidedby'password '; here'showtodoitsely:1)chosehostcarefilytoconを選択しますTrolaccess.2)setResourcelimitslikemax_queries_per_hour.3)usestrong、uniquasswords.4)endforcessl/tlsconnectionswith

toavoidcommonMonmistakeswithStringDatatypesinmysql、undultingStringTypenuste、choosetherightType、andManageEncodingandCollationsEttingtingive.1)Usecharforfixed-LengthStrings、Varcharforaible Length、AndText/Blobforlardata.2)setCurrectCherts


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

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

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

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

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。
