【发布时间】:2010-12-08 07:10:37
【问题描述】:
我只是认为现在在您的数据库服务器上有足够的 RAM 来缓存您的完整数据库是很常见的为什么memory database 的专家(例如TimesTen,另请参阅@987654323 @) 几年前风靡一时但没有被更多使用?
似乎随着时间的推移,非基于磁盘的数据库的使用越来越少,例如,现在大多数应用程序都建立在传统的理性数据库之上。我原本预计会出现相反的情况,因为许多服务器的 RAM 已接近免费。
我在问这个问题,因为我刚刚阅读了 stack-overflow-architecture 并且页面上说
这很重要,因为 Stack Overflow的数据库差不多 完全在 RAM 中,连接仍然 成本太高了。
但我认为如果使用“指针”和“集合”而不是普通的 btree,这将不是问题。 Btree 非常聪明地获得了磁盘访问速度的限制,例如,它们交换 CPU 使用率以减少磁盘使用率。但是我们现在有这么匹配的 ram。
但我们仍然需要数据库,就像你自己做的那样
- 锁定
- 死锁检测
- 事务记录
- 正在恢复
- 等
很难。
@S.Lott,鉴于我们都花了很长时间选择索引、避免连接和调查数据库性能问题。一定会有更好的办法。几年前,我们被告知“内存数据库”是更好的方法。所以在我开始使用一个 etc 之前,我想知道为什么其他人没有更多地使用它们。
(我自己不太可能使用 TimesTen,因为它价格昂贵 ($41,500.00 / Processor),而且我不喜欢与 Oracle 销售人员交谈 - 我宁愿花时间编写代码。)
另请参阅:
- Alternative to the TimesTen in memory database
- Has anyone published a detailed comparison between different in-memory RDBMSs?
更新:
很久前我问过这个问题,现在 Microsoft SQL Server 有“In-Memory OLTP”,这是一个集成到 SQL Server 引擎中的内存优化数据库引擎。它并不便宜,但对于某些工作负载来说似乎非常快。
【问题讨论】:
-
"没有被更多使用?"超过什么?你有一些指标、数字或调查吗?我不明白这个问题。你有一个应该使用但不是的具体例子吗?或者这只是一个讨论话题?你需要了解什么?你有什么编程问题?
-
内存够用吗?即使是小型应用程序也可以轻松使用 100GB 的磁盘空间。我很少使用为单个应用程序提供这么多内存的服务器。
标签: database memory-management transactions in-memory-database