SQL Server 2014内存中OLTP与Redis

时间:2014-08-20 10:54:36

标签: sql-server redis memory-optimized-tables

SQL Server 2014的内存中OLTP(Hekaton)是否与 Redis 具有相同或相似的概念?

我使用Redis进行内存存储(存储在RAM中)和缓存,同时使用单独的SQL Server数据库(如StackExchange)。 Hekaton可以做同样的事情吗?

2 个答案:

答案 0 :(得分:21)

它们主要是在记忆中相似,但就是它。

Redis 是内存中的键值数据库。如果配置它,它可以将数据保存到磁盘,但它会将整个数据集保留在内存中,因此您需要足够的RAM。键值体系结构允许各种不同的数据类型,因此您可以将值存储为简单的字符串或列表,集合,哈希等。基本上,您可以在编程语言中使用的所有数据结构都可以在本机中使用。

SQL Server Hekaton(内存中OLTP)是一种新的引擎,用于在内存中运行关系表。这些表的所有数据都保存在RAM中,但也存储在磁盘上,因此它们是完全耐用的。

Hekaton可以在SQL Server数据库中获取单个表,并使用MVCC(而不是页面和锁定)和其他优化在不同的进程中运行它们,因此操作比传统的基于磁盘的引擎快数千倍。进行了大量的研究,主要的用例是采用负载较重的表并将其切换到内存中运行以提高性能和可伸缩性。

Hekaton并不是要在内存中运行整个数据库(尽管你可以这样做,如果你真的想这样做),而是作为一个新的引擎,设计用于处理特定情况,同时保持界面相同。最终用户的一切与SQL Server的其余部分完全相同:您可以使用SQL,存储过程,触发器,索引,ACID属性的原子操作,并且可以在常规表和内存表中无缝地处理数据。

由于Hekaton的性能潜力,如果您需要速度并希望在传统关系表中建模数据,则可以使用它来替换Redis。如果您需要Redis的其他键值和数据结构功能,那么最好还是坚持下去。


使用SQL 2016 SP1及更新版本,SQL Server的所有层现在都有access to the same features,唯一的区别是支持和容量的定价。

答案 1 :(得分:1)

首先,您需要SQL Server的企业版(v ery expensive )才能使用Hekaton(内存中OLTP)。请注意,您必须为每个CPU支付sql server,为SQL Server添加更多工作负载可能需要您拥有更多CPU,因此需要更多许可证成本。

但与Redis不同,您可以将触发器或存储过程更新为“内存缓存”,作为数据库事务的一部分。您可能还发现Hekaton足够快,您不需要从主表中单独设置一组缓存。

所以是的,Hekaton可以和Redis一样,但以这种方式使用它是不明智的,除非它的使用不会花费太多。

当Hekaton允许您处理更多数据而不必投入重新设计系统的编程成本以利用Redis或其他方式进行缓存时,Hekaton自成一体。 < / p>