0

我在 Azure SQL 中有一个巨大的订单表。我有一个布尔字段“IsOrderActive”来分隔热订单和冷订单。是否可以使用 Azure SQL 自动将冷数据传输到单独的数据库?

4

4 回答 4

0

您是指 SQL Server Stretch Database to Azure 吗?看看这个https://www.mssqltips.com/sqlservertip/5526/how-to-setup-and-use-a-sql-server-stretch-database

于 2021-09-30T00:42:10.263 回答
0

完成所需任务的一种方法是使用 T-SQL 命令将订单表分成两个,然后使用 SSMS 在不同的数据库(不同的服务器)中传输带有冷数据的表。

请按照我完成的复制步骤进行操作。

  1. 创建表

create table hotcoldtable (orderID int, IsOrderActive char(3))

  1. 将演示数据插入表中
insert into hotcoldtable 
values (1,'yes')
,(2,'no')
,(3,'yes')
,(4,'yes')
,(5,'no')
,(6,'no')
,(7,'yes')
  1. 使用以下命令将表划分为冷数据表和热数据表

冷数据表——select OrderID, IsOrderActive into coldtable from hotcoldtable where IsOrderActive = 'no'

热点数据表——select OrderID, IsOrderActive into coldtable from hotcoldtable where IsOrderActive = 'yes'

您可以在数据库中看到两个新表。

  1. 在 SQL Server Management Studio (SSMS) 中,登录到您的 Azure SQL Server。填写详细信息,然后单击连接

在此处输入图像描述

  1. 左键单击您有订单表的数据库名称,然后单击生成脚本...

在此处输入图像描述

  1. 选择选择特定数据库对象并标记要为其创建脚本的对象,如下图所示。

在此处输入图像描述

  1. 设置以下设置。

在此处输入图像描述

  1. 查看详细信息,然后单击下一步。这将生成您的脚本。

在此处输入图像描述

转到保存脚本的位置。在任何编辑器中打开文件并复制脚本。

  1. 现在在 Azure 门户中,转到要传输冷数据表的数据库。转到查询编辑器并将复制的脚本粘贴到空白处。运行脚本,您将获得该数据库中的表,如下所示。

在此处输入图像描述

于 2021-09-29T15:12:20.913 回答
0

对于可以将冷订单放在具有自动暂停和自动恢复功能的 Azure 无服务器数据库上的场景,数据库分片似乎是一种可能的解决方案,您可以在不使用它们时进行保存,只需为使用的存储付费。Azure SQL 数据库在此处提供了大量工具来支持分片。

于 2021-09-29T12:25:23.683 回答
0

如果您有兴趣通过归档冷数据来节省空间,您可以在相同或不同的数据库中使用两个单独的表。需要注意的是,您应该为归档(冷)表使用列存储索引。根据您的数据,您应该能够实现30%-60%的数据压缩。

但是,如果不运行一些查询,就无法做到这一点。但它可以使用 Azure 工作簿实现自动化。

我构建了一种类似的功能,帮助我在 Azure SQL 数据库中节省了58% 的空间。如果您觉得这可能会有所帮助,请发表评论。我可以分享更多关于这个的细节。

于 2022-02-14T13:29:59.053 回答