Home Database Mysql Tutorial Oracle压缩功能小结2—预估表压缩的效果

Oracle压缩功能小结2—预估表压缩的效果

Jun 07, 2016 pm 03:02 PM
oracle use Function compression Effect

在使用压缩之前,我们可以估算一下使用压缩能够拥有多大的效果。 11gr2以前可以使用dbms_comp_advisor,具体代码已经在附件中给出。只需要执行两个文件dbmscomp.sql和prvtcomp.plb,然后使用DBMS_COMP_ADVISOR.getratio存储过程即可。不再详细描述。 SQL set

在使用压缩之前,我们可以估算一下使用压缩能够拥有多大的效果。

11gr2以前可以使用dbms_comp_advisor,具体代码已经在附件中给出。只需要执行两个文件dbmscomp.sql和prvtcomp.plb,然后使用DBMS_COMP_ADVISOR.getratio存储过程即可。不再详细描述。


SQL> set serveroutput on
SQL> execdbms_comp_advisor.getratio('SH','SALES',10)
Sampling table: SH.SALES
Sampling percentage: 10%
Estimated compression ratio for the advancedcompression option is : 2.96
Copy after login

11gr2以后系统会自带一个dbms_compression的包,用来代替dbms_comp_advisor提供服务。

 

_sys@FAKE> desc dbms_compression
PROCEDURE GET_COMPRESSION_RATIO
 ArgumentName                  Type                    In/Out Default?
 ----------------------------------------------------- ------ --------
 SCRATCHTBSNAME                 VARCHAR2                IN
 OWNNAME                        VARCHAR2                IN
 TABNAME                        VARCHAR2                IN
 PARTNAME                       VARCHAR2                IN
 COMPTYPE                       NUMBER                  IN
 BLKCNT_CMP                     BINARY_INTEGER          OUT
 BLKCNT_UNCMP                   BINARY_INTEGER          OUT
 ROW_CMP                        BINARY_INTEGER          OUT
 ROW_UNCMP                      BINARY_INTEGER          OUT
 CMP_RATIO                      NUMBER                  OUT
 COMPTYPE_STR                   VARCHAR2                OUT
 SUBSET_NUMROWS                 NUMBER                  IN     DEFAULT
FUNCTION GET_COMPRESSION_TYPE RETURNS NUMBER
 ArgumentName                  Type                    In/Out Default?
 ----------------------------------------------------- ------ --------
 OWNNAME                        VARCHAR2                IN
 TABNAME                        VARCHAR2                IN
 ROW_ID                         ROWID                   IN
PROCEDURE INCREMENTAL_COMPRESS
 ArgumentName                  Type                    In/Out Default?
 ----------------------------------------------------- ------ --------
 OWNNAME                        VARCHAR2(30)            IN
 TABNAME                        VARCHAR2(128)           IN
 PARTNAME                       VARCHAR2(30)            IN
 COLNAME                        VARCHAR2                IN
 DUMP_ON                        NUMBER                  IN     DEFAULT
 AUTOCOMPRESS_ON                NUMBER                  IN     DEFAULT
 WHERE_CLAUSE                   VARCHAR2                IN     DEFAULT
 
Copy after login


重点看GET_COMPRESSION_RATIO这个存储过程,它可以预估表的压缩比例。
可以使用以下的匿名块执行。

DECLARE
 blkcnt_comp PLS_INTEGER;
 blkcnt_uncm PLS_INTEGER;
 row_comp    PLS_INTEGER;
 row_uncm    PLS_INTEGER;
 comp_ratio  number;
 comp_type   VARCHAR2(30);
 username varchar2(30) := '&USER';
 tablename varchar2(30) := '&TB' ;
BEGIN
 dbms_compression.get_compression_ratio('&Usedtbs',
                                         username,
                                        tablename,
                                         NULL,
                                        dbms_compression.COMP_FOR_OLTP,
                                        blkcnt_comp,
                                         blkcnt_uncm,
                                        row_comp,
                                        row_uncm,
                                        comp_ratio,
                                        comp_type);
 dbms_output.put_line('Sampling table: '||username||'.'||tablename);
 dbms_output.put_line('Estimated compression ratio: ' ||TO_CHAR(comp_ratio));
 dbms_output.put_line('Compression Type: ' || comp_type);
END;
/
Copy after login

执行效果:

 

 /
Enter value for user: DEXTER
old  8:   username varchar2(30) :='&USER';
new  8:   username varchar2(30) :='DEXTER';
Enter value for tb: ACCOUNT
old  9:   tablename varchar2(30) :='&TB' ;
new  9:   tablename varchar2(30) :='ACCOUNT' ;
Enter value for usedtbs: USERS
old 11:   dbms_compression.get_compression_ratio('&Usedtbs',
new 11:  dbms_compression.get_compression_ratio('USERS',
Sampling table: DEXTER.ACCOUNT
Estimated compression ratio: 1
Compression Type: "Compress For OLTP"
 
PL/SQL procedure successfully completed.
Copy after login


因为表中的重复值非常少,上文中Estimated compression ratio: 1,表示没有任何压缩效果。
高级压缩,基于块内的压缩。所以就算有重复值,但是没有在一个块中,那么高级压缩还是无法起作用。

这里重点介绍一个参数 COMPTYPE,它一共有6个选项,分别是


COMP_NOCOMPRESS               CONSTANT NUMBER := 1;
COMP_FOR_OLTP                 CONSTANT NUMBER := 2;
COMP_FOR_QUERY_HIGH           CONSTANT NUMBER := 4;
COMP_FOR_QUERY_LOW            CONSTANT NUMBER := 8;
COMP_FOR_ARCHIVE_HIGH         CONSTANT NUMBER := 16;
COMP_FOR_ARCHIVE_LOW          CONSTANT NUMBER := 32;
Copy after login

Query high 以下都是HCC(HybridColumnar Compression)的内容,因为与Exadata的存储节点相关,所以在非Exadata一体机环境无法使用。不过有意思的是,你可以在普通环境下使用get_compression_ratio来预估压缩的比例。




11gr2以前compression-advisor存储过程下载地址:

http://download.csdn.net/detail/renfengjun/7514723


 

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How long will Oracle database logs be kept? How long will Oracle database logs be kept? May 10, 2024 am 03:27 AM

The retention period of Oracle database logs depends on the log type and configuration, including: Redo logs: determined by the maximum size configured with the "LOG_ARCHIVE_DEST" parameter. Archived redo logs: Determined by the maximum size configured by the "DB_RECOVERY_FILE_DEST_SIZE" parameter. Online redo logs: not archived, lost when the database is restarted, and the retention period is consistent with the instance running time. Audit log: Configured by the "AUDIT_TRAIL" parameter, retained for 30 days by default.

The order of the oracle database startup steps is The order of the oracle database startup steps is May 10, 2024 am 01:48 AM

The Oracle database startup sequence is: 1. Check the preconditions; 2. Start the listener; 3. Start the database instance; 4. Wait for the database to open; 5. Connect to the database; 6. Verify the database status; 7. Enable the service (if necessary ); 8. Test the connection.

7-zip maximum compression rate setting, how to compress 7zip to the minimum 7-zip maximum compression rate setting, how to compress 7zip to the minimum Jun 18, 2024 pm 06:12 PM

I found that the compressed package downloaded from a download website will be larger than the original compressed package after decompression. The difference is tens of Kb for a small one and several dozen Mb for a large one. If it is uploaded to a cloud disk or paid space, it does not matter if the file is small. , if there are many files, the storage cost will be greatly increased. I studied it specifically and can learn from it if necessary. Compression level: 9-Extreme compression Dictionary size: 256 or 384, the more compressed the dictionary, the slower it is. The compression rate difference is larger before 256MB, and there is no difference in compression rate after 384MB. Word size: maximum 273 Parameters: f=BCJ2, test and add parameter compression rate will be higher

How to see the number of occurrences of a certain character in Oracle How to see the number of occurrences of a certain character in Oracle May 09, 2024 pm 09:33 PM

To find the number of occurrences of a character in Oracle, perform the following steps: Get the total length of a string; Get the length of the substring in which a character occurs; Count the number of occurrences of a character by subtracting the substring length from the total length.

Oracle database server hardware configuration requirements Oracle database server hardware configuration requirements May 10, 2024 am 04:00 AM

Oracle database server hardware configuration requirements: Processor: multi-core, with a main frequency of at least 2.5 GHz. For large databases, 32 cores or more are recommended. Memory: At least 8GB for small databases, 16-64GB for medium sizes, up to 512GB or more for large databases or heavy workloads. Storage: SSD or NVMe disks, RAID arrays for redundancy and performance. Network: High-speed network (10GbE or higher), dedicated network card, low-latency network. Others: Stable power supply, redundant components, compatible operating system and software, heat dissipation and cooling system.

How much memory does oracle require? How much memory does oracle require? May 10, 2024 am 04:12 AM

The amount of memory required by Oracle depends on database size, activity level, and required performance level: for storing data buffers, index buffers, executing SQL statements, and managing the data dictionary cache. The exact amount is affected by database size, activity level, and required performance level. Best practices include setting the appropriate SGA size, sizing SGA components, using AMM, and monitoring memory usage.

Oracle scheduled tasks execute the creation step once a day Oracle scheduled tasks execute the creation step once a day May 10, 2024 am 03:03 AM

To create a scheduled task in Oracle that executes once a day, you need to perform the following three steps: Create a job. Add a subjob to the job and set its schedule expression to "INTERVAL 1 DAY". Enable the job.

How much memory is needed to use oracle database How much memory is needed to use oracle database May 10, 2024 am 03:42 AM

The amount of memory required for an Oracle database depends on the database size, workload type, and number of concurrent users. General recommendations: Small databases: 16-32 GB, Medium databases: 32-64 GB, Large databases: 64 GB or more. Other factors to consider include database version, memory optimization options, virtualization, and best practices (monitor memory usage, adjust allocations).

See all articles