我最近将PostgreSQL数据库部署到Linux服务器,其中一个存储过程大约需要24到26秒才能获取结果。以前,我已将PostgreSQL数据库部署到Windows服务器,并且相同的存储过程仅花费大约1到1.5秒。
在两种情况下,我都使用相同的数据库测试了相同的数据量。并且两个服务器都具有相同的配置,例如RAM,处理器等。
在Linux服务器上执行我的存储过程时,CPU使用率达到100%。
Windows执行计划:
Linux执行计划:
让我知道您是否对此有任何解决方案。
罪魁祸首似乎在
billservice.posid = pos.posid
更具体地说,它在pos表上执行序列扫描。应该在做索引扫描。
检查数据库中这两个文件上是否有索引。