- 1、本文档共50页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
SQLServer内存数据库揭秘
Hekaton
Aboutme
@shanksgao
agenda
为什么需要全新的引擎?
Hekaton实现
带来的帮助与挑战
RDBMS的发展
内存价格日趋便宜低于10$/GB
摩尔定律魔力减弱,CPU计算提速减慢多核架构发展迅速
传统数据库经过多年发展如今性能提升缓慢
现有数据库引擎木有可能。。假设
现有数据库引擎木有可能。。
100万指令/事务
100万指令/事务100TPS
90%CPU指令减少
1,000TPS?
10万指令/事务
10,000
10,000TPS?
1万指令/事务
-99%CPU指令减少
为什么要新引擎?
现有引擎中将所有表数据装入内存后我们还会面临。。。
内存中的共享数据架构所使用的闩锁(热区问题)
为保证并发事务所采用的锁技术(阻塞/并发问题)
当前数据库引擎执行方式(语句执行效率,CPU高消耗)
HEKATON
基于内存优化,但持久化
高性能的OLTP引擎
完全集成于现有SQLServer中
基于当前CPU架构设计
Page#BufferPool7QI发起IO请求
Page#
BufferPool
7
QI发起IO请求Q2访问第7页
Q2将读到脏页
BufferFrame
Q1
继续
I/O完成Time内存架构分配
I/O完成
Time
Q1访问第七页
Q1访问第七页
Q2访问第7页Q1发起IO请求内存架构分配并闩锁保护Q1Q2
Q2访问第7页
Q1发起IO请求
内存架构分配
并闩锁保护
Q1访问第七页
Q1访问第七页
Q2将被闩锁阻塞10ms.Q1I/O完成闩
Q2将被闩锁阻塞
JimGray-两阶段锁
Q1:A=A+100DB操作:ReadA,A=A+100,WriteA
Q2:A=A+500DB操作:ReadA,A=A+500,WriteA
执行流程
A=A+100A=A+500
A=1500A=
A=1500
A=1100
A=1000
Q2
读取A
Q1
读取A
Q1
修改A
Q2
修改A
Q2修改AQ2
Q2
修改A
Q2
读取A
Q1Q2Q1
读取A将被阻塞修改A
TimeA=1000lll
Time
A=1000lll
A=1600A=
A=1600
Q2解除阻塞A=A+100A=A+500Q1在A上申请排他Q2试图访问A锁(
Q2
解除阻塞
A=A+100
A=A+500
解释性语言(执行计划)
Select…From…Where…
语义分析,优化后生成SQL执行计划执行相应计划时
调用数据库的函数,运行每个运算符
cwe当数据在硬盘上时计算资源/时间高消耗
cwe
Exp
Expcnsive
当数据在硬盘上时计算资源/时
当数据在硬盘上时计算资源/时间高消耗
如果数据均在内存中可以改进很多!
如果数据均在内存中可以改进很多!
DIM
SQLSERVER
HEKATON
Shareddatastructures
Latches
Lock-freedatastructures
Concurrencycontrol
Locking
Versionsw/timestamps+optimisticconcurrency
control
QueryExecution
Interpretation
CompilationintoDLL
比较某个内存位置的给定值
比较某个内存位置的给定值如果相等则赋予新值
CompareandSwap(CAS)
AddressNewValue
M
X0CompareAndSwap(M,20,0)
X
0
Compare
Value
增量更新(DeltaUpdates)
每次在某一数据页上的更新将生成一个新的地址(Delta)新地址将作为现有数据库页的入口
采用CAS完成映射表中(mappingtable)物理新地址的映射(deltaaddress)
△:Deleterecord48↓△:
△:Deleterecord48
↓
△:Insertrecord50
PageP
PID
PhysicalAddress
P
更新竞争(UpdateContention)
文档评论(0)