首页 文章

长Azure SQL数据库导入,100%DTU - 将在更改时段更改层有帮助吗?

提问于
浏览
2

我们从blob中的bacpac导入azure数据库,使用100%DTU需要2天 . 有时候我接受快速但昂贵的恢复(但是为了恢复时间只想支付额外的费用),我该怎么办呢?

如果我将100或200个DTU更改为更高级别,它会加速恢复吗?另外,如果我在恢复开始后执行此操作,是否会应用更改,或者我必须在开始导入时执行此操作?

恢复后,我将切换回所需的S2层 . 另一个问题是降级数据库层的潜在风险是什么?至少我知道需要禁用地理复制 .

根据https://msdn.microsoft.com/en-us/library/azure/dn369872.aspx,升级后可能需要数小时才能应用和标准化性能,通常在降级后通常需要数小时 .

如此理想的方式,它开始在最大P6层恢复,然后降级到S2,它在大多数情况下必须是瞬间?

具体案例细节:数据库大小~60 gb,bacpac~5 gb,S2标准(50 DTU) . 我看到整个恢复时间的100%DTU百分比,并且最后一天导入导出历史记录停留在"STATUS Running, Progress = 94.81 %",而数据库大小从30 Gb缓慢增加到60 Gb .
DTU and database size char

'select * from sys.dm_db_resource_stats' gives for example this

avg_cpu_percent=42.96
avg_data_io_percent=37.08
avg_log_write_percent=91.65
avg_memory_usage_percent=83.67

2 回答

  • 2

    根据您描述的方案,最好使用数据库副本TSQL来执行跨服务器数据库副本 . 我假设你在导出时首先创建一个数据库副本,以保证最终得到事务一致的BACPAC为suggested by this article . 如果是这种情况,只需将数据库直接复制到目标帐户和服务器,即可节省一些性能 . 只要源服务器和目标服务器具有相同的SQL登录信息,Cross server copy就会起作用 .

    确认两台服务器共享相同的登录凭据后,您只需要登录要复制数据库的服务器的主数据库,然后运行以下TSQL:

    CREATE DATABASE [NEW_DATABASE_NAME] AS COPY OF [SOURCE_SERVER_NAME].[SOURCE_DATABASE_NAME]
    

    这应该可以显着节省您的时间,因为导出方法要求您读出数据库的所有数据和模式 . 然后你需要复制该文件(第二次移动数据) . 然后,您需要将所有数据读入新数据库(第三次移动数据) .

    说完所有这些之后,如果您绝对需要使用导出和导入服务,那么使用更高服务层的导出和导入将比更低的服务层更快,因为您有更多资源可以更快地读取数据 .

    如果您想要澄清任何内容,请回复此问题 .

  • 3

    从您所描述的Azure SQL DB按预期执行 . 与服务层和性能级别关联的DTU确实会影响导入时间 . 您应该在之后导入和降级时升级到更高的性能级别 .

    我希望这有帮助

相关问题