清除MsSql中的旧数据

时间:2015-11-14 11:52:35

标签: sql-server azure

从mssql服务器(托管在Azure上)自动备份和清除旧数据的最佳方法是什么。

它包含一个Web服务器的日志(需要在数据库中,因为我们有一个实时分析它的应用程序)。但是,比一周更早的数据并不需要实时可用。

我的表格中包含一个包含添加日期的列。

最有效的方法是什么?我显然想过用一堆查询来使用cron作业。但是在azure或mssql中是否有一些功能可以促进这个(或者可能是其他一些软件)。

谢谢!

2 个答案:

答案 0 :(得分:2)

不幸的是,SQL Agent不适用于SQL Azure,因此无法使用此功能(如本地SQL Server)创建作业,但这并不意味着您没有替代方案。 Cron的工作还可以,但我还有一些你应该考虑的建议:

  1. SQL Database Elastic Jobs
  2. Azure job scheduler
  3. Azure Automation
  4. SQL Server in a VM - 如果您有一个,可以使用它来创建远程作业。

答案 1 :(得分:0)

如果您拥有大量数据,那么清除数据的最有效机制就是使用表分区。您有一个日期列,它可以作为分区列完美。 例如,如果按年分区,则可以通过删除该分区来删除整年的数据。删除可能需要数小时并填充您的事务日志,而立即删除分区。我将这种技术用于仅存储7天数据的表,并且我们每天在超载服务器上存储大约20 Gb。删除一天的数据需要大约3个小时,这是一个性能消耗,而当天的分区是暂时的。它还使我们的查询读取更快。 因此,您只需要创建新分区并删除要清除的旧分区(基于数据保留策略)。