数据库系统原理第十四节
数据库安全和保护
事务与并发控制
所谓事务是用户定义的一个数据操作序列
,这些操作可作为一个完整的工作单元,要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务中的操作一般是对数据的更新操作,包括增删改
以 begin transaction
开始
commit 或 rollback结束
事务的特征
- A 原子性
- C 一致性
- I 隔离性
- D 持续性
并发操作问题
- 丢失更新
- 不可重复读
- 读‘脏’数据
封锁
封锁 是最常用的并发控制技术
基本思想:需要时,事务通过向系统请求对它所希望的数据对象加锁,以确保它不被非预期改变
一个锁
实质上就是允许或阻止一个事务对一个数据对象的存取特权
基本的封锁类型
- 排它锁,用于写操作
- 共享锁,用于读操作
封锁的粒度
粒度越细,并发性就越大,但软件复杂性和系统开销也就越大
封锁的级别
又称为一致性级别或隔离度
- 0级封锁:不重写其他非0级封锁事务的未提交的更新数据
- 1级封锁:不允许重写未提交的更新数据。防止了丢失更新的发生
- 2级封锁:既不重写也不读未提交的更新数据(防止了读脏数据)
- 3级封锁:不读未提交的更新数据,不写任何(包括读操作)未提交数据
活锁:先来先服务
死锁:预防
- 一次性锁请求
- 锁请求排序
- 序列化处理
- 资源剥夺
可串行性
一组事务的一个调度就是它们的基本操作的一种排序
在数据库系统中,可串行性就是并发执行的正确性准则
两段封锁法
- 发展或加锁阶段
- 收缩或释放锁阶段
备份与恢复
备份
1 | select * into outfile 'file_name' export_options |
dumpfile 导出的备份文件里面所有的数据都彼此紧挨着
导入
1 | load data infile 'file_name' into table table_name |
数据库生命周期
- 需求分析
- 系统功能与数据库的设计
- 系统功能与数据库的实现
- 测试与维护
php mysql应用
连接数据库非持久连接
1 |
|