在将一些数据转换为SQL Azure时,我注意到了一个意外的行为。 我做了一个快速测试,结果就是这样:
我在DB中有一个包含1M记录的表,数据库大小为230MB,没有非聚集索引。
我做了一个简单的测试,创建了一个具有相同模式的新表,只是将数据从一个表复制到另一个表,如下所示:
INSERT INTO [dbo].[lete_new]
([str_en]
,[str_en_fp])
SELECT [str_en] ,[str_en_fp] FROM [dbo].[lete]
首先,在我本地工作站(SELECT [str_en],[str_en_fp] FROM [dbo]。[lete])需要8秒,所以最重要的是进行插入所需的时间。 当我在本地WS上运行插入时,将数据复制到新表需要10秒钟。令人惊讶的是,当我在Azure上运行相同的查询时,花了30秒。
我知道这不是一个编程问题,但这仍然会影响程序性能我想知道为什么性能下降?
答案 0 :(得分:5)
这里有很多事情要发挥作用。对于这种类型的操作,最能影响您的操作是本地驱动器上的存储系统与SQL Azure运行时的存储系统不同。请记住,所有写入都会被复制,以便可以快速处理故障。有了这么多的写作,我怀疑这是看到大部分差异的地方。
另外,请记住,SQL Azure实例与其他用户共享,并且它位于商用硬件上。具有4个内核专用于单个用户(您的桌面)的系统的性能将不同于与其他用户(SQL Azure)一起运行的任何服务器。
通常,您无法将单个专用资源的性能等同于云提供商的性能。其好处来自于降低成本和扩大规模而不是扩大规模。