数据库频繁地删除数据有什么影响吗

时间:2021-05-19 22:20:16
数据库频繁地删除数据,时间久后对数据库性能有影响吗?或其它什么问题

7 个解决方案

#1


1、看你删除的时机,系统繁忙时候,肯定有影响,当然如果这就是业务步骤里面的一环,此点可以忽略

2、看你提交的实际
   commit的过快,会造成数据库单位时间内 事务 数量过大
   commit的过慢,会影响数据库undo表空间的使用

#2


引用 1 楼 BenChiM888 的回复:
1、看你删除的时机,系统繁忙时候,肯定有影响,当然如果这就是业务步骤里面的一环,此点可以忽略

2、看你提交的实际
   commit的过快,会造成数据库单位时间内 事务 数量过大
   commit的过慢,会影响数据库undo表空间的使用

用delete删大量的数据,我看了下好像表空间的利用率没有降,有没有什么办法,感觉delete后有很多碎片之类,有清理办法吗。数据库不能停的哈。

#3


会锁表~~
会导致高水位

#4


1)考虑延迟的块清除,在做大量的数据delete,建议应做一次查询,全表扫描。清除数据块中的uncommited的标记,以后的查询可以不用去undo里去找

2)考虑HWM的问题。insert以后提升hwm,delete并不降低hwm。而select做全表扫描时总是会扫描hwm以下得所有block。所以建议定期对该表进行整理。可以用
alter table yourtbname move tablespace indx;
alter table yourtbname move tablespace users;
并重建该表所对应得索引

#5


引用 2 楼 gaohuirong08 的回复:
引用 1 楼 BenChiM888 的回复:1、看你删除的时机,系统繁忙时候,肯定有影响,当然如果这就是业务步骤里面的一环,此点可以忽略

2、看你提交的实际
   commit的过快,会造成数据库单位时间内 事务 数量过大
   commit的过慢,会影响数据库undo表空间的使用
用delete删大量的数据,我看了下好像表空间的利用率没有降,有没有什么办法,……


在业务空闲的时候,进行 shrink tablespace 或者 move table 或者 exp/imp expdp/impdp
shrink tablespace 10g开始支持

#6


引用 4 楼 linwaterbin 的回复:
1)考虑延迟的块清除,在做大量的数据delete,建议应做一次查询,全表扫描。清除数据块中的uncommited的标记,以后的查询可以不用去undo里去找

2)考虑HWM的问题。insert以后提升hwm,delete并不降低hwm。而select做全表扫描时总是会扫描hwm以下得所有block。所以建议定期对该表进行整理。可以用
alter table your……
你这个是把表空间对应的那个表移除了表空间吗?那以后的数据不存在这个表空间了?

#7


引用 2 楼 gaohuirong08 的回复:
引用 1 楼 BenChiM888 的回复:
1、看你删除的时机,系统繁忙时候,肯定有影响,当然如果这就是业务步骤里面的一环,此点可以忽略

2、看你提交的实际
   commit的过快,会造成数据库单位时间内 事务 数量过大
   commit的过慢,会影响数据库undo表空间的使用
用delete删大量的数据,我看了下好像表空间的利用率没有降,有没有什么办法,感觉delete后有很……






回复2楼
可以通过降低表的高水位线来实现

ALTER TABLE 表名 ENABLE ROW MOVEMENT;

#1


1、看你删除的时机,系统繁忙时候,肯定有影响,当然如果这就是业务步骤里面的一环,此点可以忽略

2、看你提交的实际
   commit的过快,会造成数据库单位时间内 事务 数量过大
   commit的过慢,会影响数据库undo表空间的使用

#2


引用 1 楼 BenChiM888 的回复:
1、看你删除的时机,系统繁忙时候,肯定有影响,当然如果这就是业务步骤里面的一环,此点可以忽略

2、看你提交的实际
   commit的过快,会造成数据库单位时间内 事务 数量过大
   commit的过慢,会影响数据库undo表空间的使用

用delete删大量的数据,我看了下好像表空间的利用率没有降,有没有什么办法,感觉delete后有很多碎片之类,有清理办法吗。数据库不能停的哈。

#3


会锁表~~
会导致高水位

#4


1)考虑延迟的块清除,在做大量的数据delete,建议应做一次查询,全表扫描。清除数据块中的uncommited的标记,以后的查询可以不用去undo里去找

2)考虑HWM的问题。insert以后提升hwm,delete并不降低hwm。而select做全表扫描时总是会扫描hwm以下得所有block。所以建议定期对该表进行整理。可以用
alter table yourtbname move tablespace indx;
alter table yourtbname move tablespace users;
并重建该表所对应得索引

#5


引用 2 楼 gaohuirong08 的回复:
引用 1 楼 BenChiM888 的回复:1、看你删除的时机,系统繁忙时候,肯定有影响,当然如果这就是业务步骤里面的一环,此点可以忽略

2、看你提交的实际
   commit的过快,会造成数据库单位时间内 事务 数量过大
   commit的过慢,会影响数据库undo表空间的使用
用delete删大量的数据,我看了下好像表空间的利用率没有降,有没有什么办法,……


在业务空闲的时候,进行 shrink tablespace 或者 move table 或者 exp/imp expdp/impdp
shrink tablespace 10g开始支持

#6


引用 4 楼 linwaterbin 的回复:
1)考虑延迟的块清除,在做大量的数据delete,建议应做一次查询,全表扫描。清除数据块中的uncommited的标记,以后的查询可以不用去undo里去找

2)考虑HWM的问题。insert以后提升hwm,delete并不降低hwm。而select做全表扫描时总是会扫描hwm以下得所有block。所以建议定期对该表进行整理。可以用
alter table your……
你这个是把表空间对应的那个表移除了表空间吗?那以后的数据不存在这个表空间了?

#7


引用 2 楼 gaohuirong08 的回复:
引用 1 楼 BenChiM888 的回复:
1、看你删除的时机,系统繁忙时候,肯定有影响,当然如果这就是业务步骤里面的一环,此点可以忽略

2、看你提交的实际
   commit的过快,会造成数据库单位时间内 事务 数量过大
   commit的过慢,会影响数据库undo表空间的使用
用delete删大量的数据,我看了下好像表空间的利用率没有降,有没有什么办法,感觉delete后有很……






回复2楼
可以通过降低表的高水位线来实现

ALTER TABLE 表名 ENABLE ROW MOVEMENT;