我正在使用六个数据库。数据库都具有相同的架构、相同的 SP 等。对于最初设计数据库的人来说,使用许多数据库的很大一部分动机是效率;另一种方法是在数据库中的几乎每个表和 sp 中添加一列,指示正在处理哪组数据,从而产生一个巨大的(因此速度较慢的)数据库,而不是几个小型数据库。代替有一个列来指示正在查询的数据集,连接字符串用于选择正在访问的数据库。
我真正不喜欢这个组织的唯一原因是它涉及大量代码重复,因此会损害维护。例如,每次我希望更改存储过程时,我都需要在每个数据库上运行 alter 语句。
我考虑过的一种解决方案是将所有数据合并到一个大数据库中,并在整个位置添加一个额外的列,以指示如果我没有合并数据将在哪个数据库中。然后,我可以按此列的值对所有表进行分区。从理论上讲,所有这一切的结果是所有数据本身的基本表示在道德上将与现在相同,但没有索引、模式、SP 等方面的冗余。
我的问题是这样的:
- 这是一个好主意吗?有没有更好的方法来实现这一点?
- 这样做有什么问题吗?
- 这会对性能有什么影响吗?