[MySql学习笔记] 四 存储引擎事务处理
MySql有一个重要的特征,被称为Pluggable Storage Engine Architecture(可替换存储引擎构架)。有两个重要的存储引擎:MyISAM 和 InnoDB 。其中MyISAM不支持事务处理,但是速度较快,InnoDB支持行锁定及事务处理,比MyISAM速度稍慢。有一个最新的存储引擎Falcon也支持事务处理,以后可以研究一下。Mysql5.5使用的默认存储引擎是InnoDB。
使用命令 SHOW CREATE TABLE 表名 命令可以显示使用的是哪种存储引擎。更改表的引擎可以使用ALTER TABLE 表名 ENGINE=新引擎
在sql命令后面用\G来代替分号,可以使得显示的内容更加有条理。
跟事务相关的命令有 BEGIN(或者 START TRANSACTION), COMMIT, ROLLBACK。
1 mysql> SELECT * FROM CUSTOMER 2 -> ; 3 +-------+----------+------------+------+ 4 | mid | nam | birth | sex | 5 +-------+----------+------------+------+ 6 | H0001 | 鏉庡姞 | NULL | 0 | 7 | H0002 | 张喜双 | 1988-05-31 | 0 | 8 | M0001 | 鏉庡欢 | 1976-02-05 | 1 | 9 | M0004 | 瀹嬪+ | 1956-08-15 | 1 | 10 | M0005 | 鏈辨灄 | 1982-06-08 | 0 | 11 | N0001 | 灏忓皬 | 1980-11-23 | 1 | 12 | T0001 | 鐜嬩簩 | 1980-10-21 | 1 | 13 +-------+----------+------------+------+ 14 7 rows in set (0.00 sec) 15 16 mysql> BEGIN; 17 Query OK, 0 rows affected (0.00 sec) 18 19 mysql> DELETE FROM CUSTOMER; 20 Query OK, 7 rows affected (0.00 sec) 21 22 mysql> SELECT * FROM CUSTOMER; 23 Empty set (0.00 sec) 24 25 mysql> ROLLBACK; 26 Query OK, 0 rows affected (0.00 sec) 27 28 mysql> SELECT * FROM CUSTOMER; 29 +-------+----------+------------+------+ 30 | mid | nam | birth | sex | 31 +-------+----------+------------+------+ 32 | H0001 | 鏉庡姞 | NULL | 0 | 33 | H0002 | 张喜双 | 1988-05-31 | 0 | 34 | M0001 | 鏉庡欢 | 1976-02-05 | 1 | 35 | M0004 | 瀹嬪+ | 1956-08-15 | 1 | 36 | M0005 | 鏈辨灄 | 1982-06-08 | 0 | 37 | N0001 | 灏忓皬 | 1980-11-23 | 1 | 38 | T0001 | 鐜嬩簩 | 1980-10-21 | 1 | 39 +-------+----------+------------+------+ 40 7 rows in set (0.00 sec)
一般来说,如果不用事务处理,则会自动被COMMIT,比如使用MyISAM时就会自动提交,在使用InnoDB时可以设置参数AUTOCOMMIT来确定是否自动提交。
将自动提交功能置为OFF 则 SET AUTOCOMMIT=0 将自动提交设置为ON 则用命令 SET AUTOCOMMIT=1; 查看当前状态 SELECT @@AUTOCOMMIT;
部分回滚,可以定义保存点(SAVEPOINT)然后回滚到指定的保存点签的状态 SAVEPOINT 保存点名; ROLLBACK TO SAVEPOINT 保存点名;
以下几条SQL命令,执行后将被自动提交,是在事务处理可以利用的范围之外的。
- DROP DATABASE
- DROP TABLE
- DROP
- ALTER TABLE