saas多数据库,如果单个租户访问较大占完mysql连接数怎么办

酒米

假设有100个租户,mysql最大连接数50,如果1号租户当前访问比较多,会不会占完最大连接数,如果占完有处理办法吗

719 2 4
2个回答

walkor

可以尝试只配置一个连接,然后通过USE语句切换数据库。

Db::statement('USE your_database_name');

例如写一个中间件,判断当前属于哪个租户,然后切换到对应租户的数据库。
这样每个进程只有一个数据库连接,只要保证进程数不超过数据库最大连接数就可以。

  • Le 2024-07-16

    这样是不是需要把数据库放在不同的服务器上

  • walkor 2024-07-16

    这种方案是不同的数据库在同一个服务器,并且是同一个端口

  • 酒米 2024-07-16

    大佬你说的方法我试过了,很棒,然后我设想了一下情况,如果a租户他的访问非常大,可以给他开通一个单独的数据库服务器,配置参数做表示A,中间件判断如果是A就切换服务器,如果不是A就用use的办法切换。但最后我感觉如果真有这样的租户,还是完整的走单独服务,要不然进程数也会限制最大连接数

calvin

这是队列消费也是带上数据库信息动态切换后在执行任务?

  • damao 2024-07-17

    队列消息必须带租户信息(或数据库信息)吧,否则你都不知道处理的是谁的,需要操作数据库时也不知道操作哪个库

  • tanhongbin 2024-07-17

    这是啥需求?

  • calvin 2024-07-17

    还有没别的方案,现在就是这么干的,感觉好麻烦

  • 酒米 2024-07-17

    还有缓存、文件存储等等

×
🔝