3

在将一些数据转换到 SQL Azure 时,我注意到了一个意外行为。我做了一个快速测试,结果如下:

我在数据库中有一个包含 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 秒。

我知道这不完全是一个编程问题,但这仍然会影响程序性能,我想知道为什么性能下降?

4

1 回答 1

5

这里有很多东西在起作用。使用这种类型的操作,对您影响最大的是本地驱动器上的存储系统与 SQL Azure 在其上运行的存储系统不同。请记住,所有写入都被复制,以便可以快速处理故障。有了这么多的写入,我怀疑这是可以看到大部分差异的地方。

此外,请记住,SQL Azure 实例与其他用户共享,并且位于商用硬件上。具有 4 个内核专用于单个用户(您的桌面)的系统的性能将不同于与其他用户一起运行的任何服务器(SQL Azure)。

通常,您无法将单个专用资源的性能等同于云提供商的性能。好处来自较低的成本提升和横向扩展,而不是扩大规模。

于 2012-07-01T23:56:52.113 回答