【发布时间】:2015-04-30 14:51:11
【问题描述】:
我有一个 Java Spring 服务器,使用 Hibernate 和 MySQL,我在我的数据库中有一个视图,我已经将它映射为一个带有 hibernate 的实体。
视图是完全平坦的,没有对其他实体的引用。没有获取等。
我可以使用简单的选择毫无问题地查询视图,既可以直接在 sql server 上使用“Workbench”,也可以使用 hql。
在本地,我也可以使用对性能没有明显影响的“order by”子句。
我的问题是,当我移动到开发服务器时,“order by”子句会导致查询非常慢,从而导致超时。
仅当服务器进行 hql 查询时才会发生这种情况。
我仍然可以使用“Workbench”直接查询开发数据库,而不会出现性能问题。
两个服务器之间的唯一区别(我能想到的)是开发服务器部署在 Google 的 appengine 上,并且休眠驱动程序不同。
在本地服务器上我使用com.mysql.jdbc.Driver,在appengine 上使用com.mysql.jdbc.GoogleDriver。
我的本地数据库是 MySQL 数据库,而开发者是在 Google 的 Cloud SQL 上,这也是 MySQL(几乎)。
在我的 Dev DB 上,视图中总共有大约 28000 行,而在我的本地 DB 上,我有大约 21000 行,所以这也不应该有所作为。
如果您认为有帮助,我可以添加代码。我不知道从哪里开始。
非常感谢您。
【问题讨论】:
-
您在本地使用mysql,您是否也在应用引擎或其他数据存储上使用mysql?
-
云 SQL。我会更新我的问题。
-
慢意味着返回 25 个结果至少需要 30 秒。我不知道 Google appengine 服务器在 30 秒后触发超时异常有多久了。
标签: java mysql spring hibernate google-app-engine