Sybase ASE数据清除批处理 - 设计&性能

时间:2013-03-28 21:14:36

标签: batch-processing sybase-ase

我正在开发一个Sybase ASE(迁移到15.7)数据清除实用程序,供多个表/数据库使用,以删除大量不需要的旧数据。

  1. 收到输入表名后,自动找出子表并删除数据。但是,我找不到像Oracle的“Connect by ... Prior”子句这样的分层查询子句。有没有其他方法可以实现这个?
  2. 我通过以小增量循环遍历多个事务/提交来删除数据。删除后,在什么时间间隔,我应该“reorg rebuild”?
  3. 我是否需要更新统计信息?如果必须,在进行更新统计之前我应该​​考虑哪些标准?
  4. 某些表可能已分区。在分区的角度来看,我需要考虑什么吗?
  5. 我们的一些数据库(我猜索引......?)是聚类的。我对集群没有太多了解。我是否需要在集群视角中考虑任何事情?
  6. 处理结束时发送电子邮件。内置的电子邮件包是否类似于oracle的UTIL_SMTP?

1 个答案:

答案 0 :(得分:0)

现在有些要点是空白的,我会在有机会的时候填写它们。

1 - 查看this post on replicating this feature in Sybase ASE

2 - My post over on the dba stack covers a lot of the key points on determining when to run a reorg

3 - 由于更新统计数据可以比重组(也更新统计数据)更快地完成,因此它有时用于帮助提高重组之间的性能。决定何时运行它们取决于清洗时性能下降的速度。 sp_sysmon是一个有价值的工具,可以捕获指标,帮助您做出决定。

4 - 分区表不应该真正影响您的清除。这是另一种情况,它可以提高删除的性能,因为可以比其他配置更快地访问数据。

5 - 不是真的。理论上,如果删除使用聚簇索引,则删除操作应该更快一些。在插入记录时,聚簇索引用于保持数据页的顺序,而不是堆积插入。

6 - 对于基于Windows的系统,可以使用 xp_sendmail 。对于基于* nix的系统, xp_cmdshell 可用于访问 sendmail 。那些Extended Stored Procedures is here的文档。