[MYSQLノート]トランザクションの使用

ストレージエンジン:

MYSQLの機能は大きく2つのタイプに分けられます。

1つ:クライアントを接続し、SQLステートメントの内容を事前に確認します。つまり、フォアグラウンド部分です。

2:前景部分の指示に従って、クエリとファイル操作の機能、つまり背景部分を完了します。このバックエンド部分は、ストレージエンジンと呼ばれます。

ストレージエンジンの種類:

MYSQLは複数のストレージエンジンをプリセットし、ユーザーは使用目的と個人的な好みに応じて選択できます。互いに独立していて、ユーザーが独立して選択できるエンジンの存在は、MYSQLの特徴です。

デフォルトでは、エンジンInnoDBが使用されます。ただし、MYSQL5.4までのバージョンでは、デフォルトのストレージエンジンはMyISAMです。MyISAMは当時InnoDBよりも高速でしたが、残念ながらトランザクションをサポートしていませんでした。

しかし、今ではInnoDBの処理速度も速くなっているので、MyISAMを使用する必要はありません。

ストレージエンジンを確認します。

show create table tb;

ストレージエンジンは、ENGINE=XXセクションで確認できます。

テーブルを作成するときに、ストレージエンジンが指定されていない場合、デフォルトのInnoDBが選択されます。

ストレージエンジンを変更します。

例:テーブルtbのストレージエンジンをInnoDBからMyISAMに変更します

alter table tb engine=MyISAM;

トランザクション:複数の操作を単一の論理作業単位として処理する機能は、トランザクションと呼ばれます。

トランザクション開始後に処理結果をデータベースに反映する操作をコミットと呼びます。

データベースには反映されないが、元の状態に復元される操作は、ロールバックと呼ばれます。

例:銀行口座では、10万元を差し引いて10万元を足すという操作は、切り離せない全体として扱う必要があります。

10万元を加算する操作が失敗した場合は、10万元を差し引く操作もキャンセルする必要があります。

オープントランザクション:

start transaction;
delete from tb;
rollback;

テーブルが削除された後、テーブルはロールバック(復元)され、削除されたレコードを復元できます。

ロールバックが実行されると、トランザクションは閉じられます。

上記の例では、ロールバックの代わりにcommitが実行されると、削除されたレコードがコミットされ、すべてのレコードがユーザーレコードによって削除されます。

自動コミット機能:MYSQLでコマンドを実行し、処理は通常直接送信されます。つまり、すべてのコマンドが自動的にCOMMITします。

デフォルトでは、自動コミットはオンになっています。ただし、ストレージエンジンがINNODBの場合、startトランザクションを実行すると、commitコマンドが実行される前にコミットされません。

ユーザーは自動コミットを強制的にオフにすることができます。自動コミット機能をオフにすると、SQLステートメントを実行しても自動的にコミットされないため、COMMITでコミットするか、ロールバックで復元する必要があります。

自動コミットをオフにします。

set autocommit=0;

自動送信を有効にするには:

set autocommit=1;

トランザクションの使用範囲:

トランザクションの開始後、ロールバックによってすべての操作を回復できるわけではありません。

以下の操作は自動的に送信されます

 

 

 

おすすめ

転載: blog.csdn.net/m0_52043808/article/details/124235274