Oracle 内存占用

在oracle 数据库中频繁对数据库进行insert 以及delete操作,并进行commit,一段时间后数据为0为什么该表占用的存储空间很大,而且运行速度很慢,是什么原因导致的,怎么解决?

这个是因为高水位线和磁盘上的碎片,ORACLE存放数据的最小单位是块,建表的时候会划分出来一个连续的块,多次增删后,那边不连续的块无法清理释放,看起来数据行数据是0,但是还在占用磁盘,所以最好是对表做分区,删除时如果是清空表用DDL,如TRUNCATE,可以释放空间。

可以看一下 https://blog.csdn.net/weixin_31016735/article/details/116324229,把空间收缩一下 https://blog.csdn.net/weixin_31016735/article/details/116324229%EF%BC%8C%E6%8A%8A%E7%A9%BA%E9%97%B4%E6%94%B6%E7%BC%A9%E4%B8%80%E4%B8%8B

如果你的表中有索引,查询速度会加快,但是增删改会变慢,因为修改数据的时候除了数据本身之外,还要维护索引树,oracle的索引树默认是B树,并且你数据量越大,维护的成本越高,效率就越低,执行时间也越慢,所以,索引的存在就是为了加快数据访问的,这是一种以空间换时间的技术成本

写存储过程。

Oracle数据库以独立系统服务的形式运行,占用的内存空间确实挺大,这也跟它的数据库结构有关