azure-sql-database - 长 Azure SQL 数据库导入,100% DTU - 在恢复期间更改层会有所帮助吗?

标签 azure-sql-database

我们正在从 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)。我看到整个恢复时间的 DTU 百分比为 100%,最后一天的导入导出历史记录停留在“状态正在运行,进度 = 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

最佳答案

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

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

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

这将大大节省您的时间,因为导出方法要求您读出数据库的所有数据和架构。然后您需要复制该文件(第二次移动数据)。然后您需要将所有数据读入新数据库(第三次移动数据)。

综上所述,如果您绝对需要使用导出和导入服务,则使用较高服务层的导出和导入将比较低服务层更快,因为您有更多资源可以更快地读取和读取数据。

如果您想澄清任何事情,请回复此内容。

关于azure-sql-database - 长 Azure SQL 数据库导入,100% DTU - 在恢复期间更改层会有所帮助吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33299998/

相关文章:

azure - 通过 Azure 中的代码为特定数据库创建用户时出现问题

sql-server - 如何在没有任何外部组件或服务的情况下在2个SQL Azure数据库之间配置 "table replication"?

azure - Azure 数据库的密码重置

两个或多个值冲突时的 SQL Server 存储过程顺序

c# - ASP.NET 自定义配置文件错误

azure - 我一直收到用户登录失败的消息。 Azure SQL 中的错误 18456

c# - 在一笔事务中删除 Azure blob

sql - 在 SQL Server 上仅显示一个数据库

entity-framework - 如何通过 EF Model First 数据库架构升级避免数据丢失?

azure-sql-database - Azure 逻辑应用程序不会监听某些 SQL Server 表上的更新