SQL Server内存数据库揭秘.docxVIP

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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)

152****1430 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档