10bet网址
MySQL 5.6リファレンスマニュアル
下载本手册

14.19.4 InnoDBのエラ.処理

InnoDBでのエラ,処理は,sql標準で指定されているものと必ずしも同じではありません。この標準によると、SQLステートメント中にエラーが発生した場合は必ず,そのステートメントのロールバックを実行するべきです。InnoDBは場合によって,ステ,トメントの一部のみ,またはトランザクション全体をロ,ルバックします。次の各項目は,InnoDBがエラ処理をどのように実行するかにいて説明しています。

  • テ,ブルスペ,ス内のファaapl . exeル領域が不足した場合は,MySQLの桌子满了エラ,が発生し,InnoDBはSQLステトメントをロルバックします。

  • トランザクションデッドロックが発生すると,InnoDBトランザクション全体をロ,ルバックします。これが発生した場合は,トランザクション全体を再試行します。

    ロック待機のタ电子邮箱ムアウトが発生すると,InnoDB。(トランザクション全体がロ,ルバックされるようにするには,——innodb_rollback_on_timeoutオプションを使用してサ,バ,を起動します.)現在の動作を使用している場合はそのステ,トメントを,——innodb_rollback_on_timeoutを使用している場合はトランザクション全体を再試行します。

    デッドロックとロック待機のタイムアウトはどちらもビジー状態のサーバーでは通常のことであり,アプリケーションはそれらが発生する可能性を認識し,発生した場合は再試行によって処理する必要があります。トランザクション中の最初のデータ変更からコミットまでの間に行う作業をできるだけ少なくして、ロックが可能性のある最短の時間、可能性のある最少の行数に対して保持されるようにすることにより、それらが発生する可能性を少なくすることができます。場合によっては、異なるトランザクション間での作業の分割が実際的で、かつ役立つことがあります。

    デッドロックまたはロック待機のタイムアウトのためにトランザクションロールバックが発生すると,そのトランザクション内のステートメントの効果が取り消されます。ただし,トランザクション開始ステ,トメントが开始事务または开始ステ,トメントであった場合,そのステ,トメントはロ,ルバックによって取り消されません。それ以上のSQLステトメントは,提交回滚,または暗黙的なコミットを発生させる何らかのSQLステートメントが現れるまで,そのトランザクションの一部になります。

  • ステ,トメントで忽略オプションを指定していない場合,重複キ,エラ,はSQLステ,トメントをロ,ルバックします。

  • 行太长错误は,sqlステトメントをロルバックします。

  • その他のエラはほとんど(InnoDBストレージエンジンレベルの上にある)コードのMySQLレイヤーによって検出され,対応するSQLステートメントをロールバックします。1 .。

暗黙的なロ,ルバック中や,明示的な回滚SQLステトメントの実行中に,显示PROCESSLISTは,関連する接続の状态カラムに回滚を表示します。