从Oracle9iR2开始,Oracle推出了压缩表技术(table compression),用于压缩数据表中的重复数据,以节省存储空间,压缩技术倾向于在数据仓库中使用。下面做个测试:
step1 创建表
1) 创建一般表create table test_local(c1 varchar2, c2 varchar2);
插入数据:
begin
for i in 1 .. 10000
loop
insert into test_local values('seya','123456');
end loop;
end;
2)创建压缩表create table test_compress_local compress as select * from test_local;
step2 表空间使用情况对比
sql-> analyze table test_local compute statistics;
sql-> analyze table test_compress_local compute statistics;
sql-> select table_name,blocks,EMPTY_BLOCKS from user_tables where table_name like 'TEST%_LOCAL';
TABLE_NAME BLOCKS EMPTY_BLOCKS
------------------------------ ---------- - ----------------------------
TEST_LOCAL 28 4
TEST_COMPRESS_LOCAL 18 6
SQL> select (28-4)/(18-6) from dual;
2
可以发现,压缩表空间使用率只有原来的一半。
究其原因,官方如是说:
压缩在数据块级生效,当数据表定义为压缩时,数据库在每个数据块上保留空间存储重复数据的单个拷贝,保留空间被称为符号表(symbol table)。此后在具体行上不必再存储这些重复数据,只需要存放指向符号表相应数据的指针,存储空间因此得以节省。
能节约空间,是压缩表的优点,但是相应的也有其缺点,就是插入读取数据时要进行压缩和解压,这必然带来额外的cpu操作。
测试如下:
首先打开autotrace
sql->set autotrace on;
执行查询:
sql->select count(*) from test_local;
--------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost |
--------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 4 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS FULL | TEST_LOCAL | 10000 | | 4 |
--------------------------------------------------------------------
sql->select count(*) from tset_compress_local;
--------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost |
--------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 3 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS FULL | TEST_LOCAL | 10000 | | 3 |
--------------------------------------------------------------------
压缩表cost = 3 compared with non-压缩表 cost = 4;
注意: 压缩表一般使用于数据仓库,专注于存储,当要更新的时候,存储空间会爆增。
sql->update test_compress_local set c1 = 'gg' where rownum < 10;
更新后我们再来看看空间使用情况:
sql->analyze table test_compress_local compute statistics;
sql->select table_name,blocks,EMPTY_BLOCKS from user_tables where table_name like 'TEST%_LOCAL';
TABLE_NAME BLOCKS EMPTY_BLOCKS
------------------------------ ---------- - ----------------------------
TEST_LOCAL 28 4
TEST_COMPRESS_LOCAL 24 0
empty block 都没了,大跌眼镜啊~
分享到:
相关推荐
Oracle压缩表测试 从Oracle9iR2开始,Oracle推出了压缩表技术(table compression),用于压缩数据表中的重复数据,以节省存储空间,压缩技术倾向于在数据仓库中使用
测试表的潜在压缩率,可以编写特定的SQL程序进行评估。 ### 性能分析 表压缩不仅节省空间,还可以提升性能。因为减少了I/O操作,特别是在处理大量数据的查询时,通过减少读取的数据量,可以加速查询速度。然而,...
本话题主要围绕"Oracle自动备份压缩数据工具"来展开,讨论如何实现数据库的自动化备份、压缩以及转移到指定目录的操作。 一、Oracle数据库备份的重要性 1. 数据保护:备份是防止数据丢失的关键步骤,无论是由于硬件...
Oracle 11g引入了高级压缩、自动内存管理、并行查询优化等改进,提高了数据处理效率和安全性。而Oracle 12c则更进一步,提出了多租户架构,允许在一个容器数据库中管理多个独立的数据库实例,显著提升了资源利用率和...
标题中的“Orion”是指Oracle公司提供的一款专门用于测试I/O性能的工具。Orion的主要目的是帮助用户评估和比较不同存储设备在Oracle数据库工作负载下的性能表现。它能够模拟多种类型的I/O操作,以准确地反映数据库...
5、分区表的压缩测试: - 分区表创建:创建带有分区结构的表,并指定压缩选项。 - 分区表压缩属性查看:使用DBA_SEGMENTS或USER_SEGMENTS等视图检查压缩状态。 - 分区表压缩属性修改:使用ALTER TABLE ... MODIFY ...
3. **使用压缩技术**:启用行级或表级压缩,减少数据占用空间,提高I/O效率。 ### 四、最佳实践 1. **备份数据**:在进行任何表空间变动操作之前,务必先备份数据,以防万一出现问题时能够及时恢复。 2. **性能...
### Oracle数据库自动备份与压缩详解 #### 一、引言 在现代企业的IT环境中,数据库的安全性和稳定性至关重要。Oracle数据库因其强大的数据管理能力和广泛的适用性而受到许多组织的青睐。然而,随着数据量的增长,...
本测试案例将深入探讨Oracle数据库的备份与恢复技术。 首先,我们了解Oracle数据库的备份类型。Oracle支持物理备份(如使用RMAN进行的文件级或映像副本备份)和逻辑备份(如使用SQL*Plus的EXPDP和IMPDP命令进行的...
Oracle高级压缩.pdf Tips to write good SQL.pdf TOTAL RECALL.pdf Windows 上的 Oracle Database 11g 架构.pdf 安全企业搜索.pdf 适用于Oracle数据库11g的Oracle变更管理包.pdf 闪回数据存档.pdf
Oracle高级压缩.pdf Oracle性能优化包 11g .pdf Oracle真正应用测试.pdf Oracle诊断包 11g.pdf Tips to write good SQL.pdf TOTAL RECALL.pdf Windows 上的 Oracle Database 11g 架构.pdf 安全企业搜索.pdf ...
标签“源码”和“工具”暗示我们可能会看到一个实际的代码示例,这个脚本可能是用简单的Windows批处理语言编写的,包括调用数据库备份命令、指定备份参数(如表空间、用户、日期等)、执行压缩以及可能的日志记录。...
Oracle提供了一个名为`exp`的实用程序(在较新版本中为`expdp`)来导出数据库对象,如表、视图、索引等。以下是一些基本的导出命令: 1. 完整数据库导出: ``` exp system/manager@TEST file=d:daochu.dmp full=y...
在压缩包子文件的文件名称列表中,"Orion 压力测试_11.doc"可能是Orion的使用手册或者测试指南,包含了如何设置和执行压力测试的详细步骤,用户可以通过阅读这份文档来学习如何操作Orion。"orion Version 11.1"则...
Oracle高级压缩.pdf Oracle性能优化包 11g .pdf Oracle真正应用测试.pdf Oracle诊断包 11g.pdf Tips to write good SQL.pdf TOTAL RECALL.pdf Windows 上的 Oracle Database 11g 架构.pdf 安全企业搜索.pdf ...
11g:可管理性概述.pdf Oracle 数据库 11g:新特性概述.pdf Oracle 真正应用集群 11g .pdf Oracle高级压缩.pdf Oracle性能优化包 11g .pdf Oracle真正应用测试.pdf Oracle诊断包 11g.pdf Tips to write good SQL.pdf...
在Oracle数据库系统中,表分区是一种高级特性,用于提高数据管理效率、提升查询性能和简化维护工作。"Oracle自动一年建立表分区.zip"文件显然包含了用于自动创建按时间(一年)分区的Oracle脚本。这样的脚本对于处理...
下载后,只需要将Oracle压缩文件解压,建议放在D:\Oracle目录下,运行OracleSetup32.exe,点击确定按钮就配置好了,适用于Oracle客户端的快速部署。 可以在network\admin目录下配置tnsnames.ora,使用服务名访问...
Oracle高级压缩.pdf Oracle性能优化包 11g .pdf Oracle真正应用测试.pdf Oracle诊断包 11g.pdf Tips to write good SQL.pdf TOTAL RECALL.pdf Windows 上的 Oracle Database 11g 架构.pdf 安全企业搜索.pdf 闪回数据...
这个批处理文件通常包含了一系列命令行指令,用于调用Oracle的SQL*Plus工具、执行备份操作(如使用`expdp`或`RMAN`命令)以及可能的第三方压缩工具(如WinRAR或7-Zip)进行文件压缩。脚本可能会设置相应的参数,如...