我在Multiple Shared Database environment(MySQL)
工作,我需要经常在多个数据库之间切换。
让我们说我的主数据库是MainDB
。
每位用户都有共享数据库说ShardDB1, ShardDB2 ...
。
由于我使用的是JAVA Connection pooling
,因此我必须在执行每个查询时获取执行连接,并在完成执行后立即将其释放到池中。
我尝试了以下方法,但我没有注意到任何性能差异或任何问题。
每次我想使用SharedDB时,我都会切换到USE ShardDB1;
之类的SharedDB,再次执行查询后再切换回MainDB,如USE MainDB;
编写"Select * from "+ ShardDB1 +".TABLE_NAME where ....";
2nd method is easier
让我在代码中使用。但在我将它推向生产之前,我想知道在使用第二种方法时是否存在任何问题(特别是性能)。我用Google搜索,但无法找到。请详细说明一下。
答案 0 :(得分:4)
表现没有真正的区别。在第一种情况下,服务器编辑请求,添加前缀本身。在第二个中,前缀是java变量。如果存在差异,则大约为0.1 ms或更短。
USE DATABASE语句是开发人员编写请求的快捷方式。 在处理多个数据库时,最好不要使用此语句,而应在表前添加db名称。然后,如果您忘记在请求中指定名称,则不会冒险更改错误的数据库。