我正在一个多个共享数据库环境(MySQL)
中工作,我需要经常在多个数据库之间切换。
假设我的主数据库是 MainDB
。
此外,每个用户都有共享数据库,例如 ShardDB1、ShardDB2 ...
。
由于我使用的是JAVA连接池
,因此我必须在执行每个查询时获取要执行的连接,并在执行完成后立即将其释放到池中。
我尝试了以下方法,但没有发现任何性能差异或任何问题。
每次我想使用SharedDB时,我都会切换到SharedDB,如
USE ShardDB1;
,并在再次执行查询后切换回MainDB,如USE MainDB;
>编写查询,例如
“Select * from "+ ShardDB1 +".TABLE_NAME where ....”;
第二种方法对我来说更容易在代码中使用
。但在将其投入生产之前,我想知道使用第二种方法是否存在任何问题(尤其是性能)。我用谷歌搜索,但找不到。请阐明这一点。
最佳答案
性能上没有真正的区别。在第一种情况下,服务器编辑请求,添加前缀本身。在第二个中,前缀是一个 java 变量。如果有差异,则约为 0.1 毫秒或更小。
USE DATABASE 语句是开发人员编写请求的快捷方式。 当处理多个数据库时,最好不要使用此语句,而应在表中添加数据库名称前缀。然后,如果您忘记在请求中指定名称,您就不会冒更改错误数据库的风险。
关于java - 哪个更好? - 在 MySQL 中使用 DATABASE 与 DATABASE.TABLE_NAME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27541817/