In-Memory OLTP 技术详解
1. 执行环境
In-Memory OLTP 系统的事务执行环境与传统 SQL 事务有所不同,它是一个独特的“引擎中的引擎”,具有以下特性:
- 内存优化表始终驻留在内存中,这意味着事务不会因 I/O 操作而停滞,优化器的成本计算也会有所不同,同时需要足够的内存来存储所有优化后的数据。
- 对内存优化表的事务采用隔离语义,完全无锁。这通常是有利的,但也有一些情况需要注意。
根据查询的执行方式,有两种不同的执行环境:
- 查询互操作(Query Interop) :用于临时 SQL 查询、传统存储过程和其他 T-SQL 模块。可以从其他模块(如触发器、用户定义函数等)引用内存优化表。这种环境下,适应 In-Memory OLTP 环境的工作量最小,因为不需要将存储过程移植到更严格的原生编译环境。
- 原生编译过程(Natively Compiled Procedures) :具有最高的性能提升和执行效率,但在 T-SQL 表面区域和事务语义方面有更多限制。
2. 隔离级别
In-Memory OLTP 目前提供有限的隔离级别,默认隔离级别是快照(Snapshot),支持可重复读(Repeatable Read)和可串行化(Serializable)隔离级别。不支持未提交读(Read Uncommitted)、已提交读(Read Committed)和已提交读快照(Read Committed Snapshot)隔离级别。任何涉及内存优化表的事务必须在支持的隔离级别下运行。
在传统 SQ
超级会员免费看
订阅专栏 解锁全文
5430

被折叠的 条评论
为什么被折叠?



