用于SQL Server OLTP环境的Web缓存服务器.建议



我继承了一个大容量OLTP数据库,我可以自由地改进它,只要我发现合理的可能。这些改进已经很有帮助了,但我想让它更上一层楼。我发现的数据访问模式使它成为IMO在其他服务器上缓存数据的一个很好的候选,我很想听到任何人关于这种设置的经验或建议。

我们有一个DB,每天向表中添加大约3GB的数据,过去报告它非常慢。数据一旦放入就不会改变,并且不会插入超过一周的数据。在最近3天内输入的行往往会在数千万行之间看到数千个插入。

我想有超过2周的数据被推出到MongoDB。然后,我可以有2周的滑动窗口数据,不推到Mongo be,被某种缓存软件缓存,所以那些得到查询和显示,而不是数据被读出DB的整个时间。我认为通过让DB引擎验证所有数据,我们仍然可以获得完全的A.C.I.D遵从性,因为它没有击中DB,所以具有高读取性能,然后当它不再是一个"事务"时,Mongo可以接受它。

谁有什么建议的解决方案?我在看MemCached,但不太确定这是否是一个好的甚至是可信的解决方案。谢谢!

你可以考虑的另一件事是在SQL Server 2014中使用新的内存OLTP功能。该特性提高了OLTP工作负载的效率和可伸缩性。您将有可能从现有的服务器中获得更多的东西,而不需要考虑特定的缓存机制。

我没有SQL Server的具体经验,但你所描述的确实像是MongoDB的有效用例。

请注意,虽然MongoDB不能直接处理事务,但它能够以原子方式处理某些操作(例如,参见findAndModify)。此外,启用日志记录功能后,您就不必担心持久性问题。MongoDB是一个可靠的数据存储,不会丢失或损坏您的数据。

MongoDB本身也可以作为一个高性能的缓存,如果你运行第二个部署禁用日志记录。在这种情况下,写操作将在内存中进行,并且每隔60秒才持久化到磁盘(除非另有配置)。这将提供与memcache相当的性能,memcache完全在内存中,同时允许您保持堆栈简单一点。

希望这对你有帮助!

最新更新