我们有一个正在使用非常简单的查询进行查询的Sybase数据库。
Select * from ts_logs where time_sheet_id = 1234
该表大约有110万条记录,直到3天前,它是一个非常快速的查询,执行时间大约为半秒钟。
我们的应用程序使用hibernate,并且sql输出显示完全相同的查询。截至三天前,我们注意到该查询现在需要9到11秒的时间才能执行,因此性能大大下降。
我们尝试在NetBeans数据库可视化器中运行查询,在此我们发现了相同的性能问题。我们最初开始将其确定为数据库性能问题,并决定进一步在dbvisualizer中诊断该问题,但是令人惊讶的是dbvisualizer在不到半秒钟的时间内执行了相同的确切查询。
我们在每种环境中都使用jtds 1.3。
所有环境中的数据库均相同。
在所有环境中都使用相同的查询。
是什么导致休眠/ netbeans而不是dbvisualizer出现性能瓶颈?对下一个要看的地方有什么想法吗?
CREATE TABLE ts_log (id numeric identity(19) NOT NULL GENERATED ALWAYS AS IDENTITY, log_comment varchar(2500), log_entry varchar(2500) NOT NULL, time_sheet_id numeric(19) NOT NULL, PRIMARY KEY (id));
可能发生的情况是查询计划已更改,这可能是由于行数增加所致。您应该运行UPDATE STATISTICS,并检查查询计划。如果搜索参数没有足够的选择性来检索所需的行,则应重新考虑表/查询的设计。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句