mysql では、コミットが必要かどうかはストレージ エンジンによって異なります: 1. myisam など、トランザクションをサポートしないストレージ エンジンの場合は、コミットを使用する必要はありません。2. トランザクションをサポートしないストレージ エンジンの場合は、コミットを使用する必要はありません。 innodb などのトランザクションをサポートするストレージ エンジンの場合、トランザクションが自動的にコミットされるかどうかを知る必要があるため、commit を使用する必要があります。
このチュートリアルの動作環境: Windows10 システム、mysql8.0.22 バージョン、Dell G3 コンピューター。
mysql が追加、削除、変更を実行するときにコミットを必要とするかどうかは、ストレージ エンジンによって異なります。
myisam などトランザクションをサポートしていないエンジンの場合、コミットの有無に関わらず無効となります。
innodb などのトランザクションをサポートするエンジンの場合、そのエンジンがトランザクションの自動送信 (つまりコミット) をサポートしているかどうかを知る必要があります。
自分のものを見てください。mysql> show variables like '%autocommit%';を使用して、データベースが自動的にコミットされるかどうかを確認できます。OFF の場合、自動的にコミットされず、手動のコミット操作が必要です (コマンド ラインで直接コミットできます) "commit;" コマンド)、それ以外の場合は自動的にコミットされます。
拡張知識:
送信されるデータには、明示的送信、暗黙的送信、自動送信の 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 ビデオ チュートリアル
以上がmysqlはコミットする必要があるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。