Oracle10g新特性shrink segment来降低HWM
数据表的庞大导致查询速度降低是必然的,所以常常将数据表的数据移走,但是使用delete后,数据是删除了,但是速度没有多大改善,忧闷了。使用备份表再drop掉原表。的确可以解决问题。但是较麻烦,今天请教了一个Oracle高手,解决了问题。 由于delete操作是不释放表空间的,要想提高查询速度则必须释放表空间。
对Oracle 9i而言,释放表空间则需要重新分析表。
analyze table itemLog compute statistics;
再进行select ,感觉的确快了很多。
另一种方法:使用exp将表导出,drop 掉表,再imp回去。
先做个简要笔记
今天,帮同事导数据,从开发环境导到测试环境中,发现一个查询变的很慢。查看执行计划,发现居然用了全表扫描(表中大约300w条记录),为啥不用索引呢,查看索引状态,一切正常。晕。
肯定是索引的问题,先分析一下表再说。
analyze table ysgl_compile_reqsub compute statistics for all indexes;
正常了。
------------------------------------------------------
一个论坛上的帖子:
Analyze table对Oracle性能的提升
url:http://www.itpub.net/thread-295293-1-1.html
大家来讨论一下这个优化课题
我自己碰到的一个实际情况:
一个sql语句执行要1个小时,有时候还出不了结果,但分析sql涉及的表后,然后重新执行3分钟搞定!
真的有这样惊人的差异?
世事无绝对,有时候你可能发现会变慢
了解了CBO和RBO你就知道区别了
annlyze表会增加CBO执行的性能?不一定的。
我就碰到一个语句分析后要执行30多分钟,删除分析后,只要30秒。
很多情况下不一定的,最好是自己从执行计划判断
分享到:
相关推荐
"Oracle定时删除表空间的数据并释放表空间" Oracle数据库定时删除表空间的数据并释放表空间是通过创建存储过程和定时任务来实现的。下面详细讲解该知识点: 一、创建存储过程 首先,需要创建一个存储过程来删除...
oracle表数据已经删除,但是表空间不能释放的情况;支持查询单表占用空间大小,释放掉占用的无效空间;支持批量生成释放脚本,释放掉空表占用的表空间;
2. 索引的无效:当释放表空间后,表的行号 rowid 会发生变化,而基于 rowid 的索引则会变成无效。解决方法是重建索引,使用 alter index XXX rebuild 语句可以快速重建索引。 在解决问题之前,首先需要使用 delete ...
在管理Oracle数据库时,有时需要删除不再使用的表空间,以释放磁盘空间或优化数据库结构。本篇文章将详细介绍如何在Oracle数据库中快速删除表空间,以及相关的重要知识点。 首先,理解表空间在Oracle中的角色至关...
在Oracle数据库管理中,释放磁盘空间是一项关键任务,特别是在处理大型数据表、表空间或用户时。以下是一些关于如何在Oracle中有效地删除表、表空间和用户以释放磁盘空间的详细步骤: 1. **删除表**: - **DROP ...
Oracle释放archivelog空间 Oracle数据库中的archivelog空间是指数据库中记录所有事务日志的存储区域。这些日志文件记录了数据库中的所有操作,包括数据修改、数据插入、数据删除等等。这些日志文件对数据库的恢复和...
当执行`DROP TABLE`命令时,默认情况下,Oracle会将表移至回收站(`USER_RECYCLEBIN`),而不是立即释放空间。这是因为回收站允许你在不小心删除表后恢复数据。如果你想直接删除表并释放空间,应使用`DROP TABLE PURGE...
Oracle 数据库中,表空间不足是非常常见的问题,主要体现在两个方面:一是原表空间大小不够,二是表空间自动扩展功能未开启。今天我们就来详细讨论如何解决ORA-01654处理表空间不足问题。 查看表空间使用情况 当...
2. **收缩表空间**:删除数据后,Oracle不会自动释放已分配的空间。可以使用`ALTER TABLE SHRINK SPACE`命令来缩小表的大小,这将重新组织表中的数据并回收未使用的空间。 3. **重定义表**:如果表中有大量空闲空间...
在执行DROP或DELETE操作后,Oracle并不会自动回收表所占用的空间,这可能会导致磁盘空间浪费。为了释放这些空间,可以采取以下两种方式之一: 1. **使用TRUNCATE**:该命令会直接清空表中的所有数据,并且不可恢复...
与`DELETE`不同,`TRUNCATE`不涉及行级别的删除,而是直接释放表占用的数据段(segment),这使得它在处理大量数据时效率更高,但同时也意味着没有回滚信息可供恢复。 **1. 数据恢复的前提条件** 在尝试恢复被`...
- **注意事项**:如果确实需要删除表中的所有数据并释放空间,但又希望保留恢复的可能性,可以考虑使用`DELETE`命令而非`TRUNCATE`。 #### 四、闪回整个数据库 **1. 原理** 除了闪回表之外,Oracle还提供了闪回...
值得注意的是,即使数据行被删除,行目录区也不会释放空间供重用,这会导致一定程度的空间浪费。 ##### 5. 行数据区(Row Data) 行数据区包含了实际的数据行内容。一个数据行可以完全存储在一个数据块中,也可以...
TRUNCATE命令用于快速删除表中的所有数据,并且释放分配给这些数据的空间。与DELETE命令不同的是,TRUNCATE操作不记录任何日志,因此执行速度更快,但也不能回滚。对于分区表而言,可以针对单个分区使用TRUNCATE命令...
以上命令用于删除表中的数据,而`TRUNCATE`命令则会更快地释放空间,因为它不会记录每一行的删除操作。 ### 操作系统环境下的表空间管理 在特定的操作系统环境下,如Windows NT 4.0 + Oracle 8.0.4,管理表空间也...
Oracle 数据库删除数据 Delete 语句和 Truncate 语句的对比 Delete 语句和 Truncate 语句是 Oracle 数据库中两种常用的删除数据的方法,但是它们之间存在着明显的差异。 一、Delete 语句 Delete 语句是一种 DML...
反之,当使用`DELETE`语句删除记录或通过`UPDATE`语句减小记录长度时,会释放出更多的自由空间。 Oracle提供了两种自由空间的管理方式:自动管理和手动管理。其中,自动管理是默认选项,它能够自动优化数据块中的...
- 数据导入:将XML文件的数据插入到Oracle表中,可以使用`OracleCommand`执行XMLTable函数或通过PL/SQL的XMLType处理XML数据。 3. **生成XML文件**: - 解析Oracle数据:使用C#的`System.Data.SqlClient`命名空间...