Computer >> Máy Tính >  >> Lập trình >> Cơ sở dữ liệu

Các tính năng điều chỉnh hiệu suất mới của Oracle Database 12c Release 12.1.0.0:Part 2

Được xuất bản lần đầu bởi TriCore:ngày 12 tháng 4 năm 2017

Loạt bài đăng trên blog gồm hai phần này bao gồm các tính năng điều chỉnh hiệu suất mới trong Cơ sở dữ liệuOracle®. Phần 1 đã thảo luận về OracleDatabase phiên bản 12.1.0.1. Bài đăng tiếp theo này bao gồm phiên bản 12.1.0.2.

Giới thiệu về cửa hàng cột Trong Bộ nhớ

Lưu trữ cột trong bộ nhớ (lưu trữ cột IM) là một khu vực tùy chọn của Khu vực toàn cầu hệ thống (SGA) lưu trữ các bản sao của bảng, phân vùng và các đối tượng cơ sở dữ liệu khác ở định dạng cột được tối ưu hóa để quét nhanh. Lưu trữ cột IM giúp tăng tốc hiệu suất cơ sở dữ liệu của các ứng dụng phân tích, lưu trữ dữ liệu và xử lý giao dịch trực tuyến (OLTP).

Cách hoạt động của cửa hàng cột IM

Cửa hàng cột IM lưu trữ các bản sao của các đối tượng cơ sở dữ liệu trong SGA. Nó không thay thế bộ nhớ đệm của bộ đệm cơ sở dữ liệu. Cả hai vùng bộ nhớ có thể lưu cùng một định dạng dữ liệu khác nhau. Các hàng được lưu trữ trong kho lưu trữ cột IM được phân chia các vùng bộ nhớ intolarge theo định dạng cột. Một cột nằm riêng biệt trong vùng bộ nhớ liền kề trong mỗi vùng.

Bạn có thể bật lưu trữ cột IM cho bất kỳ đối tượng cơ sở dữ liệu nào sau đây:

  • Bảng
  • Chế độ xem cụ thể hóa
  • Phân vùng
  • Không gian bảng

Bạn có thể lưu trữ tất cả các cột của bảng trong kho lưu trữ cột IM hoặc chỉ lưu trữ chúng. Tương tự, đối với bảng được phân vùng, bạn có thể lưu trữ tất cả các phân vùng của bảng hoặc chỉ một tập hợp con của chúng. Nếu bạn bật lưu trữ Cột IM ở cấp vùng bảng, Cơ sở dữ liệu Oracle sẽ tự động bật tất cả các bảng và dạng xem cụ thể hóa trong không gian bảng cho cột IM.

Những lợi ích về hiệu suất khi sử dụng IM column store

Việc lưu trữ các đối tượng cơ sở dữ liệu trong bộ nhớ thay vì trên đĩa cho phép OracleDatabase thực hiện quét, truy vấn, nối và tổng hợp nhanh hơn nhiều. Cửa hàng IMcolumn có thể tăng hiệu suất khi thực hiện các tác vụ sau:

  • Quét một số lượng lớn các hàng và sử dụng bộ lọc
  • Truy vấn một tập hợp con nhỏ của một tập hợp lớn các cột
  • Nối một bảng nhỏ với một bảng lớn, đặc biệt khi điều kiện nối lọc hầu hết các hàng
  • Tổng hợp dữ liệu trong một truy vấn

Lưu trữ cột IM cũng nâng cao hiệu suất của các câu lệnh ngôn ngữ thao tác dữ liệu (DML). Hệ thống OLTP thường yêu cầu nhiều chỉ mục được tạo trên các cột được truy cập thông thường. Các chỉ mục này có thể có tác động tiêu cực đến hiệu suất của các câu lệnh DML. Việc lưu trữ một đối tượng cơ sở dữ liệu trong IM columnstore làm cho các chỉ mục này trở nên không cần thiết vì quá trình quét chạy nhanh hơn nhiều.

Các tính năng điều chỉnh hiệu suất mới của Oracle Database 12c Release 12.1.0.0:Part 2

Nguồn hình ảnh :Thư viện học Oracle Video trên YouTube:Cơ sở dữ liệu Oracle 12cdemos:Kiến trúc cửa hàng cột trong bộ nhớOverview

Ước tính kích thước cần thiết của cửa hàng cột IM

Kho cột IM hỗ trợ các phương pháp nén sau:

Phương pháp nén Thứ tự nén dữ liệu trong bộ nhớ So sánh việc nén dữ liệu trong bộ nhớ
KHÔNG CÓ MEMCOMPRESS 1 NIL
MEMCOMPRESS CHO DML 2 (nén ít nhất) B
MẠNH NHỚ CHO QUERY THẤP 3 B
NHIỆT ĐỘ CHO QUÝ RẤT CAO 4 C
NHIỆT ĐỘ CHO CÔNG SUẤT THẤP 5 D
NHỚ CHO CÔNG SUẤT CAO 6 (nén cao) tất cả


Ví dụ sau đây cho thấy cách bật oe.product_information table để lưu trữ cột IM và chỉ định phương pháp nén MEMCOMPRESS FOR CAPACITY HIGH :

SQL>ALTER TABLE oe.product_information INMEMORY MEMCOMPRESS FOR CAPACITY HIGH;

Định kích thước cửa hàng cột IM

Sau khi bạn xác định bộ nhớ cần thiết để lưu trữ các đối tượng cơ sở dữ liệu trong kho IMcolumn, bạn có thể đặt kích thước của nó bằng cách sử dụng INMEMORY_SIZE tham số khởi tạo.

Sử dụng các bước sau để đặt kích thước của kho lưu trữ cột IM:

  1. Đặt INMEMORY_SIZE tham số khởi tạo với kích thước yêu cầu.

    Giá trị mặc định cho tham số này là 0 , có nghĩa là cột IM không được sử dụng. Để bật lưu trữ cột IM, hãy đặt tham số này thành giá trị anonzero.

    Trong môi trường nhiều đối tượng, bạn có thể chỉ định kích thước của cột IM cho từng cơ sở dữ liệu có thể cắm thêm (PDB) bằng cách đặt tham số này cho mỗi PDB. và có thể lớn hơn nó.

  2. Sau khi bạn đặt kích thước của kho lưu trữ cột IM, bạn phải khởi động lại cá thể cơ sở dữ liệu của mình để cho phép nó lưu trữ các đối tượng cơ sở dữ liệu.

    Ví dụ sau đây cho thấy cách đặt kích thước của kho lưu trữ cột IM thành 100 GB:

     ALTER SYSTEM SET INMEMORY_SIZE = 100G;
    

Hỗ trợ khả năng quản lý cho cửa hàng cột IM

Báo cáo Giám sát SQL, Báo cáo Lịch sử Phiên Hoạt động (ASH) và Báo cáo Kho lưu trữ Khối lượng Công việc Tự động (AWR) hiện hiển thị số liệu thống kê cho các hoạt động trong bộ nhớ khác nhau.

Chế độ bộ nhớ đệm cơ sở dữ liệu

Có hai chế độ bộ nhớ đệm cơ sở dữ liệu:

  • Chế độ bộ nhớ đệm cơ sở dữ liệu mặc định mà các phiên bản trước của Cơ sở dữ liệu Oracle sử dụng
  • Buộc chế độ bộ nhớ đệm đầy đủ của cơ sở dữ liệu mới đối với Cơ sở dữ liệu Oracle 12cRelease 1 (12.1.0.2)

Chế độ bộ nhớ đệm cơ sở dữ liệu mặc định

Theo mặc định, Cơ sở dữ liệu Oracle sử dụng chế độ lưu vào bộ nhớ đệm cơ sở dữ liệu mặc định khi chế độ này hoạt động tốt khi quét toàn bộ bảng.

Nếu đối tượng Cơ sở dữ liệu Oracle xác định rằng có đủ không gian để lưu trữ cơ sở dữ liệu đầy đủ trong bộ đệm ẩn và việc làm đó có lợi thì phiên bản này sẽ tự động lưu cơ sở dữ liệu đầy đủ vào bộ đệm.

Nếu phiên bản xác định rằng không có đủ dung lượng để lưu trữ cơ sở dữ liệu đầy đủ trong bộ đệm ẩn, nó sẽ thực hiện các hành động sau:

  • Các bảng nhỏ hơn có kích thước dưới hai phần trăm kích thước bộ nhớ đệm của bộ đệm :Tải các bảng này vào bộ nhớ.
  • Bảng cỡ vừa :Phân tích khoảng thời gian giữa bảng cuối cùng quét qua dấu thời gian cũ của bộ đệm đệm. Nếu kích thước của bảng được sử dụng lại trong lần quét bảng gần đây nhất lớn hơn kích thước bộ đệm còn lại của bộ đệm, hãy lưu vào bộ nhớ đệm của bảng.
  • Bảng lớn :Không tải những thứ này vào bộ nhớ trừ khi bạn khai báo rõ ràng bảng cho KEEP vùng đệm.

Buộc chế độ bộ nhớ đệm đầy đủ của cơ sở dữ liệu

Buộc chế độ bộ nhớ đệm cơ sở dữ liệu đầy đủ cho phép bạn lưu vào bộ nhớ cache toàn bộ bộ nhớ cơ sở dữ liệu, điều này có thể cung cấp các cải tiến hiệu suất đáng kể khi thực hiện quét toàn bộ bảng hoặc truy cập các đối tượng lớn (LOB).

Ở chế độ bộ nhớ đệm mặc định, Cơ sở dữ liệu Oracle không phải lúc nào cũng lưu dữ liệu cơ bản vào bộ nhớ cache khi người dùng truy vấn một bảng lớn. Trong chế độ bắt buộc bộ nhớ đệm cơ sở dữ liệu đầy đủ, Cơ sở dữ liệu Oracle giả định rằng bộ đệm đệm đủ lớn để lưu vào bộ đệm cơ sở dữ liệu đầy đủ và cố gắng lưu vào bộ đệm tất cả các khối mà truy vấn truy cập. Thành công khi kích thước của cơ sở dữ liệu nhỏ hơn kích thước vùng đệm của cơ sở dữ liệu.

Cơ sở dữ liệu Oracle tải tất cả các tệp dữ liệu vào bộ đệm ẩn khi chúng được truy cập, bao gồm NOCACHE LOB và LOB sử dụng Oracle Database SecureFiles.

Các tính năng điều chỉnh hiệu suất mới của Oracle Database 12c Release 12.1.0.0:Part 2

Nguồn hình ảnh :Full DB In-MemoryCaching.

Khi nào sử dụng chế độ buộc toàn bộ cơ sở dữ liệu cache

Cân nhắc sử dụng chế độ bộ nhớ đệm đầy đủ cơ sở dữ liệu bắt buộc trong các trường hợp sau:

  • Kích thước cơ sở dữ liệu logic (hoặc không gian được sử dụng thực tế) nhỏ hơn bộ đệm đệm riêng của từng cá thể cơ sở dữ liệu trong môi trường Oracle RealApplication Clusters (RAC). Khuyến nghị này cũng áp dụng cho cơ sở dữ liệu RAC không-Oracle.
  • Kích thước cơ sở dữ liệu logic nhỏ hơn 80% kích thước bộ đệm kết hợp lưu vào bộ đệm của tất cả các phiên bản cơ sở dữ liệu cho khối lượng công việc được phân vùng tốt (truy cập theo cơ chế) trong môi trường Oracle RAC.
  • Cơ sở dữ liệu sử dụng SGA_TARGET hoặc MEMORY_TARGET .
  • NOCACHE LOB cần được lưu vào bộ nhớ đệm. NOCACHE LOB không bao giờ được sử dụng trong bộ đệm ẩn mà không cần dùng đến bộ đệm đầy đủ của cơ sở dữ liệu.

Trong ba tình huống đầu tiên, bạn nên theo dõi hiệu suất hệ thống theo kinh nghiệm để xác minh rằng các chỉ số hiệu suất đáp ứng kỳ vọng của bạn.

Lưu ý :Khi một cá thể cơ sở dữ liệu Oracle RAC sử dụng chế độ tạo bộ đệm dữ liệu đầy đủ, thì tất cả các cá thể cơ sở dữ liệu khác trong Môi trường RAC Oracle cũng sử dụng chế độ này. Trong môi trường nhiều đối tượng, chế độ bộ nhớ đệm đầy đủ cơ sở dữ liệu buộc áp dụng cho toàn bộ CDB, bao gồm tất cả các PDB của nó.

Thiết lập và xác minh chế độ lưu trong cơ sở dữ liệu

Đầu tiên, hãy kiểm tra cơ sở dữ liệu và dung lượng bộ nhớ. Bạn có thể loại trừ SYSAUX không gian bảng, như được hiển thị trong ví dụ sau:

SQL> col size_mb format 9999
SQL> SELECT sum(bytes)/1024/1024 seg_size_mb FROM dba_segments where tablespace_name != 'SYSAUX';
SEG_SIZE_MB
-----------
4971

Sử dụng lệnh sau để kiểm tra kích thước của bộ đệm đệm:

SQL> SELECT round(sum(cnum_set * blk_size)/1024/1024) size_mb FROM X$KCBWDS;
SIZE_MB
-------
5283

Sử dụng các bước sau để định cấu hình cơ sở dữ liệu của bạn để thực hiện việc lưu trữ dữ liệu đầy đủ:

SQL> startup mount;
Database mounted.

SQL> ALTER DATABASE FORCE FULL DATABASE CACHING;
Database altered.

SQL> SELECT force_full_db_caching FROM v$database;
FORslug: '' ---YES

SQL> alter database open;
Database altered.

Sử dụng các bước sau để xác minh rằng đã bật chế độ bộ nhớ đệm đầy đủ của cơ sở dữ liệu:

  1. Sử dụng lệnh sau để truy vấn V$DATABASE xem:

     SQL>SELECT FORCE_FULL_DB_CACHING FROM V$DATABASE;
    

    Đầu ra là YES hoặc NO .

  2. Để bật chế độ buộc toàn bộ bộ nhớ đệm cơ sở dữ liệu, hãy sử dụng ALTER DATABASE sau lệnh:

     ALTER DATABASE FORCE FULL DATABASE CACHING;
    

    Lệnh trả về xác nhận sau:

     Database altered.
    
  3. Để tắt buộc bộ nhớ đệm đầy đủ cơ sở dữ liệu, hãy sử dụng lệnh sau:

     SQL> ALTER DATABASE NO FORCE FULL DATABASE CACHING;
    

    Lệnh trả về xác nhận sau:

     Database altered.
    

Kết luận

Tóm lại, kho lưu trữ cột IM giúp giảm thời gian thực thi cho các câu lệnh DML và áp dụng chế độ bộ nhớ đệm cơ sở dữ liệu đầy đủ cung cấp các cải tiến hiệu suất đáng kể. / P>

Sử dụng tab Phản hồi để đưa ra bất kỳ nhận xét hoặc đặt câu hỏi nào.

Tài liệu tham khảo

Các nguồn sau đây được sử dụng làm tài liệu tham khảo cho bài đăng trên blog này:

  • Hướng dẫn Điều chỉnh Hiệu suất Cơ sở dữ liệu:Lợi ích Hiệu suất của Việc Sử dụng Cửa hàng Cột Trong Bộ nhớ

  • Bộ nhớ đệm trong bộ nhớ đầy đủ DB

  • Các bản trình diễn của Cơ sở dữ liệu Oracle 12c:Tổng quan về Kiến trúc Cửa hàng Cột Trong Bộ nhớ