Sybase ASE数据清除批处理 - 标识要在事务中删除的行数

时间:2013-03-28 20:25:02

标签: batch-processing sybase-ase

我们有多个使用Sybase ASE的应用程序(目前从15.0迁移到15.7)。我正在开发一个通用实用程序,可供所有ASE数据库用来清除不需要的旧数据。该实用程序应该在指定的窗口(12:00到3:00 AM)运行,并且可以逐日删除数据,而不会影响其他用户或不关闭数据库。 由于涉及到具有不同参数的多个表,我需要找出一个最佳算法来确定每个事务中删除的行数。   - 是否应使用基于用户缓存/数据缓存/日志空间/其他一些参数的公式计算删除的数据量?如果是这样,你能提一下配方吗?   - 目前,我正在使用以下暴力安全限制并循环执行删除查询,在每次循环遍历时提交:

set rowcount 100

此外,我们有办法考虑以下参数吗?如果是这样,我应该给每个参数多少重量?

  1. 根据表的最大行大小,动态修复已删除的行数?
  2. 指数:
    • 如果删除条件与索引匹配,请删除tran中的更多行(多少?)
    • 如果删除条件与索引匹配,请使用“select for update”(ASE 15.7)
    • 如果有其他索引与给定的列标准不匹配,我应该“选择#temptbl”与输入条件匹配的索引列值然后执行删除加入#temptbl?
    • 如果根本没有索引,我应该使用表格的最大行大小设置用“set rowcount”删除的行数吗?

0 个答案:

没有答案