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

12c Kế hoạch thích ứng trong nhà phát triển SQL

Tôi đang làm việc để điều chỉnh một số câu lệnh SQL trong cơ sở dữ liệu mới được nâng cấp, từ Oracle 11.2.0.4 lên 12.1.0.2. Như tôi thường làm, tôi thích sử dụng SQL Developer để xem Kế hoạch giải thích. Tôi rất ngạc nhiên khi thấy một số văn bản màu xám trong đầu ra Giải thích kế hoạch mà bạn có thể thấy bên dưới.

Phản ứng đầu tiên của tôi là bối rối và tự hỏi tại sao Oracle có cả tham gia Hash Join và tham gia lồng ghép các vòng lặp để tham gia hai bảng. Sau đó trong kế hoạch, tôi thấy một CHỈ SỐ (QUÉT ĐẦY ĐỦ NHANH) của cùng một bảng đã thực hiện CHỈ SỐ (QUÉT RANGE). Tại sao hai quyền truy cập của cùng một bảng? Oracle 12c đang làm gì?

Tất cả những điều này là một phần của Tối ưu hóa truy vấn thích ứng mới của Trình tối ưu hóa 12c. Đối với câu lệnh SQL này, Trình tối ưu hóa đã xác định sử dụng một kế hoạch ban đầu liên quan đến phép nối Vòng lặp lồng nhau. Đối với kế hoạch liên quan đến tham gia Vòng lặp lồng nhau, Oracle sẽ truy cập bảng bằng Quét phạm vi chỉ mục. Trình tối ưu hóa cũng đã quyết định rằng Quét nhanh đầy đủ lập chỉ mục thành một kết hợp băm có thể là một kế hoạch thực thi khác cần xem xét. Trước khi bắt đầu thực thi câu lệnh SQL, Trình tối ưu hóa có hai kế hoạch. Một gói là mặc định kế hoạch và kế hoạch khác là kế hoạch thích ứng kế hoạch. Oracle sẽ theo dõi việc thực thi câu lệnh SQL khi nó bắt đầu thực thi với kế hoạch mặc định. Nếu Oracle xác định đây là kế hoạch thực thi sai, nó có thể chuyển sang kế hoạch thích ứng ngay lập tức.

Để biết thêm thông tin về các Kế hoạch Thích ứng, hãy xem sách trắng này của Oracle. Trang 3-5 minh họa các Kế hoạch Tham gia Thích ứng đang hoạt động.

Văn bản màu xám trong Kế hoạch giải thích ở trên chỉ đơn giản là kế hoạch thích ứng. SQL Developer 4.1 hiển thị cả gói mặc định và gói thích ứng.

Phần tiếp theo trong Kế hoạch Giải thích là phần XML Khác, có thể được nhìn thấy bên dưới. Chúng ta có thể thấy phiên bản db của tôi là 12.1.0.2. Chúng tôi cũng có thể loại thông tin cho thấy đây là một Kế hoạch thích ứng.

Lưu ý phần có tiêu đề “hàng”. Chúng ta có thể thấy từng hàng của Kế hoạch Giải thích. Những dòng trong đó “skp =0” là một phần của kế hoạch mặc định. Các dòng trong đó “skp =1” là kế hoạch thích ứng, mà chúng ta biết bây giờ xuất hiện dưới dạng văn bản màu xám trong Nhà phát triển SQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xử lý ExecuteScalar () khi không có kết quả nào được trả về

  2. Lấy các bản vá cơ sở dữ liệu

  3. Hàm INITCAP () trong Oracle

  4. So sánh với ngày tháng trong Oracle sql

  5. Hiểu về Java của Oracle trên Mac