Hyper-V中的SQL 2012。为什么我的查询会变慢,直到我删除并创建任何空间索引?


0

我有一个空间应用程序,每次用户平移/缩放地图时查询几个表(图层)。当我将SQL服务器移动到Hyper-V时,我注意到查询其中一个表时有几秒钟的延迟。我从查询中禁用了这个表,然后另一个表变慢了等等。

奇怪的是,通过删除和创建数据库中任何表的任何空间索引(即使是我不查询的表),在我重新启动或创建新连接之前,性能神奇地变得闪电般快速。

我尝试使用传递磁盘,但它没有任何区别。运行本机SQL服务器(非虚拟)时,在同一硬件上不会出现此“错误”。我也在不同的台式PC上尝试过Hyper-V,我也尝试过SQL 2014 Express但遇到了同样的问题。

我可以尝试其他任何Hyper-V / SQL设置吗?有没有解释为什么删除和创建索引会暂时解决问题?

Answers:


1

不幸的是,在某些情况下,似乎是虚拟化的成本。如果您使用的是使用内存气球驱动程序的动态内存,请尝试将VM配置为具有一定量的RAM。观察主机和来宾的内存利用率。如果您发现内存越来越耗尽,请尝试在内存中禁用锁定页面。您可以尝试的一件事是关闭所有guest虚拟机并重新启动主机,只需启动运行SQL的单个guest虚拟机。如果查询按原样运行,则其他客户机正在抢夺所需资源的VM。当服务器的大小不正确且非常常见时,可能会发生这种情况。解决这个问题的方法是添加一个额外的磁盘阵列,并将其专用于该VM。以某种方式欺骗系统的另一种方法是对数据库使用SSD缓存。还有一些需要考虑的事情是,如果您关闭SQL服务并使用UltraDefrag等工具并运行完全优化和碎片整理,那么如果查询执行得更快,请重新启动服务。你可以获得UltraDefrag,它是开源的,免费的 http://ultradefrag.sf.net 最后,微软有一篇论文,你可能想要检查你的配置。查看: http://www.slideshare.net/ManuelCastro8/high-performance-sql-server-workloads-on-hyper-v

另一件需要尝试的是使用ESXi而不是Hyper-V或最新的Hyper-V 2012 R2。

最后,使用SQL的完整版本运行的确切版本是什么?为客户和主机运行的操作系统是什么?您是否安装了最新的集成服务?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.