我一直在阅读优秀的Developing Multi-tenant Applications for the Cloud, 3rd Edition,并试图了解分区对Windows Azure SQL数据库中查询性能的影响。
如果您使用共享模式方法并将所有租户记录放在一个表中并使用分区分隔它们的数据,那么由于表中的记录数量较多,这总是比单独的模式方法慢,或者分区是否有效地使每个分区像自己的表一样?
(我很欣赏查询执行速度只是选择多租户策略时要考虑的众多因素之一,我们并不仅仅基于性能做出决策。)
答案 0 :(得分:1)
对不同租户使用不同模式的方法也存在问题。例如,使用这种方法很容易使计划缓存膨胀,因为每个租户都有自己的查询计划集。因此,您最终可能会使用此方法进行更多重新编译(并降低性能)。
我建议您查看将每个租户放在自己的数据库中的方法。这提供了很好的隔离,并且与Azure SQL DB中的弹性数据库池相结合,它实际上变得非常实惠。文档的一个很好的切入点是:https://azure.microsoft.com/en-us/documentation/articles/sql-database-elastic-scale-introduction/。