我的软件只按名称读取一个数据库。但是,每天我都要检查30天以上的记录,因此我的解决方案是每天重命名数据库(附加时间戳)并创建一个旧名称的新记录,以便我的软件可以继续运行。
我需要我的软件来读取所有数据库,但它只能读取一个。有没有办法将主数据库与存档的数据库链接而不复制数据库?我不认为我可以使用MERGE
,因为我无法在白天拆分数据库。
e.g。
MAINDB
MAINDB
变为BKDB_2015_12_04
。我仍然可以从mysql访问数据库,因为它不是转储数据库。MAINDB
。BKDB_2015_12_04
和任何其他数据库BKDP_*
MAINDB
时使用该软件,同时阅读BKDB_*
基本上,我有一些数据库&只读'我白天对数据进行分区。我正在阅读有关使用PARTITION
的信息,但我处理的是大量数据,而且我不确定PARTITION
是否有效处理这些数据。
答案 0 :(得分:0)
重命名并重新创建数据库是个坏主意"。如何重命名和重新创建时,如何确保不访问您的数据库?
例如,假设我在购买过程中,我将篮子写入数据库表,因为我向其中添加了项目(不太可能是场景,但可能)。我在浏览周围选择更多项目。在我浏览的时候,重命名现有数据库并重新创建新数据库。我的篮子立即空了,没有任何解释。
使用备份,如果您的数据库重命名为half =通过备份,会发生什么?如何确保备份所有其他重命名的数据库?
最后一件事 - 从长远来看,重命名的数据库会发生什么?他们永远留在那里吗?经过一段时间后会掉线吗?等
如果您要检查30天以上的记录,那么您应该考虑的唯一解决方案是为每条记录添加时间戳。如果您的表格是通过单个" master"桌子,把时间戳放在那里。您的查询可以保持大致相同(除了添加时间戳检查),并且您不必计算过去30天的数据库名称
答案 1 :(得分:0)
您应该能够使用UNION对所有数据库进行查询,您需要知道的只是数据库的名称:
select * from MAINDB.table_name
union all
select * from BKDB_2015_12_04.table_name
union all
select * from database_name.table_name