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

Tính năng Quét thông minh Exadata của Oracle

Blog này đi sâu vào chi tiết của Tính năng quét thông minh Oracle® Exadata®, bao gồm giải thích về cách xử lý SQL khác với các ví dụ về Exadata và sử dụng.

Giới thiệu

Oracle đã thiết kế và giới thiệu Exadata vào năm 2008 với tư cách là một trong những Exadata đầu tiên trong hệ thống được thiết kế theo kiểu gia đình. Không giống như các hệ thống cơ sở dữ liệu truyền thống, được định cấu hình, cài đặt, điều chỉnh và quản lý bởi người dùng, một hệ thống được thiết kế có tất cả các thành phần cần thiết như hệ điều hành, cơ sở dữ liệu, bộ nhớ và bộ nhớ được nhà cung cấp giải pháp cài đặt sẵn, định cấu hình, điều chỉnh và tối ưu hóa, chẳng hạn như Oracle.

Có nhiều thành phần khác nhau của một máy Exadata. Các thành phần sau là những thành phần chính:

  • Máy chủ cơ sở dữ liệu :Máy chủ cấp doanh nghiệp chạy phần mềm cơ sở dữ liệu, Quản lý lưu trữ tự động (ASM) hoặc Cơ sở hạ tầng lưới Oracle.

  • Máy chủ lưu trữ :Máy chủ lưu trữ hoặc ô chạy phần mềm máy chủ lưu trữ Exadata, phần mềm này quản lý các yêu cầu I / O đến từ các máy chủ cơ sở dữ liệu và các yêu cầu cung cấp dữ liệu được trả lại cho người dùng.

  • Mạng InfiniBand :Mạng Exadata nội bộ được xây dựng trên InfiniBand, mạng này chủ yếu được thiết kế cho các môi trường máy tính hiệu suất cao.

Exadata đi kèm với phần mềm được gọi là Phần mềm lưu trữ Exadata (ESS), giúp nâng cao hiệu suất của cơ sở dữ liệu. ESS, quản lý lưu trữ được cài đặt trên mỗi ô lưu trữ, quản lý các máy chủ lưu trữ và giao tiếp với các máy chủ cơ sở dữ liệu cho bất kỳ yêu cầu nào liên quan đến lưu trữ.

Các tính năng chính của ESS

Sau đây là các tính năng chính của ESS:

  • Bộ nhớ đệm flash :Bộ nhớ cache Flash là một bộ nhớ đệm hiệu suất cao trên các thiết bị phục vụ di động lưu trữ các đối tượng được truy cập gần đây.

  • Nhật ký flash :Nhật ký Flash cung cấp một kho lưu trữ tạm thời hiệu suất cao, độ trễ thấp và đáng tin cậy để ghi lại nhật ký.

  • EHCC :Exadata Hybrid Columnar Compression (EHCC) cho phép nén dữ liệu ở mức cao nhất. EHCC tổ chức dữ liệu thành các tập hợp hàng được gọi là đơn vị nén . Trong một đơn vị nén, EHCC tổ chức dữ liệu theo cột và sau đó nén dữ liệu.

  • Chỉ mục bộ nhớ :Chỉ mục lưu trữ là cấu trúc trong bộ nhớ trên máy chủ lưu trữ được thiết kế để giảm thời gian đọc dữ liệu từ đĩa trên máy chủ lưu trữ.

  • Giảm tải ô :Không giống như thiết kế lưu trữ truyền thống, Exadata storagecell được thiết kế để xử lý một số khối lượng công việc nội bộ nhằm giảm gánh nặng tổng thể trên các nút máy tính hoặc cơ sở dữ liệu. Quá trình này được gọi là giảm tải ô.

  • Quét thông minh :Smart Scan cho phép hầu hết quá trình xử lý SQL diễn ra trong tầng lưu trữ thay vì tầng cơ sở dữ liệu, giúp cải thiện đáng kể hiệu suất truy vấn. Quét thông minh làm giảm khối lượng dữ liệu được gửi đến cơ sở dữ liệu, do đó giảm mức sử dụng CPU trên các nút cơ sở dữ liệu.

Xử lý SQL

Theo truyền thống, xử lý SQL chỉ xảy ra trên các máy chủ cơ sở dữ liệu. Trong Exadata, quá trình xử lý SQL được phân chia và cũng diễn ra trên tầng lưu trữ.

Xử lý SQL truyền thống

Các bước sau bao gồm xử lý SQL truyền thống, như được hiển thị trong sơ đồ sau:

Tính năng Quét thông minh Exadata của Oracle
  1. Khách hàng gửi một truy vấn.
  2. Hành động này sẽ kích hoạt quá trình quét toàn bộ bảng.
  3. Cơ sở dữ liệu ánh xạ yêu cầu tới tệp và các phạm vi tương ứng, bao gồm bảng đang được quét.
  4. Tương tự như quét toàn bộ, cơ sở dữ liệu đưa ra các hoạt động I / O để đọc tất cả các khối.
  5. Tất cả các khối được truy vấn của bảng đều được đọc vào bộ nhớ.
  6. Quá trình tìm kiếm các khối cho các hàng thỏa mãn vị từ.
  7. Cuối cùng, các hàng được yêu cầu được trả lại cho khách hàng.

Nếu đó là một bảng lớn, tất cả các khối từ bảng đó sẽ được đọc, chuyển qua mạng lưu trữ và được sao chép vào bộ nhớ. Quá trình đọc nhiều hàng không mong muốn được đọc vào bộ nhớ để hoàn thành thao tác SQL được yêu cầu. Khối lượng lớn dữ liệu được truyền sẽ tiêu tốn băng thông, ảnh hưởng đến thời gian phản hồi và tạo ra gánh nặng không cần thiết cho tầng cơ sở dữ liệu.

Xử lý SQL trên máy chủ Exadata

Với lưu trữ Exadata, quá trình xử lý SQL được xử lý hiệu quả hơn nhiều vì nó sử dụng phần mềm lưu trữ Exadata, phần mềm này có tích hợp logic cơ sở dữ liệu. Các bước tiếp theo bao gồm xử lý Exadata SQL, như được hiển thị trong sơ đồ sau:

Tính năng Quét thông minh Exadata của Oracle
  1. Khách hàng gửi một truy vấn.
  2. Máy chủ cơ sở dữ liệu xây dựng thông báo Cơ sở dữ liệu thông minh (iDB), bao gồm các tiêu chí truy vấn. Thông báo iDB này sẽ được gửi tới tất cả các máy chủ lưu trữ trong một giá đỡ.
  3. cellsrv thành phần của ESS quét các khối dữ liệu để xác định chúng khớp với các hàng và cột đáp ứng yêu cầu.
  4. Mọi máy chủ lưu trữ thực thi song song các tiêu chí truy vấn và chỉ gửi các hàng có liên quan hoặc kết quả ròng tới máy chủ cơ sở dữ liệu bằng cách sử dụnginterconnect.
  5. Cơ sở dữ liệu hợp nhất kết quả và trả về các hàng cho máy khách.

Yêu cầu về Quét thông minh

Sau đây là các yêu cầu để sử dụng Quét thông minh:

  • Bạn chỉ có thể sử dụng Quét thông minh để quét toàn bộ bảng hoặc quét toàn bộ chỉ mục.
  • Các truy vấn phải thực hiện đọc đường dẫn trực tiếp.
  • Bạn phải đặt tham số khởi tạo cơ sở dữ liệu CELL_OFFLOAD_PROCESSING thành TRUE .
  • Bạn phải lưu các phân đoạn trong các nhóm đĩa được lưu trữ hoàn toàn trên Exadatacells.
  • Các nhóm đĩa ASM lưu trữ dữ liệu phân đoạn phải có cài đặt thuộc tính sau:- compatible.rdbms =11.2.0.0.0 (hoặc mới hơn) - compatible.asm =11.2.0.0.0 (hoặc mới hơn) - cell.smart_scan_capable =TRUE

Ví dụ về Quét thông minh

Thực hiện các bước sau, trước tiên khi chưa bật Quét thông minh, đo lường hiệu ứng Quét thông minh trên số liệu thống kê.

Bước 1:Kết nối với cơ sở dữ liệu

Chạy lệnh sau để kết nối với cơ sở dữ liệu của bạn bằng SQL * Plus:

[oracle@nd01db01 ~]$ sqlplus nd/nd
SQL*Plus: Release 11.2.0.3.0 Production...

Bước 2:Xác minh số liệu thống kê

Chạy truy vấn sau để xác minh rằng thống kê bằng hoặc gần bằng 0:

SQL> select a.name, b.value/1024/1024 MB from v$sysstat a, v$mystat b
where a.statistic# = b.statistic# and (a.name in ('physical read total bytes',
'physical write total bytes', 'cell IO uncompressed bytes')
or a.name like 'cell phy%');

NAME	                                                           MB
--------------------------------------------------------------- ---
physical read total bytes	                                       0
physical write total bytes	                                    0
cell physical IO interconnect bytes	                           0
cell physical IO bytes saved during optimized file creation	   0
cell physical IO bytes saved during optimized RMAN file restore	0
cell physical IO bytes eligible for predicate offload	         0
cell physical IO bytes saved by storage index	                  0
cell physical IO bytes sent directly to DB node to balance CPU	0
cell physical IO interconnect bytes returned by smart scan	      0
cell IO uncompressed bytes	                                    0

10 rows selected.

Bước 3:Thực thi một truy vấn đã chọn với tính năng Quét thông minh bị tắt

Chạy truy vấn chọn sau với gợi ý trình tối ưu hóa để tắt Quét thông minh:

SQL> select /*+ OPT_PARAM('cell_offload_processing' 'false') */ count(*)
from sales where time_id between '01-JUN-2017' and '30-OCT-2017'
and amount_sold = 1;

COUNT(*)
----------
134055

Bước 4:Xác minh lại số liệu thống kê

Chạy lệnh sau để xác minh lại số liệu thống kê. Lưu ý rằng tất cả dữ liệu được xử lý bởi truy vấn ở bước 3 (tổng số byte đọc vật lý) được trả về máy chủ cơ sở dữ liệu qua mạng lưu trữ (byte kết nối IO vật lý ô).

SQL> select a.name, b.value/1024/1024 MB from v$sysstat a, v$mystat b
where a.statistic# = b.statistic# and (a.name in ('physical read total bytes',
'physical write total bytes', 'cell IO uncompressed bytes')
or a.name like 'cell phy%');

NAME	                                                           MB
--------------------------------------------------------------- -----------
physical read total bytes	                                       759.429688
physical write total bytes	                                    0
cell physical IO interconnect bytes	                           759.429688
cell physical IO bytes saved during optimized file creation	   0
cell physical IO bytes saved during optimized RMAN file restore	0
cell physical IO bytes eligible for predicate offload	         0
cell physical IO bytes saved by storage index	                  0
cell physical IO bytes sent directly to DB node to balance CPU	0
cell physical IO interconnect bytes returned by smart scan	      0
cell IO uncompressed bytes	                                    0

10 rows selected.

Bước 5:Đặt lại thống kê

Chạy lệnh sau để kết nối lại phiên với cơ sở dữ liệu để đặt lại thống kê cấp phiên:

[oracle@nd01db01 ~]$ sqlplus nd/nd
SQL*Plus: Release 11.2.0.3.0 Production...

Bước 6:Xác minh lại số liệu thống kê

Chạy truy vấn sau để xác minh rằng thống kê bằng hoặc gần bằng 0:

SQL> select a.name, b.value/1024/1024 MB from v$sysstat a, v$mystat b
where a.statistic# = b.statistic# and (a.name in ('physical read total bytes',
'physical write total bytes', 'cell IO uncompressed bytes')
or a.name like 'cell phy%');

NAME	                                                           MB
--------------------------------------------------------------- ---
physical read total bytes	                                       0
physical write total bytes	                                    0
cell physical IO interconnect bytes	                           0
cell physical IO bytes saved during optimized file creation	   0
cell physical IO bytes saved during optimized RMAN file restore	0
cell physical IO bytes eligible for predicate offload	         0
cell physical IO bytes saved by storage index	                  0
cell physical IO bytes sent directly to DB node to balance CPU	0
cell physical IO interconnect bytes returned by smart scan	      0
cell IO uncompressed bytes	                                    0

10 rows selected.

Bước 7:Thực thi một truy vấn đã chọn mà không tắt Smart Scan

Chạy truy vấn chọn sau mà không có gợi ý trình tối ưu hóa để tắt Quét thông minh:

SQL> select count(*) from sales where time_id between '01-JUN-2017'
and '30-OCT-2017'and amount_sold = 1;

COUNT(*)
-------
134055

Bước 8:Xác minh số liệu thống kê

Chạy truy vấn sau để xác minh số liệu thống kê. Lưu ý rằng truy vấn vẫn hoạt động khoảng 759 MB I / O (tổng số byte đọc vật lý) như trong bước 4, tuy nhiên, lần này chỉ 1,7 MB được trả về máy chủ DB (byte IOinterconnect vật lý của ô). Đây là kết quả của Quét thông minh đang hoạt động. Trong trường hợp này, Quét thông minh đang hoạt động trên I / O được liên kết với truy vấn này vì các byte vật lý của tế bào đủ điều kiện để giảm tải vị từ bằng tổng số byte đọc vật lý và các byte liên kết IO vật lý của tế bào được trả về bởi quét thông minh bằng với các byte liên kết IO vật lý của tế bào .

SQL> select a.name, b.value/1024/1024 mb from v$sysstat a, v$mystat b where a.statistic# = b.statistic# and (a.name in ('physical read total bytes', 'physical write total bytes','cell IO uncompressed bytes') or a.name like 'cell phy%');

NAME                                                             MB
----------------------------------------------------------------	----------
physical read total bytes	                                       759.429688
physical write total bytes	                                    0
cell physical IO interconnect bytes	                           1.71562805
cell physical IO bytes saved during optimized file creation	   0
cell physical IO bytes saved during optimized RMAN file restore	0
cell physical IO bytes eligible for predicate offload	         759.429688
cell physical IO bytes saved by storage index	                  0
cell physical IO bytes sent directly to DB node to balance CPU	0
cell physical IO interconnect bytes returned by smart scan	      1.71562805
cell IO uncompressed bytes	                                    759.429688

10 rows selected.

Kết luận

Tính năng Quét thông minh trong Exadata cho phép xử lý SQL diễn ra ở cấp lưu trữ, thay vì cấp cơ sở dữ liệu, để cải thiện hiệu suất truy vấn. SmartScan giảm khối lượng dữ liệu được gửi đến tầng cơ sở dữ liệu, do đó giảm mức sử dụngCPU trên các nút cơ sở dữ liệu.

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ìm hiểu thêm về các dịch vụ cơ sở dữ liệu của chúng tôi và các dịch vụ Ứng dụng Rackspace.