我正在开发一个 Sybase ASE(迁移到 15.7)数据清除实用程序,供多个表/数据库使用,以删除大量不需要的旧数据。我计划将它安排在每晚 12:00 到凌晨 3:00 和凌晨 3:00 之后,它应该在第二天中午 12:00 睡觉和醒来并继续清除。标准是不影响用户。
这是一个很好的设计,可以使用以下内容让批次休眠到第二天吗?还是会损害性能?我在调用 waitfor 之前提交了 tran。
waitfor time "12:00:00"
交易日志:
- 我正在使用以下查询查找事务日志大小,并等待事务日志可用空间 < 一些百分比。这是一个好方法吗?
另外,考虑到我的一般情况,在继续等待之前我应该检查的最佳事务日志使用百分比限制是多少?-我应该使用“转储交易”吗?我读到我们不应该在生产系统中使用“仅转储事务截断”。我应该以不同的方式使用它吗?你对我的场景有什么建议吗?
select @tlogPctUsed = ceiling(100 * (1 - 1.0 * lct_admin("logsegment_freepages",d.dbid) / sum(case when u.segmap in (4, 7) then u.size end))) from master..sysdatabases d, master..sysusages u where u.dbid = d.dbid and d.dbid = db_id() and d.status != 256 group by d.dbid while (@tlogPctUsed > @tlogPctLimit) begin waitfor delay @10Seconds select @tlogPctUsed = ceiling(100 * (1 - 1.0 * lct_admin("logsegment_freepages",d.dbid) / sum(case when u.segmap in (4, 7) then u.size end))) from master..sysdatabases d, master..sysusages u where u.dbid = d.dbid and d.dbid = db_id() and d.status != 256 group by d.dbid end