从 Sql Server 2014 开始,微软实现了内存中 OLTP,我认为这是一个非常有趣的功能! 我从未尝试过,但我很感兴趣,因为它确实可以加快我的“阅读”操作(我的意思是选择查询)。
我的想法是直接向磁盘(而不是在内存中)运行“写入”操作(插入、更新、删除),以确保数据被持久写入。 相反,“READ”操作(特别是对大表的查询、Application_Startup 处的计数器、ecc)将在内存中完成。
现在我有一些问题: 1)内存表是否以某种方式与磁盘中保存的数据同步?
2)是否可以实现我上面写的或者我误解的内容?
3)由于Sql Server 2016的企业版对于初创公司或小公司来说成本太高,是否可以使用Redis来实现这一切? 我也是 Redis 的新手,我不确定它是否具有“内存中”表功能。 在Google上搜索我发现它做了一个缓存(不清楚什么,查询?)并且它是一个内存中的数据结构存储(键值对)
先谢谢你们了
最佳答案
回答您的第一个问题和第二个问题:
SQL Server 2016 中的内存可以通过两种方式创建,一种是仅使用架构 - 这意味着数据是 volatile 的并且仅保留在内存中
CREATE TABLE TestInMem (
i int,...<columns>
)
WITH (MEMORY_OPTIMIZED = ON,
DURABILITY = SCHEMA_ONLY);
另一种方式是架构和数据 - 这里两者都将定期保存到辅助存储中,并且您的操作会更快,因为您将直接访问主内存来访问数据。
CREATE TABLE TestInMem (
i int,...<columns>
)WITH (MEMORY_OPTIMIZED = ON,
DURABILITY = SCHEMA_AND_DATA);
关于sql-server - 使用Redis实现的Sql Server内存表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39166400/