sql-server - 使用Redis实现的Sql Server内存表

标签 sql-server performance caching redis in-memory

从 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);

https://msdn.microsoft.com/en-us/library/dn133186.aspx

关于sql-server - 使用Redis实现的Sql Server内存表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39166400/

相关文章:

javascript - Redis 与 Javascript 对象。 Redis 在这种情况下有什么优势?

sql - 如何在 SQL Server 中格式化 T SQL SELECT 输出

c# - 具有多个 OR 条件的 EF core 连接

sql-server - 在 mssql 中使用 LastIndexOf 和 SubString

c#-4.0 - System.Web.UI.Control.LoadRecursive() 在我的用户控件或页面中调用了多次

python - 查找图像中所有像素对之间的距离

java - 在 JPA 中,EntityManager.refresh() 对于禁用的缓存有用吗

sql - 无法通过脚本将用户添加到 db_datareader

java - 我可以进一步改善此正则表达式的性能吗

java - 清除所有已安装应用程序的缓存