study 20131009
TRANSCRIPT
トランザクションとは✴ 1つ以上のDMLをひとかたまりにまとめたもの
✴ Data Manipulation Language:
データ操作言語
✴ 既存のテーブルを操作する
✴ SELECT(検索), INSERT(挿入), UPDATE(更新), DELETE(削除)
4
DDL (Data Definition Language):
データ定義言語
• データベースやテーブルを作成したり削除したりする
CREATE (作成), DROP (削除), ALTER (変更)
6
• データベースに対して行った変更を確定したり取消したりする。
COMMIT (確定), ROLLBACK (取消),
• また、ユーザーのデータベース操作権限の設定や削除もする。
GRANT (権限付与), REVOKE (権限削除)
DCL (Data Control Language):
データ操作言語
7
テーブルを作成した際に設定された
ストレージエンジンを確認する方法
-- admin テーブル作成時のストレージエンジンを確認するmysql> SHOW CREATE TABLE admin CREATE TABLE `admin` ( `id` int(11) NOT NULL AUTO_INCREMENT,中略) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED
11
テーブルを作成した際に設定された
ストレージエンジンを確認する方法
-- admin テーブル作成時のストレージエンジンを確認するmysql> SHOW CREATE TABLE admin CREATE TABLE `admin` ( `id` int(11) NOT NULL AUTO_INCREMENT,中略) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED
11
テーブルが使用しているストレージエンジンを変更する方法
-- admin テーブルのストレージエンジンをMyISAMに設定するmysql> ALTER TABLE admin ENGINE=MyISAM;
12
テーブルが使用しているストレージエンジンを変更する方法
-- admin テーブルのストレージエンジンをMyISAMに設定するmysql> ALTER TABLE admin ENGINE=MyISAM;
12
• トランザクション開始文;
• 1つ以上のDML文;
• トランザクション終了文;
✴トランザクションの構文BEGIN
BEGIN WORKSTART TRANSACTION
COMMITROLLBACK
14
4つの大事な約束事SQL標準規格によって定められた、どんなDBMSも守らなければならない一般的なルール
Consistency - 一貫性・整合性
Isolation - 独立性・隔離性
Atomicity - 原子性
16
4つの大事な約束事SQL標準規格によって定められた、どんなDBMSも守らなければならない一般的なルール
Consistency - 一貫性・整合性
Isolation - 独立性・隔離性Durability - 永続性
Atomicity - 原子性
16
Atomicity - 原子性トランザクションは、それ以上分割することのできない最小の作業単位であるということです。このため、トランザクションを構成する処理の結果がすべて有効になるか、またはすべて無効になるかのいずれかであるということです。例えば、あるトランザクションに処理 A と処理 B があるとします。処理 A と処理 B が正しく実行されたときは両方の処理結果が有効になります。しかし、処理 A だけ、または処理 B だけが正しく実行された場合は、両方の処理結果が無効になります。
引用元:Webアプリ開発エンジニアのためのフィ術情報サイト[テックスコア]http://www.techscore.com/tech/sql/SQL11/11_01.html/
17
Atomicity - 原子性トランザクションは、それ以上分割することのできない最小の作業単位であるということです。このため、トランザクションを構成する処理の結果がすべて有効になるか、またはすべて無効になるかのいずれかであるということです。例えば、あるトランザクションに処理 A と処理 B があるとします。処理 A と処理 B が正しく実行されたときは両方の処理結果が有効になります。しかし、処理 A だけ、または処理 B だけが正しく実行された場合は、両方の処理結果が無効になります。
引用元:Webアプリ開発エンジニアのためのフィ術情報サイト[テックスコア]http://www.techscore.com/tech/sql/SQL11/11_01.html/
俺はやる時はやるぜ。やらない時には全然やらないんだ。中途半端にやるのは許せねえ。
17
Consistency - 一貫性・整合性
データベースに設定された制約を侵して、データの整合性を満たさなくするトランザクションの実行が中断される。例えば、NOT NULL制約のあるカラムにNULLを登録するSQLは一文単位で実行が取消される。つまり、実行されなかった扱いとなる。
18
Consistency - 一貫性・整合性
データベースに設定された制約を侵して、データの整合性を満たさなくするトランザクションの実行が中断される。例えば、NOT NULL制約のあるカラムにNULLを登録するSQLは一文単位で実行が取消される。つまり、実行されなかった扱いとなる。
データベースに設定された制約には、トランザクションの中でも当然従ってもらうぜ。
従わねえ奴には消えてもらう。
18
Isolation - 独立性・隔離性
処理対象が同じトランザクションが複数同時に実行される場合、お互いに情報が隔離・隠蔽された状態でデータの変更が行われる。例えば同じデータに変更を加える、トランザクションAとBが同時に実行される場合、トランザクションAが変更中のデータをBが更に変更を加えることはできず、トランザクションAが完了し、データが確定してからBの変更がなされる。
19
Isolation - 独立性・隔離性
処理対象が同じトランザクションが複数同時に実行される場合、お互いに情報が隔離・隠蔽された状態でデータの変更が行われる。例えば同じデータに変更を加える、トランザクションAとBが同時に実行される場合、トランザクションAが変更中のデータをBが更に変更を加えることはできず、トランザクションAが完了し、データが確定してからBの変更がなされる。
おっと、一度に処理できるトランザクションは
ひとつまでだ。すまないが、並んでくれ。
19
Durability - 永続性
コミットまたはロールバックにより、トランザクションが終了した段階で、その状態が保存される。たとえシステム障害によりデータが失われたとしても、この永続性によりデータの復旧が可能となる。具体的な方法として、トランザクションの実行記録をログとして保存しておき、そのログを使って障害前の状態に復旧する。
20
Durability - 永続性
コミットまたはロールバックにより、トランザクションが終了した段階で、その状態が保存される。たとえシステム障害によりデータが失われたとしても、この永続性によりデータの復旧が可能となる。具体的な方法として、トランザクションの実行記録をログとして保存しておき、そのログを使って障害前の状態に復旧する。
永遠が約束されたものがあるかって?
…俺たちにはログがあるじゃないか。
20
オートコミットの設定を確認する方法
mysql> SELECT @@autocommit;+--------------+| @@autocommit |+--------------+| 1 | +--------------+
24
オートコミットの設定を確認する方法
mysql> SELECT @@autocommit;
0:無効1:有効
+--------------+| @@autocommit |+--------------+| 1 | +--------------+
24