Oracle Advanced Compression
The Oracle Database 11g Advanced Compression Option introduces a comprehensive set of compression capabilities to help customers maximize resource utilization and reduce costs. It allows IT administrators to significantly reduce their overall database storage footprint by enabling compression for all types of data – be it relational (table), unstructured (file), or backup data. Although storage cost savings are often seen as the most tangible benefit of compression, innovative technologies included in the Advanced Compression Option are designed to reduce resource requirements and technology costs for all components of your IT infrastructure, including memory and network bandwidth.
1.Compression for Table Data
Oracle has been a pioneer in database compression technology. Oracle Database 9i introduced Basic Table Compression several years ago that compressed data that was loaded using bulk load operations. Oracle Database 11g Release 1 introduced a new feature called OLTP Table Compression that allows data to be compressed during all types of data manipulation operations, including conventional DML such as INSERT and UPDATE. In addition, OLTP Table Compression reduces the associated compression overhead of write operations making it suitable for transactional or OLTP environments as well. OLTP Table Compression, therefore, extends the benefits of compression to all application workloads.
It should be noted that Basic Table Compression is a base feature of Oracle Database 11g Enterprise Edition (EE). OLTP Table Compression is a part of the Oracle Advanced Compression option, which requires a license in addition to the Enterprise Edition.
2.OLTP Table Compression
Oracle’s OLTP Table Compression uses a unique compression algorithm specifically designed to work with OLTP applications. The algorithm works by eliminating duplicate values within a database block, even across multiple columns. Compressed blocks contain a structure called a symbol table that maintains compression metadata. When a block is compressed, duplicate values are eliminated by first adding a single copy of the duplicate value to the symbol table. Each duplicate value is then replaced by a short reference to the appropriate entry in the symbol table.
Through this innovative design, compressed data is self-contained within the database block as the metadata used to translate compressed data into its original state is stored in the block. When compared with competing compression algorithms that maintain a global database symbol table, Oracle’s unique approach offers significant performance benefits by not introducing additional I/O when accessing compressed data.
3.Benefits of OLTP Table Compression
The compression ratio achieved in a given environment depends on the nature of the data being compressed; specifically the cardinality of the data. In general, customers can expect to reduce their storage space consumption by a factor of 2x to 4x by using the OLTP Table Compression feature. That is, the amount of space consumed by uncompressed data will be two to four times larger than that of the compressed data.
The benefits of OLTP Table Compression go beyond just on-disk storage savings. One significant advantage is Oracle’s ability to read compressed blocks directly without having to first uncompress the block.（其中一个显着的优点ORACLE是直接读取压缩块，无需先解压压缩块。） Therefore, there is no measurable performance degradation for accessing compressed data. In fact, in many cases performance may improve due to the reduction in I/O
since Oracle will have to access fewer blocks. Further, the buffer cache will become more efficient by storing more data without having to add memory.
3.Minimal Performance Overhead
As stated above, OLTP Table Compression has no adverse impact on read operations. There is additional work performed while writing data, making it impossible to eliminate performance overhead for write operations. However, Oracle has put in a significant amount of work to minimize this overhead for OLTP Table Compression. Oracle compresses blocks in batch mode rather than compressing data every time a write operation takes place. A newly initialized block remains uncompressed until data in the block reaches an internally controlled threshold.（ 新初始化块保持未压缩的，直到块中的数据达到内部控制的阈值。）
When a transaction causes the data in the block to reach this threshold, all contents of the block are compressed. Subsequently, as more data is added to the block and the threshold is again reached, the entire block is recompressed to achieve the highest level of compression.
This process repeats until Oracle determines that the block can no longer benefit from further compression. Only transactions that trigger the compression of the block will experience the slight compression overhead. Therefore, a majority of OLTP transactions on compressed blocks will have the exact same performance as they would with uncompressed blocks.
4.Migration and Best Practices
For new tables and partitions, enabling OLTP Table Compression is as easy as simply CREATEing the table or partition and specifying “COMPRESS FOR OLTP”. See the example below: CREATE TABLE emp (emp_id NUMBER, first_name VARCHAR2(128), last_name VARCHAR2(128)) COMPRESS FOR OLTP; For existing tables and partitions, there are three recommended approaches to enabling OLTP Table Compression:
1. ALTER TABLE … COMPRESS FOR OLTP
§ This approach will enable OLTP Table Compression for all future DML -- however, the existing data in the table will remain uncompressed.
2. Online Redefinition (DBMS_REDEFINITION)
§ This approach will enable OLTP Table Compression for future DML and also compress existing data. Using DBMS_REDEFINITION keeps the table online for both read/write activity during the migration. Run DBMS_REDEFINITION in parallel for best performance.
§ Online redefinition will clone the indexes to the interim （过渡的）table during the operation. All the cloned indexes are incrementally maintained during the sync (refresh) operation so there is no interrupt in the use of the indexes during, or after, the online redefinition. The only exception is when online redefinition is used for redefining a partition -- the global index is invalidated and needs to be rebuilt after the online redefinition.
3. ALTER TABLE … MOVE COMPRESS FOR OLTP
§ This approach will enable OLTP Table Compression for future DML and also compress existing data. While the table is being moved it is online for read activity but has an exclusive (X) lock – so all DML will be blocked until the move command completes. Run ALTER TABLE MOVE in parallel for best performance.
§ The ALTER TABLE...MOVE statement allows you to relocate data of a non-partitioned table, or of a partition of a partitioned table, into a new segment, and optionally into a different tablespace. (alter table ..move可以重定位非分区表的数据或分区表中的一个分区进入到新的段或不同的表空间中)。ALTER TABLE MOVE COMPRESS compresses the data by creating new extents for the compressed data in the tablespace being moved to(ALTER TABLE MOVE COMPRESS数据压缩通过创建新的EXTENTS给压缩的数据转移) -- it is important to note that the positioning of the new segment can be anywhere within the datafile, not necessarily at the tail of the file or head of the file. When the original segment is released, depending on the location of the extents, it may or may not be possible to shrink the datafile.
§ ALTER TABLE MOVE will invalidate any indexes on the partition or table; those indexes will need to be rebuilt after the ALTER TABLE MOVE. Alternatively, the use of ALTER TABLE MOVE with the UPDATE INDEXES clause will maintain indexes (it places an exclusive (X) lock so all DML will be blocked until the move command completes).
Below are some best practices and considerations for the capabilities that are included as part of the Advanced Compression Option:
· The best test environment for each Advanced Compression capability is where you can most closely duplicate the production environment– this will provide the most realistic (pre- and post- compression) performance comparisons.
· Space usage reduction with OLTP Table Compression enabled gives the best results where the most duplicate data is stored (low cardinality). This is especially true for backups -- greater compression will result in less data backed up and hence shorter recovery time. Sorting data (on the columns with the most duplicates) prior to bulk loads may increase the compression ratio.
· Although CPU overhead is typically minimal, implementing Oracle Advanced Compression is ideal on systems with available CPU cycles, as compression will have additional, although minor overhead for some DML operations.
· Oracle Advanced Compression Advisor is a PL/SQL package that is used to estimate potential storage savings for OLTP Table Compression based on analysis of a sample of data. It provides a good estimate of the actual results that may be obtained after implementing Oracle Advanced Compression’s OLTP Table compression feature. Oracle Advanced Compression Advisor, which supports Oracle Database 9i Release 2
through 11g Release 1, is available for free on the Oracle Technology Network website. The Advanced Compression Advisor is built in to Oracle Database 11g Release 2.
· OLTP Table Compression is NOT supported for use with tables that have more than 255 columns or that have LONG data types.
· LOBs are best stored in the Oracle Database as SecureFiles LOBs, and if the customer has licensed the Advanced Compression Option, they can use SecureFiles Compression and Deduplication to potentially reduce the amount of storage required for LOBs.
5.Compression Syntax Examples
The examples below show the ease at which OLTP Table Compression and SecureFiles Compression/Deduplication can be enabled, for more detailed information please see the Oracle? Database SQL Language Reference.
OLTP Table Compression Syntax
CREATE TABLE emp (
, first_name VARCHAR2(128)
, last_name VARCHAR2(128)
) COMPRESS FOR OLTP;
SecureFiles Deduplication Syntax
CREATE TABLE images (
LOB(image) STORE AS SECUREFILE
(TABLESPACE lob_tbs DEDUPLICATE);
SecureFiles Compression Syntax
CREATE TABLE images (
LOB(image)STORE AS SECUREFILE
(TABLESPACE lob_tbs COMPRESS);
来自 “ ITPUB博客 ” ，链接：http://blog.itpub.net/26844646/viewspace-777060/，如需转载，请注明出处，否则将追究法律责任。