事务处理及锁定

1.了解Mysql的存储引擎
mysql提供了多种存储引擎,用户可以根据自己的目的或洗好来选择存储引擎。
2.设置存储引擎
要使用事物处理功能时,必须将表设置为InnoDB引擎。有的Mysql版本安装后,并没有激活InnoDB引擎,这时候需要修改my.ini等文件来激活InnoDB
引擎。
确认现在使用了什么存储引擎:show create table customer;
engine=InnoDB 等于后面的部分是正使用中的引擎。通常没有特别指定的引擎,将默认引擎MyISAM。
3.存储引擎的改变:
alter table customer ENGINE=MyISAM;
4.事务处理:
演示简单的事物处理-----删除后回滚
首先将表customer的存储引擎该为InnoDB。
alter table customer ENGINE=InnoDB;
确认表customer中的数据。
select * from customer;
事物开始。
begin;
删除表customer中的全部数据。
delete from customer;
再次确认customer中的数据。
select * from customer;
回滚处理。
rollback;
确认customer中的数据是够恢复。
select * from customer;
注意:如果将rollback换成commit,那么删除的处理就被提交,在也不可恢复,在执行commit前还需要最后确认以下。
5.自动提交功能
将自动提交功能设置为off:set autocommit=0;
将自动提交功能设置为on:set autocommit=1;
6.部分回滚----只提交针对数据库的部分操作
上面学习了rollback语句的最基本用法,即回滚到事物开始的状态。其实还可以在事物处理过程中定义保存点 savepoint,然后回滚到指定的保存点前的状态,其工作原理:
下面将向表插入3条数据,在第二条数据的后面定义一个保存点。
begin;
insert into customer values(‘T001’,'王二小',‘1990-01-01’,‘1’);
insert into customer values(‘T002’,'小明',‘1990-01-01’,‘1’);
SAVEPOINT sp;
insert into customer values(‘T003’,'小红',‘1990-01-01’,‘0’);
select * from customer;
rollback to savepoint sp;
select * from customer;
结果显示sp 保存点以后的插入记录没有插入进去。
7.事物处理的利用范围:
下面几条sql命令,执行后将自动被提交,是在事物处理可以利用的范围之外。
drop database;
drop table;
drop;
alter table;
8.锁定的种类:
按照使用的目的可以将锁分为共享锁定(Shared Lock)与排他锁定(eXclusive Lock)。
共享锁是当前用户参照数据时,将对象数据变为只读形式的锁。
排他锁定是使用insert、update、delete 命令数据进行更新时锁定。
9锁定粒度
锁定对象的大小,单位通常被称为锁定的粒度。
记录(行)。
表。
数据库。

猜你喜欢

转载自even521.iteye.com/blog/2152544