事务: 将业务处理的过程当做一个最小的业务处理单元来处理
比如: 朋友转账
事务有四大特性:
原子性:具有功能的最小单元,是密不可分;
永久性:事务处理的正确数据,是永久存储在数据库中,不能返回;
隔离性:一个事务在处理时,另外的事物要等待;
一致性:使用事务修改数据时,数据修改前和数据修改后,数据应该是平衡的;
事务什么存储引擎中使用:
默认存储引擎Myisam: 不支持事务
Innodb:支持事务,
事务创建
开启事务:BEGIN/START TRANSACTION;
建立锁机制
提交事务:commit; 事务成功
数据回滚:rollback 事务失败
事务锁机制
共享锁:(带有外部锁的玻璃大门) - 读锁
共享锁上可以创建共享锁,但是不能创建独占锁,创建共享锁的事务,所有的事务都可以读取数据,但是都不能操作数据
select 语句 lock in share mode.
select * from student [where sid=1] lock in share mode;
根据锁住的内容划分
行锁: 建立的某个锁只对某条数据有效 innodb 行锁;
页锁: 建立锁对某些同一页中的数据有效;
表锁: 建立锁是锁表的;- 锁表(mysql5之前,5之后出现了事务)
lock tables 表名 write/read;
具体的操作语句
unlock tables;
独占锁:(带有暗锁的黑皮大门) - 写锁
独占锁上不能创建任何的锁,创建独占锁的事务,可以添加,删除,修改,查询数据等,但是其他事务只能读取数据,并且读取到的数据是老数据。
select 语句 for update