我必须使用 Drupal 实现一个包含多站点的系统。(预计 1000 个站点) Drupal 允许我们使用多个数据库或一个带前缀的数据库。对于数千个站点,我可能会选择多个数据库而不是一个带前缀的数据库。并且所有数据库都具有相同的表结构。但问题是:有一些非常频繁的查询从所有站点(所有数据库)收集信息。例如:选择 20 个类别为鞋类的产品,并且从所有数据库中获得良好的投票率。我现在有 3 个解决方案:
- 使用 for 循环选择数据库。这意味着 1000 次查询“从 db1.table1 中选择 *,其中类别 = 123 和投票 = 10”;然后选择匹配的产品。我认为这在性能上会更差,因为如果所有数据库中有很多行,就会使用很多内存。
- 使用 Select * FROM db1.table1 .... UNION SELECT * FROM db2.table1 .... 我认为这也很糟糕。因为mysql会先从db1中选择,如果20个产品足够多,mysql就会停止查找。
- 每当插入所有数据库时,我们都会插入一个带有站点标志的非常大的数据库。因此,我们可以使用一个简单的查询从这个非常大的数据库中进行选择查询:“SELECT * FROM largeDB.table WHERE category=123 and vote=10”。
请给我更多的建议。非常感谢。PS:当我有 1000 个相同的数据库时,请告诉我更多关于数据库维护的问题。