在oracle 数据库中频繁对数据库进行insert 以及delete操作,并进行commit,一段时间后数据为0为什么该表占用的存储空间很大,而且运行速度很慢,是什么原因导致的,怎么解决?
这个是因为高水位线和磁盘上的碎片,ORACLE存放数据的最小单位是块,建表的时候会划分出来一个连续的块,多次增删后,那边不连续的块无法清理释放,看起来数据行数据是0,但是还在占用磁盘,所以最好是对表做分区,删除时如果是清空表用DDL,如TRUNCATE,可以释放空间。
如果你的表中有索引,查询速度会加快,但是增删改会变慢,因为修改数据的时候除了数据本身之外,还要维护索引树,oracle的索引树默认是B树,并且你数据量越大,维护的成本越高,效率就越低,执行时间也越慢,所以,索引的存在就是为了加快数据访问的,这是一种以空间换时间的技术成本
写存储过程。
Oracle数据库以独立系统服务的形式运行,占用的内存空间确实挺大,这也跟它的数据库结构有关