深入内存数据库
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
深入内存数据库 TimesTen
Alex Wang
1、概述
• 与传统数据库的比较 • TimesTen为什么快 • 性能指标 • 应用场景
2020/5/11
2
什么是内存数据库?
➢ 内存数据库将数据和元数据存放在内存中, 可以获得极高的响应速度并实现实时数据缓 存
➢ 数据库与应用程序共享一个地址空间
2020/5/11
8
TimesTen性能指标
2020/5/11
9
使用场景(1):常用数据缓存
缓存经常被访问的数据,提高应用的处理能力及反应 速度,减少网络和后台数据库的负载
2020/5/11
10
使用场景(2):热点数据缓存
缓存当前正使用的“热点数据”或重要客户的数据, 已提高反应速度优化服务,提高用户的忠诚度.
➢ 传统数据库由于磁盘IO、缓存管理、排队等待及锁的延迟等使 得事务实际平均执行时间与估算的最坏情况执行时间相差很大; 内存数据库由于没有磁盘IO和缓存管理,能搞准确估算事务响 应时间
➢ 内存数据库处理的数据通常是“短暂”的,即有一定的 时效。所以,实际应用中内存数据库主要处理实时性强 的业务逻辑处理数据。而传统数据库旨在处理永久、稳 定的数据,其性能目标是高的系统吞吐量和低的代价
• Read committed isolation • Serializable isolation
Isolation Level Dirty Read Read uncommitted Possible
NonRepeatable Read Possible
Read committed Not possible Possible
Optimization Typical deployment
Disk-centric(IO) Database tier
Memory-centric(CPU) Application tier
Architecture Response times
Data capacity Scalability
Client/server Milliseconds Tens of terabytes Unlimited SMP/cluster
2020/5/11
15
锁
处理并发性访问的机制,序列化多个应用对资 源的同时访问。TimesTen有三种锁机制:
✓DataStore级锁 其它进程不能同时访问该DataStore,即
DataStore级的锁都是排他的。只有在当前DataStore上没有活动 的事务时,才能获取DataStore级的锁。一旦获得DataStore级锁, 其它事务将被阻塞直到该锁定被释放。 初始化、数据批量导入产 生DataStore级锁。
针对Table, 换出的数据不能再换入!
2020/5/11
11
使用场景(3):实时交易
内存数据库是可对消息队列和事务进行处理的实时数 据库,并可把处理结果“push” 到后台数据库
巨大的性能差异!
2020/5/11
12
2、TimesTen的组成
• TimesTen的组成 • 日志和检查点 •锁 • 事务 • 访问方式 • XLA
Direct data access Microseconds
Tens of gigabytes Good SMP
2020/5/11
5
TimesTen为什么快?(1)
2020/5/11
6
TimesTen为什么快?(2)
2020/5/11
7
TimesTen为什么快?(3)
➢最小化磁盘IO ➢没有缓存管理的消耗 ➢针对物理内存的优化调度算法 ➢直接访问,没有IPC消耗 ➢风险:共享地址空间
Repeatable read Not possible Not possible
Serializable
Not possible Not possible
2020/5/11
18
查询优化(1)
基于Cost的优化器,优化器根据下面的因素计 算Cost:
2020/5/11
• Table and column statistics • Metadata information • Index choices • Scan methods • Join algorithm choice
✓表级锁 当事务要对一个表的大部分记录进行查询、修改
或者删除时,就会获得表级锁。也可通过命令ttOptSetFlag() 来手工动态设置。
✓行级锁 行级锁的并发性是最好的。它只锁定
要操作的行,所以不同的应用可以同时操作同一 个表中不同的行。
2020/5/11
16
事务(1)
Data store 可被多进程/多线程所共享:
➢ 完善的事务管理,针对物理内存的优化调度 算法和并发事务处理
➢ 关系型数据库,支持SQL92
➢ 数据可靠性、完善的数据恢复机制
2020/5/11
3
与传统数据库比较(1)
➢ 传统数据库的目的是处理永久、稳定的数据。强调维护数据的 完整性、一致性,但很难顾及数据及其处理的定时限制,不能 满足实时应用的需要
2020/5/11
13
TimesTen的组成
2020/5/11
14
日志和检查点
➢ 日志分为缓存和文件两部 分
➢ 双重检查点文件 ➢ Blocking/Non-Blocking ➢ 增量生成Checkpoint文件 ➢ 自动删除日志 ➢ 数据从检查点和日志中恢
复
LogBuffer的事务 可能丢失!!!
➢ 传统数据库是IO密集型应用,内存数据库为CPU密集 型应用
2020/5/11
wk.baidu.com
4
与传统数据库比较(2)
Characteristic Data model
Target applications
Oracle Database 10g Relational: SQL Mission-critical
Oracle TimesTen Relational: SQL Mission-critical
✓ ACID
完整的事务支持。不支持嵌套事务/XA
✓ 交易独立性
默认Read Committed事务级别 不支持MVCC 降低为串行事务级别
提高效率, 违反D!
✓ 隔离级别与并发性是互为矛盾的
隔离程度越高,数据库的并发性越差; 隔离程度越低,数据库的并发性越好
2020/5/11
17
事务(2)
TimesTen支持两级事务隔离:
Alex Wang
1、概述
• 与传统数据库的比较 • TimesTen为什么快 • 性能指标 • 应用场景
2020/5/11
2
什么是内存数据库?
➢ 内存数据库将数据和元数据存放在内存中, 可以获得极高的响应速度并实现实时数据缓 存
➢ 数据库与应用程序共享一个地址空间
2020/5/11
8
TimesTen性能指标
2020/5/11
9
使用场景(1):常用数据缓存
缓存经常被访问的数据,提高应用的处理能力及反应 速度,减少网络和后台数据库的负载
2020/5/11
10
使用场景(2):热点数据缓存
缓存当前正使用的“热点数据”或重要客户的数据, 已提高反应速度优化服务,提高用户的忠诚度.
➢ 传统数据库由于磁盘IO、缓存管理、排队等待及锁的延迟等使 得事务实际平均执行时间与估算的最坏情况执行时间相差很大; 内存数据库由于没有磁盘IO和缓存管理,能搞准确估算事务响 应时间
➢ 内存数据库处理的数据通常是“短暂”的,即有一定的 时效。所以,实际应用中内存数据库主要处理实时性强 的业务逻辑处理数据。而传统数据库旨在处理永久、稳 定的数据,其性能目标是高的系统吞吐量和低的代价
• Read committed isolation • Serializable isolation
Isolation Level Dirty Read Read uncommitted Possible
NonRepeatable Read Possible
Read committed Not possible Possible
Optimization Typical deployment
Disk-centric(IO) Database tier
Memory-centric(CPU) Application tier
Architecture Response times
Data capacity Scalability
Client/server Milliseconds Tens of terabytes Unlimited SMP/cluster
2020/5/11
15
锁
处理并发性访问的机制,序列化多个应用对资 源的同时访问。TimesTen有三种锁机制:
✓DataStore级锁 其它进程不能同时访问该DataStore,即
DataStore级的锁都是排他的。只有在当前DataStore上没有活动 的事务时,才能获取DataStore级的锁。一旦获得DataStore级锁, 其它事务将被阻塞直到该锁定被释放。 初始化、数据批量导入产 生DataStore级锁。
针对Table, 换出的数据不能再换入!
2020/5/11
11
使用场景(3):实时交易
内存数据库是可对消息队列和事务进行处理的实时数 据库,并可把处理结果“push” 到后台数据库
巨大的性能差异!
2020/5/11
12
2、TimesTen的组成
• TimesTen的组成 • 日志和检查点 •锁 • 事务 • 访问方式 • XLA
Direct data access Microseconds
Tens of gigabytes Good SMP
2020/5/11
5
TimesTen为什么快?(1)
2020/5/11
6
TimesTen为什么快?(2)
2020/5/11
7
TimesTen为什么快?(3)
➢最小化磁盘IO ➢没有缓存管理的消耗 ➢针对物理内存的优化调度算法 ➢直接访问,没有IPC消耗 ➢风险:共享地址空间
Repeatable read Not possible Not possible
Serializable
Not possible Not possible
2020/5/11
18
查询优化(1)
基于Cost的优化器,优化器根据下面的因素计 算Cost:
2020/5/11
• Table and column statistics • Metadata information • Index choices • Scan methods • Join algorithm choice
✓表级锁 当事务要对一个表的大部分记录进行查询、修改
或者删除时,就会获得表级锁。也可通过命令ttOptSetFlag() 来手工动态设置。
✓行级锁 行级锁的并发性是最好的。它只锁定
要操作的行,所以不同的应用可以同时操作同一 个表中不同的行。
2020/5/11
16
事务(1)
Data store 可被多进程/多线程所共享:
➢ 完善的事务管理,针对物理内存的优化调度 算法和并发事务处理
➢ 关系型数据库,支持SQL92
➢ 数据可靠性、完善的数据恢复机制
2020/5/11
3
与传统数据库比较(1)
➢ 传统数据库的目的是处理永久、稳定的数据。强调维护数据的 完整性、一致性,但很难顾及数据及其处理的定时限制,不能 满足实时应用的需要
2020/5/11
13
TimesTen的组成
2020/5/11
14
日志和检查点
➢ 日志分为缓存和文件两部 分
➢ 双重检查点文件 ➢ Blocking/Non-Blocking ➢ 增量生成Checkpoint文件 ➢ 自动删除日志 ➢ 数据从检查点和日志中恢
复
LogBuffer的事务 可能丢失!!!
➢ 传统数据库是IO密集型应用,内存数据库为CPU密集 型应用
2020/5/11
wk.baidu.com
4
与传统数据库比较(2)
Characteristic Data model
Target applications
Oracle Database 10g Relational: SQL Mission-critical
Oracle TimesTen Relational: SQL Mission-critical
✓ ACID
完整的事务支持。不支持嵌套事务/XA
✓ 交易独立性
默认Read Committed事务级别 不支持MVCC 降低为串行事务级别
提高效率, 违反D!
✓ 隔离级别与并发性是互为矛盾的
隔离程度越高,数据库的并发性越差; 隔离程度越低,数据库的并发性越好
2020/5/11
17
事务(2)
TimesTen支持两级事务隔离: