我们有一个ASP.NET MVC3 Web应用程序,它包含以下内容:
为了性能优势,我们建议实施以下架构:
这是一个非常粗略的想法,我不确定它会给我们的系统带来性能提升。
支持它的论据是 80%的时间,操作是只读的。它们可以在缓存DB 上制作(因为它们被配置为只读,它们更快)。其他 20%可以在写入数据上进行。
但是,我有以下问题:
答案 0 :(得分:0)
设计不错,它类似于我曾经讨论过如何创建审计数据库的讨论,每个人都可以添加,但无法更新或删除。
如果状态设置为只读,则无法更改数据库,因此无法在SQL Server中利用该功能。我认为只读数据库的真正优势在于,您可以在执行查询时忽略锁定,并且可以创建专用索引,因为知道什么都不会改变。根据{{3}}(对于SQL 2005),将其设置为只读的收益并不是那么大。
如果您愿意牺牲某些一致性,可以将查询的隔离级别降低到例如读取已提交,以便生成更少的锁。
创建两个数据库的一个优点是,它使您能够跨不同的数据库服务器分隔数据库。即使CacheDb服务器具有100%的CPU负载和网络负载,这也可以保证写操作成功。
我认为写入数据库允许所有用户写入(甚至可能禁止读取?),而缓存数据库只会向用户提供读取权限,特定服务帐户具有写入权限。
Write DB和Cache DB之间的内容同步可以使用SQL Server Integration Services(SSIS)进行,我不认为设计传输逻辑会很困难。将两台服务器放在同一建筑物中,并且它们之间具有千兆位网络将意味着您在传输中的延迟将会很低。