Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Sự khác biệt giữa phép nối băm và phép nối hợp nhất (Oracle RDBMS) là gì?

Phép nối "hợp nhất sắp xếp" được thực hiện bằng cách sắp xếp hai tập dữ liệu được nối theo các khóa nối và sau đó hợp nhất chúng lại với nhau. Việc hợp nhất rất rẻ, nhưng việc sắp xếp có thể rất đắt, đặc biệt nếu việc sắp xếp tràn ra đĩa. Chi phí sắp xếp có thể được giảm xuống nếu một trong các tập dữ liệu có thể được truy cập theo thứ tự được sắp xếp thông qua chỉ mục, mặc dù việc truy cập tỷ lệ cao các khối của bảng thông qua quét chỉ mục cũng có thể rất đắt so với quét toàn bộ bảng. .

Phép nối băm được thực hiện bằng cách băm một tập dữ liệu vào bộ nhớ dựa trên các cột nối và đọc cột còn lại và thăm dò bảng băm để tìm các kết quả phù hợp. Tham gia băm có chi phí rất thấp khi bảng băm có thể được lưu giữ hoàn toàn trong bộ nhớ, với tổng chi phí lên đến rất ít so với chi phí đọc các tập dữ liệu. Chi phí tăng lên nếu bảng băm phải được đổ vào đĩa theo kiểu một lần và tăng lên đáng kể đối với kiểu đa vòng.

(Trước 10g, các phép nối bên ngoài từ một bảng lớn đến một bảng nhỏ có vấn đề về hiệu suất, vì trình tối ưu hóa không thể giải quyết nhu cầu truy cập bảng nhỏ hơn trước cho một phép nối băm, nhưng bảng lớn hơn trước cho một phép nối bên ngoài. Do đó, các phép nối băm không khả dụng trong trường hợp này).

Có thể giảm chi phí của một phép tham gia băm bằng cách phân vùng cả hai bảng trên (các) khóa tham gia. Điều này cho phép trình tối ưu hóa suy ra rằng các hàng từ một phân vùng trong một bảng sẽ chỉ tìm thấy kết quả phù hợp trong một phân vùng cụ thể của bảng khác và đối với các bảng có n phân vùng thì tham gia băm được thực thi như n tham gia băm độc lập. Điều này có các tác dụng sau:

  1. Kích thước của mỗi bảng băm được giảm xuống, do đó giảm dung lượng bộ nhớ tối đa cần thiết và có khả năng loại bỏ nhu cầu hoạt động đòi hỏi dung lượng đĩa tạm thời.
  2. Đối với các hoạt động truy vấn song song, lượng thông báo giữa các quá trình sẽ giảm đi đáng kể, giảm mức sử dụng CPU và cải thiện hiệu suất, vì mỗi phép nối băm có thể được thực hiện bởi một cặp quy trình PQ.
  3. Đối với các hoạt động truy vấn không song song, yêu cầu bộ nhớ được giảm đi một hệ số là n và các hàng đầu tiên được chiếu từ truy vấn trước đó.

Bạn nên lưu ý rằng các phép nối băm chỉ có thể được sử dụng cho các phép nối tương đương, nhưng các phép nối hợp nhất linh hoạt hơn.

Nói chung, nếu bạn đang kết hợp một lượng lớn dữ liệu trong một phép nối tương đương thì phép nối băm sẽ là một lựa chọn tốt hơn.

Chủ đề này được đề cập rất kỹ trong tài liệu.

http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/optimops.htm#i51523

Tài liệu 12.1:https://docs.oracle.com/database/121/TGSQL/tgsql_join.htm



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. làm thế nào để chọn các bản ghi chẵn từ một bảng trong oracle?

  2. Kiểm tra sid oracle và tên cơ sở dữ liệu

  3. Loại bỏ các bản sao bằng cách sử dụng hàm LISTAGG của Oracle

  4. Phương pháp thiết lập các tham số NLS và các ưu tiên của chúng (Cơ sở dữ liệu Oracle)

  5. Hàm JSON_OBJECTAGG () trong Oracle