【发布时间】:2010-12-28 15:26:28
【问题描述】:
我在我们的生产服务器上遇到了这个问题。应用程序堆栈是,
- Tomcat 6.0.18 上的 Java Web 应用程序
- iBatis 数据访问层
- MySQL 5.0 数据库
- CentOS
系统部署在具有大约 256 MB 内存的虚拟服务器上。
真正的问题:
查询喜欢,
select * from customer
在大约 10 秒内执行,但是如果执行以下查询,
select * from customer where code like '%a%'
在执行上述查询后,系统立即进入无限期处理并最终强制 Tomcat 重启!。
表格统计: - 记录数:5000 - 主键:代码
PHP MyAdmin 执行相同的查询大约需要 4 秒。
你认为这可能是 MySQL 的问题吗?任何调试这个的想法。我现在正在启用详细日志,并将根据我的发现不断更新这个问题,但希望您能提供数据库见解。
【问题讨论】:
-
是用粗体字写语句。可能是我使用了错误的 MarkDown 标签。让我解决这个问题
-
我不希望
select * from customer where code like '%a%'很快,因为它不可能使用索引。必须检查每条记录。如果可能,请考虑select * from customer where code like 'a%',因为这可能会使用索引。 -
256 MB 内存 - 用于整个虚拟机?!请告诉我您可以为 VM 分配更多内存...
-
我不知道它是否适用于整个虚拟机,但大多数情况下是的。欲了解更多信息,我正在使用 eapps.com 的共享托管计划。
标签: java mysql sql tomcat6 ibatis