데이터 베이스 MySQL 튜토리얼 Oracle 表压缩详细介绍

Oracle 表压缩详细介绍

Jun 07, 2016 pm 05:34 PM
o 데이터 베이스

表压缩应该是从10g开始支持的吧,oracle 11g exadata将这个特性用到了极点,并大力推广压缩技术,在现代机器cpu性能井喷的状态下

前言:

表压缩应该是从10g开始支持的吧,Oracle 11g exadata将这个特性用到了极点,并大力推广压缩技术,在现代机器cpu性能井喷的状态下,对IO,内存占用的减少显得尤为重要,压缩技术肯定是未来的一种普遍技术,现在这个技术也越来越成熟,那就让我们在以后的维护过程中用起来,早日实现这个功能的普及,福利DBA。

oracle 12c同样对压缩技术进行了支持,下面是各种压缩方法的优缺点,语法和介绍:

基本表压缩        压缩级别高      cpu消耗少                      适合DSS            语法ROW STORE COMPRESS[BASIC]        未使用direct-path 插入和更新数据将不压缩
高级压缩            压缩级别高      cpu消耗少                      适合OLTP DSS  语法ROW STORE COMPRESS ADVANCED 同上
数据仓库压缩  (混合列压缩) 压缩级别更高 cpu消耗高 适合dss              语法COLUMN STORE COMPRESS FOR QUERY [LOW|HIGH]  高cpu,不使用direct-path是行级别存储,而非列格式,压缩级别将降低
归档压缩          (混合列压缩)  压缩级别最高 cpu消耗最高 适合归档        语法COLUMN STORE COMPRESS FOR ARCHIVE[LOW|HIGH] 同上

 

各种压缩技术优缺点:

基本表压缩适合direct path 插入和受限数据类型sql
高级行压缩支持所有的数据类型和所有sql

混合列压缩适合不频繁的update

归档压缩仅适合direct path inserted,传统的插入和更新也是支持的,不过得使用ADO(automatic data optimization)策略移动行达到要求的混合列压缩级别


总结:大家可以发现高级行压缩是理想压缩方式,其他级别都是冷门压缩,根据情况使用

测试一下吧
我的环境:oracle 12c for linux enterprise 5 +file system  --single instance

 

SQL> create table tt (id number) row store compress basic; --成功
SQL> create table tt (id number) row store compress advanced; --成功
SQL> create table tt (id number) column store compress for query high; --报错,发现普通存储不支持,只适合exadata上使用

create table tt (id number) column store compress for query high
*
ERROR at line 1:
ORA-64307:  Exadata Hybrid Columnar Compression is not supported for
tablespaces on this storage type
SQL> create table tt (id number) column store compress for archive high; --报错同上

SQL> create table tt (id number);

Table created.

SQL> alter table tt row store compress advanced; --表后期可以来指定压缩级别

Table altered.

SQL>

 

总结:发现有点遗憾的是数据仓库级压缩和归档压缩在普通库上不支持,我们再一次受限制了

 

 

alter table 修改表为压缩,只影响后边的插入和更新操作,以前的数据不进行操作。
alter table move会将所有的数据进行压缩。
alter table ... nocompress;  --取消表压缩,但是已经压缩的数据是不会自己解压缩的,新数据将会使用Uncompressed

column store compress for query high  是默认仓库级压缩,提供好的性能和压缩级别,但是混合列只能在exadata storage上 
query low适合读性能特别差的系统,,他比query high要快

column store compress for archive low 是默认的归档压缩模式,,,提供了高级别压缩和理想的不频繁的数据访问,archive high适合和少数据访问的情况

DBMS_COMPRESSION包帮助进行重要表的特殊压缩方式实现期望的压缩级别

CREATE TABLE sales_history ... ROW STORE COMPRESS;  --此语句默认使用的basic table 压缩

 


手工测试一下,没有数据库机,就把basic compress和row advanced compress测试一下,看一下效果
SQL> select  segment_name,bytes/1024/1024 from user_segments;

SEGMENT_NAME                                                                                                                    BYTES/1024/1024
-------------------------------------------------------------------------------------------------------------------------------- ---------------
TEST                                                                                                                                      .0625
AA                                                                                                                                          192

SQL>
SQL>
SQL> create table aa_bas row store compress basic as select * from aa;

Table created.

SQL> create table aa_adv row store compress advanced as select * from aa;

Table created.

SQL>  select  segment_name,bytes/1024/1024 from user_segments;

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

iOS 18에는 손실되거나 손상된 사진을 검색할 수 있는 새로운 '복구된' 앨범 기능이 추가되었습니다. iOS 18에는 손실되거나 손상된 사진을 검색할 수 있는 새로운 '복구된' 앨범 기능이 추가되었습니다. Jul 18, 2024 am 05:48 AM

Apple의 최신 iOS18, iPadOS18 및 macOS Sequoia 시스템 릴리스에는 사진 애플리케이션에 중요한 기능이 추가되었습니다. 이 기능은 사용자가 다양한 이유로 손실되거나 손상된 사진과 비디오를 쉽게 복구할 수 있도록 설계되었습니다. 새로운 기능에는 사진 앱의 도구 섹션에 '복구됨'이라는 앨범이 도입되었습니다. 이 앨범은 사용자가 기기에 사진 라이브러리에 포함되지 않은 사진이나 비디오를 가지고 있을 때 자동으로 나타납니다. "복구된" 앨범의 출현은 데이터베이스 손상으로 인해 손실된 사진과 비디오, 사진 라이브러리에 올바르게 저장되지 않은 카메라 응용 프로그램 또는 사진 라이브러리를 관리하는 타사 응용 프로그램에 대한 솔루션을 제공합니다. 사용자는 몇 가지 간단한 단계만 거치면 됩니다.

PHP에서 MySQLi를 사용하여 데이터베이스 연결을 설정하는 방법에 대한 자세한 튜토리얼 PHP에서 MySQLi를 사용하여 데이터베이스 연결을 설정하는 방법에 대한 자세한 튜토리얼 Jun 04, 2024 pm 01:42 PM

MySQLi를 사용하여 PHP에서 데이터베이스 연결을 설정하는 방법: MySQLi 확장 포함(require_once) 연결 함수 생성(functionconnect_to_db) 연결 함수 호출($conn=connect_to_db()) 쿼리 실행($result=$conn->query()) 닫기 연결( $conn->close())

PHP에서 데이터베이스 연결 오류를 처리하는 방법 PHP에서 데이터베이스 연결 오류를 처리하는 방법 Jun 05, 2024 pm 02:16 PM

PHP에서 데이터베이스 연결 오류를 처리하려면 다음 단계를 사용할 수 있습니다. mysqli_connect_errno()를 사용하여 오류 코드를 얻습니다. 오류 메시지를 얻으려면 mysqli_connect_error()를 사용하십시오. 이러한 오류 메시지를 캡처하고 기록하면 데이터베이스 연결 문제를 쉽게 식별하고 해결할 수 있어 애플리케이션이 원활하게 실행될 수 있습니다.

Golang에서 데이터베이스 콜백 함수를 사용하는 방법은 무엇입니까? Golang에서 데이터베이스 콜백 함수를 사용하는 방법은 무엇입니까? Jun 03, 2024 pm 02:20 PM

Golang의 데이터베이스 콜백 기능을 사용하면 다음을 달성할 수 있습니다. 지정된 데이터베이스 작업이 완료된 후 사용자 정의 코드를 실행합니다. 추가 코드를 작성하지 않고도 별도의 함수를 통해 사용자 정의 동작을 추가할 수 있습니다. 삽입, 업데이트, 삭제, 쿼리 작업에 콜백 함수를 사용할 수 있습니다. 콜백 함수를 사용하려면 sql.Exec, sql.QueryRow, sql.Query 함수를 사용해야 합니다.

Golang을 사용하여 원격 데이터베이스에 연결하는 방법은 무엇입니까? Golang을 사용하여 원격 데이터베이스에 연결하는 방법은 무엇입니까? Jun 01, 2024 pm 08:31 PM

Go 표준 라이브러리 데이터베이스/sql 패키지를 통해 MySQL, PostgreSQL 또는 SQLite와 같은 원격 데이터베이스에 연결할 수 있습니다. 데이터베이스 연결 정보가 포함된 연결 문자열을 생성합니다. sql.Open() 함수를 사용하여 데이터베이스 연결을 엽니다. SQL 쿼리 및 삽입 작업과 같은 데이터베이스 작업을 수행합니다. 리소스를 해제하기 위해 defer를 사용하여 데이터베이스 연결을 닫습니다.

C++를 사용하여 데이터베이스 연결 및 작업을 처리하는 방법은 무엇입니까? C++를 사용하여 데이터베이스 연결 및 작업을 처리하는 방법은 무엇입니까? Jun 01, 2024 pm 07:24 PM

C++의 DataAccessObjects(DAO) 라이브러리를 사용하여 데이터베이스 연결 설정, SQL 쿼리 실행, 새 레코드 삽입 및 기존 레코드 업데이트를 포함하여 데이터베이스를 연결하고 운영합니다. 구체적인 단계는 다음과 같습니다. 1. 필요한 라이브러리 문을 포함합니다. 2. 데이터베이스 파일을 엽니다. 3. SQL 쿼리를 실행하거나 데이터를 조작하기 위한 Recordset 개체를 만듭니다. 4. 특정 요구에 따라 결과를 탐색하거나 레코드를 업데이트합니다.

Go WebSocket은 데이터베이스와 어떻게 통합됩니까? Go WebSocket은 데이터베이스와 어떻게 통합됩니까? Jun 05, 2024 pm 03:18 PM

GoWebSocket을 데이터베이스와 통합하는 방법: 데이터베이스 연결 설정: 데이터베이스/sql 패키지를 사용하여 데이터베이스에 연결합니다. WebSocket 메시지를 데이터베이스에 저장: INSERT 문을 사용하여 데이터베이스에 메시지를 삽입합니다. 데이터베이스에서 WebSocket 메시지 검색: SELECT 문을 사용하여 데이터베이스에서 메시지를 검색합니다.

JSON 데이터를 Golang의 데이터베이스에 저장하는 방법은 무엇입니까? JSON 데이터를 Golang의 데이터베이스에 저장하는 방법은 무엇입니까? Jun 06, 2024 am 11:24 AM

JSON 데이터는 gjson 라이브러리 또는 json.Unmarshal 함수를 사용하여 MySQL 데이터베이스에 저장할 수 있습니다. gjson 라이브러리는 JSON 필드를 구문 분석하는 편리한 방법을 제공하며, json.Unmarshal 함수에는 JSON 데이터를 비정렬화하기 위한 대상 유형 포인터가 필요합니다. 두 방법 모두 SQL 문을 준비하고 삽입 작업을 수행하여 데이터를 데이터베이스에 유지해야 합니다.

See all articles