ホームページ  >  記事  >  データベース  >  MySQL はコミットする必要がありますか?

MySQL はコミットする必要がありますか?

(*-*)浩
(*-*)浩オリジナル
2019-05-06 17:46:323601ブラウズ

挿入などの操作を実行するときに mysql がコミットする必要があるかどうかは、ストレージ エンジンによって異なります。myisam などのトランザクションをサポートしていないエンジンの場合、コミットの有無は効果がありません。

推奨コース: MySQL チュートリアル

innodb などのトランザクションをサポートするエンジンの場合、トランザクションがトランザクションの自動送信 (つまりコミット) をサポートしているかどうかを知る必要があります。

データベースがサポートされているかどうかを確認するには、自動的にコミットされる場合は、mysql>show variables like '%autocommit%'; を使用して表示できますが、OFF の場合は自動的にコミットされず、手動のコミット操作が必要です (コマンドラインで直接「commit;」コマンドを実行できます)。そうでない場合は、自動的にコミットされます。

MySQL はコミットする必要がありますか?

#送信データには、明示的送信、暗黙的送信、自動送信の 3 種類があります。

これら 3 つのタイプについては、以下で説明します。


明示的な送信


COMMIT コマンドを直接使用して完了する送信は、明示的な送信です。


暗黙的な送信

SQL コマンドを使用して間接的に完了する送信は、暗黙的な送信です。これらのコマンドは、


ALTER 、 AUDIT 、 COMMENT 、 CONNECT 、 CREATE 、 DISCONNECT 、 DROP 、 EXIT 、 GRANT 、 NOAUDIT 、 QUIT 、 REVOKE 、 RENAME です。


自動送信


AUTOCOMMIT が ON に設定されている場合、insert、modify、および delete ステートメントの実行後、システムは自動的にコミットを行います。自動コミット。形式は次のとおりです: SQL>SET AUTOCOMMIT ON;


COMMIT / ROLLBACK これら 2 つのコマンドを使用する場合は注意してください。 COMMIT/ROLLBACK は、DML ステートメント (INSERT/DELETE/UPDATE/SELECT) の実行後に使用されます。 DML ステートメントの実行後、処理されたデータはロールバック セグメント (SELECT ステートメントを除く) に配置され、ユーザーによるコミット (COMMIT) またはロールバック (ROLLBACK) を待ちます。ユーザーが COMMIT/ROLLBACK を実行すると、ロールバックセグメントに配置され、セグメント内のデータは削除されます。 (SELECT ステートメントの実行後、データは共有プールに保存されます。同じデータを他のユーザーに提供してクエリを実行する場合、データベースから抽出する必要がなく、共有プールから直接抽出されるため、データの速度が向上します。


すべての DML ステートメントは明示的に送信する必要があります。つまり、DML ステートメントの実行後に COMMIT を実行する必要があります。 DDL ステートメントなど、その他のステートメントは暗黙的に送信されます。つまり、これらの非 DML ステートメントを実行した後、データベースは CREATE TABLE などの暗黙的なコミットをすでに作成しています。スクリプトの実行後、テーブルが作成されるため、明示的なコミットを行う必要はなくなります。

以上がMySQL はコミットする必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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