如何使用共享数据库和共享模式方法提高多租户的性能

Posted

技术标签:

【中文标题】如何使用共享数据库和共享模式方法提高多租户的性能【英文标题】:How to do Performance Improvement for Multi tenacy with Shared Database and Shared Schema Approach 【发布时间】:2015-11-04 10:56:26 【问题描述】:

我正在使用共享数据库和共享架构方法构建多租户。

最初,当我在这些数据库上执行存储过程时,我有 5 个独立的数据库,我将在 1 秒左右更快地获得结果。我在多租户数据库中执行了相同的 sp。我在 5 到 6 秒左右得到了结果。

我知道单个数据库在表中只有很少的记录。在多租户数据库中有多个租户数据。所以我得到的结果比较慢。

我已经为tenantId 列引入了足够多的索引。

我的问题是如何优化我的多租户数据库以获得更快的结果。

请向我建议任何针对整个数据库或至少针对具有数百万条记录的表的性能改进解决方案。

注意:由于权限,我无法分享执行计划或sql查询。

【问题讨论】:

有点宽泛的问题,没有查询,没有查询计划,没有架构。 我有很多 SP 和意见。我试图获取一个 SP 的执行计划,但该 sp 再次生成了大约 20 个执行计划。 【参考方案1】:

从您希望优化的特定查询开始。检查执行计划。创建计划指示缺失的任何索引。

对您希望优化的所有查询执行相同操作。

【讨论】:

是否可以在数据库级别进行任何优化 可能可以重新设计您的数据库以使您的查询更简单,从而更快,但这是一个广泛的话题,我相信这不是您的意思。没有魔法按钮。性能优化是一个乏味且注重细节的过程。 您可以考虑在 dba.stackexchange.com 上询问这个问题,看看是否有任何 DBA 拥有的事情可以做,关于检查损坏的索引、磁盘问题等。这个网站是从开发者的角度来回答。

以上是关于如何使用共享数据库和共享模式方法提高多租户的性能的主要内容,如果未能解决你的问题,请参考以下文章

多租户实现之基于Mybatis,Mycat的共享数据库,共享数据架构

什么是多租户模式?

Mybatisplus搭建多租户模式(共享库表,按租户id字段区分租户)

共享多租户 MySQL 数据库的可扩展性

Mybatis-Plus 3.4.0多租户的实现方案

SaaS模式应用之多租户系统开发(单数据库多Schema设计)