| 副标题[/!--empirenews.page--] 
        
            1、官方文档说法: Oracle支持在表空间(tablespace)、数据表(table)和分区(Partition)级别的压缩,如果设置为表空间级别,那么默认将该表空间中的全部的表都进行压缩。压缩操作可以在数据单条插入、数据修改和数据批量导入时发生。
 ? As your database grows in size,consider using table compression. Compression saves disk space,reduces memory use in the database buffer cache,and can significantly speed query execution during reads. Compression has a cost in CPU overhead for data loading and DML. However,this cost might be offset by reduced I/O requirements
 随着数据库不断增长,可以考虑使用表压缩。压缩可以节省磁盘空间,减少数据库buffer cache内存使用,并且可以加速查询。 压缩对于数据装载和DML操作有一定的CPU消耗。然而,这些消耗可以为I/O的减少而抵消。
 Table compression is completely transparent to applications. It is useful in decision support systems (DSS),online transaction processing (OLTP) systems,and archival systems. 表压缩对于应用程序完全透明。对于DSS系统、在线事务处理和归档系统都很有用处。 You can specify compression for a tablespace,a table,or a partition. If specified at the tablespace level,then all tables created in that tablespace are compressed by default. 你可以为表空间,表或者一个分区指定压缩。如果指定为表空间基本,那么该表空间所有表创建后默认都启用压缩。 Compression can occur while data is being inserted,updated,or bulk loaded into a table. Operations that permit compression include: 压缩可以再数据插入,更新或者批量装载入表中时发生。压缩表允许以下操作:
 Single-row or array inserts and updates 单行或多行插入和更新
 The following direct-path INSERT methods: 直接路径插入方法: Direct path SQL*Loader 1)CREATE TABLE AS SELECT statements
 2)Parallel INSERT statements
 3)INSERT statements with an APPEND or APPEND_VALUES hint
 截止目前,Oracle数据库共有4种表压缩技术: 1)Basic compression
 2)OLTP compression
 3)Warehouse compression (Hybrid Columnar Compression)
 4)Archive compression (Hybrid Columnar Compression)
 这里我主要介绍基本压缩: 2、基本压缩特点: 1)使用基本压缩,只有当数据是直接路径插入或更新记录(direct-path insert and updated )时才会发生压缩。
 并且支持有线的数据类型和SQL操作。
 3、如何启用基本压缩? 1)通过create table语句中指定compress条件。
 2)通过alter table .. compress; 来给现有表启用压缩;
 3)通过alter table .. nocompress; 来禁用表压缩
 4、关于基本压缩的一些例子 4.1 创建压缩表
 CREATE TABLE emp_comp compressAS
 SELECT * FROM emp
 WHERE 1=2;
 1
 2
 3
 4
 4.2 通过数据字典查看压缩表状态
 [email?protected]> SELECT table_name,compression,compress_for2 FROM user_tables
 3 WHERE table_name=‘EMP_COMP‘;
 TABLE_NAME COMPRESS COMPRESS_FOR------------------------------ -------- ------------
 EMP_COMP ENABLED BASIC
 1
 2
 3
 4
 5
 6
 7
 4.3 通过非直接路径插入数据
 [email?protected]> INSERT INTO emp_comp2 SELECT * FROM emp;
 已创建16行。 [email?protected]> commit; --查看表占用[email?protected]> exec show_space(‘EMP_COMP‘,‘SCOTT‘);
 Unformatted Blocks .................... 0
 FS1 Blocks (0-25) .................... 0
 FS2 Blocks (25-50) .................... 0
 FS3 Blocks (50-75) .................... 0
 FS4 Blocks (75-100) .................... 5
 Full Blocks .................... 0
 Total Blocks ........................... 8
 Total Bytes ........................... 65,536
 Total MBytes ........................... 0
 Unused Blocks........................... 0
 Unused Bytes ........................... 0
 Last Used Ext FileId.................... 4
 Last Used Ext BlockId................... 14,304
 Last Used Block......................... 8
 --看下emp的占用[email?protected]> exec show_space(‘EMP‘,536
 Total MBytes ........................... 0
 Unused Blocks........................... 0
 Unused Bytes ........................... 0
 Last Used Ext FileId.................... 4
 Last Used Ext BlockId................... 144
 Last Used Block......................... 8
 --对比与原EMP表的占用情况,emp_comp表并未压缩。1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 注:关于show_space过程的用法,请参考【http://blog.csdn.net/indexman/article/details/47207987】
 4.4 通过直接路径插入数据 drop table emp_comp purge; CREATE TABLE emp_comp compressAS
 SELECT * FROM emp
 WHERE 1=2;
 insert /*+ append */ into emp_comp
 select *
 from emp;
 --查看表占用[email?protected]> exec show_space(‘EMP_COMP‘,‘SCOTT‘);
 Unformatted Blocks .................... 0
 FS1 Blocks (0-25) .................... 0
 FS2 Blocks (25-50) .................... 0
 FS3 Blocks (50-75) .................... 0
 FS4 Blocks (75-100) .................... 0
 Full Blocks .................... 1
 Total Blocks ........................... 8
 Total Bytes ........................... 65,536
 Total MBytes ........................... 0
 Unused Blocks........................... 4
 Unused Bytes ........................... 32,768
 Last Used Ext FileId.................... 4
 Last Used Ext BlockId................... 14,304
 Last Used Block......................... 4
 (编辑:源码网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |