设置数据库的存储引擎
mysql中的存储引擎有
存储引擎 | 特征 |
---|---|
MyISAM | 不支持事务处理 |
InnoDB | 支持行锁定以及事务处理,比MyISAM处理速度稍慢 |
ISAM | MyISAM引擎的前身。mySQL5.0后不再安装 |
MERGE | 将多个MyISAM类型的表作为一个表来处理的引擎 |
MEMORY,HEAP | 只在内存上保存数据 |
Falcon | 一种新的存储引擎,支持事务处理 |
ARCHIVE | 将数据压缩后存储(只能进行INSERT和SELECT操作) |
CSV | 以CSV形式保存数据(应用于跨平台的数据交换) |
查看数据库当前引擎:show create table tablename \G
使用\G替换语句后的分号,使显示出的数据更有条理。
设置存储引擎
更改某一个表的存储引擎
alter table tablename ENGINE = InnoDB;
事务回滚操作
回滚操作必须在支持事务的引擎下才行。
代码如下:
begin;
操作;
rollback;
在执行之前,先begin,执行操作之后,执行rollback即可回滚。
如果执行rollback之前执行了commit;那么无法回滚。
如果数据库自动提交功能是off,这样,不使用begin命令也可以回滚。
设置自动提交开关:set AUTOCOMMIT=0;(关)=1;(开)
查看当前自动提交状态使用,select @@AUTOCOMMIT;
部分回滚
在事务处理过程中定义保存点(SAVEPOINT),可以回滚到指定保存点。语法如下:
定义保存点:savepoint 保存点名;
回滚:rollback to savepoint 保存点名;
事务不起作用的代码
- drop database;
- drop table;
- drop;
- alter table;
这些sql执行后会被立即commit,不能回滚。
待续