Table Compression – Nén bảng trong Oracle Database

Quản trị việc nén bảng và hàng trong cơ sở dữ liệu Oracle giúp tối ưu hóa việc sử dụng không gian lưu trữ và cải thiện hiệu suất truy vấn. Oracle Database cung cấp nhiều kỹ thuật nén khác nhau cho bảng và hàng để đạt được các mục tiêu này.

Các Loại Nén Trong Oracle Database

  1. Basic Table Compression:
    • Được sử dụng để nén dữ liệu chỉ khi dữ liệu được nạp vào bảng.
    • Thích hợp cho dữ liệu chỉ đọc hoặc ít cập nhật.
  2. OLTP Table Compression:
    • Hỗ trợ cả dữ liệu đọc và ghi.
    • Tối ưu hóa không gian lưu trữ trong các môi trường giao dịch.
  3. Hybrid Columnar Compression (HCC):
    • Dành cho các hệ thống lưu trữ Exadata.
    • Cung cấp tỷ lệ nén cao bằng cách kết hợp giữa nén hàng và cột.

Cách Sử Dụng Nén Bảng và Hàng

1. Basic Table Compression

CREATE TABLE sales (
sale_id NUMBER,
sale_date DATE,
amount NUMBER
)
TABLESPACE users
COMPRESS BASIC;

Nén bảng hiện có:

ALTER TABLE sales MOVE COMPRESS BASIC;

2. OLTP Table Compression

Tạo bảng với nén OLTP:

CREATE TABLE customers (
customer_id NUMBER,
first_name VARCHAR2(50),
last_name VARCHAR2(50)
)
TABLESPACE users
COMPRESS FOR OLTP;

Nén bảng hiện có:

ALTER TABLE customers MOVE COMPRESS FOR OLTP;

3. Hybrid Columnar Compression (HCC)

HCC chỉ khả dụng trên hệ thống lưu trữ Exadata và một số thiết bị lưu trữ Oracle khác.

Tạo bảng với nén HCC:

CREATE TABLE orders (
order_id NUMBER,
order_date DATE,
customer_id NUMBER,
amount NUMBER
)
TABLESPACE users
COMPRESS FOR QUERY HIGH; -- Hoặc COMPRESS FOR ARCHIVE HIGH

Nén bảng hiện có:

ALTER TABLE orders MOVE COMPRESS FOR QUERY HIGH;

KIỂM TRA TRẠNG THÁI NÉN CỦA BẢNG:

SELECT table_name, compression, compress_for
FROM dba_tables
WHERE owner = 'SCHEMA_NAME';

Kiểm tra hiệu quả nén:

SELECT segment_name, segment_type,
ROUND(bytes/1024/1024) AS size_mb,
ROUND((blocks*8)/1024) AS allocated_mb
FROM dba_segments
WHERE segment_type IN ('TABLE', 'INDEX')
AND owner = 'SCHEMA_NAME';

Kiểm tra mức độ nén của các hàng:

SELECT COUNT(*) AS row_count,
SUM(DBMS_ROWID.ROWID_BLOCK_NUMBER(rowid)) AS compressed_blocks
FROM duonguser.customers;

Lưu Ý Khi Sử Dụng Nén

  • Nén có thể tăng cường hiệu suất truy vấn đọc do giảm số lượng I/O.
  • Tuy nhiên, nén có thể ảnh hưởng đến hiệu suất ghi và cập nhật dữ liệu.
  • Nén giúp tiết kiệm không gian lưu trữ, đặc biệt với các bảng lớn và dữ liệu ít thay đổi.
  • Không phải tất cả các loại nén đều khả dụng trên mọi phiên bản Oracle hoặc mọi loại lưu trữ.
  • Khi nén một bảng hiện có, bảng sẽ được di chuyển, do đó cần có đủ không gian trống trong tablespace.

Bằng cách sử dụng các kỹ thuật nén một cách hợp lý, bạn có thể tối ưu hóa việc sử dụng không gian lưu trữ và cải thiện hiệu suất của cơ sở dữ liệu Oracle.

 

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận