数据库原理

数据库原理

1.事务

ACID

原子性
一致性
隔离性
持久性

2.并发一致性问题

修改覆盖(写写之间并发)

读取其他事务修改的数据:t1修改,t2修改,t2修改覆盖t1修改,t1最后读取t2修改的数据

脏读(写读之间并发)

读取其他事务未提交的数据:t1修改未提交,t2读取,t1回滚,t2读取了t1未提交的数据

不可重复读

同一个事务读取数据行值前后不一致:t1读取,t2修改,t1再次读取,前后读取不一致

幻读

同一个事务读取范围值前后不一致:t1读取范围值,t2在此范围内插入数据,t1再次读取范围值不一致

3.封锁

封锁类型

排他锁X/共享锁S
    SS锁兼容,其他均不兼容;读读锁兼容,读写、写写锁之间不兼容
意向锁IX/IS
    事务T对表A加锁时,需要判断是否有其他事务对表A或表A中任意一行加锁,需要全表扫描
    意向锁规定,当事务对数据行加锁时,首先获得表的意向锁,事务T对表A加锁时,就不需要全表扫描了

封锁协议

一级封锁协议
	事务T对数据行写操作需要获得X锁(可以解决写写之间并发,修改覆盖)
二级封锁协议
	事务T对数据行读操作需要获得S锁(可以解决读写之间并发,脏读:其他事务写操作未提交,不释放X锁,T读操作无法获得S锁,直到其他事务提交)
三级封锁协议
	事务T对数据行读操作需要获得S锁,直到事务结束释放(可以解决不可重复读:T不释放S锁,其他事务无法获得X锁进行写操作。)

4.事务隔离性

未提交读

Read Uncommited

提交读

Read Commited

可重复读

Repeatable Read

可串行化

Serializeable

5.多版本并发控制MVCC

Undo日志

MVCC使用到的快照存储在Undo-log中,记录数据行的所有操作快照,通过回滚指针将快照链接。

隐藏的列

每行记录后面保存着两个隐藏的列,创建版本号、删除版本号
创建版本号:创建一个数据行快照时的系统版本号
删除版本号:如果快照的删除版本号大于当前系统版本号,说明快照有效,否则无效

版本号

系统版本号:自增序号,每开启一个事务,系统版本号加一
事务版本号:事务开始时系统版本号

实现方式

select
	创建版本号 < 事务T版本号 < 删除版本号
	读取操作事务T所要读取的数据行创建版本号要小于T的创建版本号,否则说明其他事务对数据行有修改,产生脏读
	同时此数据行的删除版本号要大于T的版本号,否则表示此数据行已经删除
insert
	将当前系统版本号作为数据行快照的创建版本号
delete
	将当前系统版本号作为数据行的删除版本号
update
	将当前系统版本号作为数据行的删除版本号,将当前系统版本号作为更新后的数据行的创建版本号,可以理解为先delete后insert

快照读

读取快照中的数据,减少加锁带来的开销
select * from table ...

当前读

读取最新的数据,需要加锁
select * from table share in mode
select * from table for update
insert 
delete
update

6.Next-key Lock

Record Lock:记录行的索引加锁

Gape Lock:索引间隙加锁

Next-key Lock:以上两者结合

Next-key Lock + MVCC 解决幻读
根据原作 https://pan.quark.cn/s/459657bcfd45 的源码改编 Classic-ML-Methods-Algo 引言 建立这个项目,是为了梳理和总结传统机器学习(Machine Learning)方法(methods)或者算法(algo),和各位同仁相互学习交流. 现在的深度学习本质上来自于传统的神经网络模型,很大程度上是传统机器学习的延续,同时也在不少时候需要结合传统方法来实现. 任何机器学习方法基本的流程结构都是通用的;使用的评价方法也基本通用;使用的一些数学知识也是通用的. 本文在梳理传统机器学习方法算法的同时也会顺便补充这些流程,数学上的知识以供参考. 机器学习 机器学习是人工智能(Artificial Intelligence)的一个分支,也是实现人工智能最重要的手段.区别于传统的基于规则(rule-based)的算法,机器学习可以从数据中获取知识,从而实现规定的任务[Ian Goodfellow and Yoshua Bengio and Aaron Courville的Deep Learning].这些知识可以分为四种: 总结(summarization) 预测(prediction) 估计(estimation) 假想验证(hypothesis testing) 机器学习主要关心的是预测[Varian在Big Data : New Tricks for Econometrics],预测的可以是连续性的输出变量,分类,聚类或者物品之间的有趣关联. 机器学习分类 根据数据配置(setting,是否有标签,可以是连续的也可以是离散的)和任务目标,我们可以将机器学习方法分为四种: 无监督(unsupervised) 训练数据没有给定...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值