w****n 发帖数: 266 | 1 表24/7都在更新,insert data。想定期删除历史数据,怎么实现? |
s**********o 发帖数: 14359 | 2 通常会有一个DAILY或者WEEKLY或者MONTHLY的JOB来删除历史数据
即使是24/7更新,也有相对IDLE的时间,比如凌晨1,2点的时候,
删除历史记录一般是不可取的,应该是ARCHIVE,通常是把历史
数据放到另外的TABLE或者其他存储里面,比如银行的TRANSACTION
你要一年前的数据,通常会放在比较慢的STORAGE里,有的还需要
特殊的JOB来提取。当然还有TABLE PARTITION等不同的方法
搞HISTORY的数据。 |
w****n 发帖数: 266 | 3 这是一个log table, 几乎每分钟都在写记录, 很难找到固定的open window。 ETL
job是每天12点半删除历史记录, 现在连续几天报错,说系统忙
ORA-00054: resource busy and acquire with NOWAIT specified or timeout
expired
历史数据不多。
【在 s**********o 的大作中提到】 : 通常会有一个DAILY或者WEEKLY或者MONTHLY的JOB来删除历史数据 : 即使是24/7更新,也有相对IDLE的时间,比如凌晨1,2点的时候, : 删除历史记录一般是不可取的,应该是ARCHIVE,通常是把历史 : 数据放到另外的TABLE或者其他存储里面,比如银行的TRANSACTION : 你要一年前的数据,通常会放在比较慢的STORAGE里,有的还需要 : 特殊的JOB来提取。当然还有TABLE PARTITION等不同的方法 : 搞HISTORY的数据。
|
w****n 发帖数: 266 | 4 更新一下。
原来的删除语句用的 truncate table,要求 exclusive lock. Insert data 用shared
lock, 改用delete from my table where xxxx,可以要求shared lock. |
s**********o 发帖数: 14359 | 5 TRUNCATE不就都删了么?
shared
【在 w****n 的大作中提到】 : 更新一下。 : 原来的删除语句用的 truncate table,要求 exclusive lock. Insert data 用shared : lock, 改用delete from my table where xxxx,可以要求shared lock.
|
tj 发帖数: 957 | 6 这种最后改成partition的,然后定期drop |