1

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

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

1 回答 1

0

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

1 - 查看这篇关于在 Sybase ASE 中复制此功能的帖子

2 -我在 dba 堆栈上的帖子涵盖了很多关于确定何时运行重组的关键点

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

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

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

6 - 对于基于 Windows 的系统,可以使用xp_sendmail 。对于基于 *nix 的系统,xp_cmdshell可用于访问sendmail。这些扩展存储过程的文档在这里

于 2013-04-22T19:30:40.983 回答