我的应用程序使用Tomcat在Windows Server 2008上运行SQL Server 2008。
我使用的是基于云的服务器
我的一个查询需要48秒才能从应用程序运行。它从数据库中提取了425条记录。
我对时间的长短并不感到惊讶。
虽然类似的Oracle查询在6秒内运行,但Oracle安装程序有2GB内存和四处理器,而我的SQL Server设置为1GB内存和一个2.66GHZ处理器。
因此我将服务器规格增加到2GB。没有变化。
然后我将服务器规格从单处理器增加到双处理器。 我很惊讶地发现查询现在耗时更长 - 恰好是70秒!
我知道将查询从P / SQL转换为T / SQL可能是以非常无效的方式完成的。 Oracle和SQL Server之间可能存在速度差异。 但是我的主要问题是,为什么同一个查询现在在双核系统上比在单核上运行速度慢?
谢谢!
答案 0 :(得分:0)
根据所使用的虚拟机管理程序和服务器上的总负载,双虚拟CPU可以(显着)减少CPU时间,因为某些虚拟机管理程序的调度程序坚持要求找到2个可同时调度的CPU。如果您的查询是单线程的,那么第二个CPU的优势就是零,但是获得更少的CPU时间会使它变慢。
正好相反的方向是另一种可能性:如果您的查询是多线程的并且存储速度很慢,则2个线程可能会产生随机IO风暴,从而降低存储吞吐量。