MySQL数据库基础与实例教程
之
事务机制和锁机制
孔祥盛
内容一览
本章探讨了数据库中
事务与锁机制的必要性, 1 事务机制
讲解了如何在数据库中
使用事务与锁机制实现 2 锁机制
数据库的一致性以及并
发性,并结合“选课系统” 3 事务的ACID特性
讲解事务与锁机制在该
系统中的应用。 4 事务与锁机制注意事项
9.1 事务机制
事务通常包含一系列更新操作,这些更新操作是
一个不可分割的逻辑工作单元。如果事务成功执
行,那么该事务中所有的更新操作都会成功执行、
并将执行结果提交到数据库文件中,成为数据库
永久的组成部分。如果事务中某条更新操作执行
失败,那么事务中的所有操作均被撤销。
9.1 事务机制
简言之:事务中的 1 事务的必要性
更新操作要么都执 2 关闭MySQL自动提交
行,要么都不执行,
这个特征叫做事务 3 回滚
的原子性。
4 提交
5 事务
9.1 事务机制
简言之:事务中的
更新操作要么都执 6 保存点
行,要么都不执行,
这个特征叫做事务 7 “选课系统”中的事务
的原子性。
9.1.1 事务机制的必要性
对于银行系统而言,转账业务是银行最基本
的、且最常用的业务,有必要将转账业务封
装成存储过程,调用该存储过程后即可实现
两个银行账户间的转账。
任务布置1:上机操作,完成本书场景描述1
的任务要求,理解事务的必要性。
9.1.2 关闭MySQL 自动提交
关闭自动提交的方法有两种:一种是显示地
关闭自动提交,一种是隐式地关闭自动提交。
方法一:显示地关闭自动提交
使用MySQL命令“set autocommit=0;”,可
以显示地关闭MySQL 自动提交。
9.1.2 关闭MySQL 自动提交
方法二:隐式地关闭自动提交
使用MySQL命令“start transaction;”可以
隐式地关闭自动提交。隐式地关闭自动提交,
不会修改系统会话变量@@autocommitte的
值。
推荐使用方法二。
9.1.3 回滚
关闭MySQL 自动提交后,数据库开发人员可
以根据需要回滚(也叫撤销)更新操作。
任务布置2 :上机操作,完成本书场景描述2
以及场景描述3的任务要求,理解回滚的作用。
9.1.4 提交
MySQL 自动提交一旦关闭,数据库开发人员
需要“提交”更新语句,才能将更新结果提交
到数据库文件中,成为数据库永久的组成部
分。自动提交关闭后,MySQL的提交方式分
为显示地提交与隐式地提交。
9.1.4 提交
显示地提交:MySQL 自动提交关闭后,使用
MySQL命令“commit;”可以显示地提交更新
语句。
隐式地提交:MySQL 自动提交关闭后,使用
下面的MySQL语句,可以隐式地提交更新语
句。
9.1.4 提交
begin、set autocommit=1、
start transaction、rename table、
truncate table等语句;
数据定义(create 、alter 、drop )语句,例
如create database、create table、
create index、create function、
create procedure、alter table、
alter function、alter procedure、
drop database、drop table、
drop function、drop index、
drop procedure等语句;
9.1.4 提交
权限管理和账户管理语句:
例如grant、revoke