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

Cách tính hệ số phân cụm chỉ số Oracle

Mục lục

Yếu tố phân cụm chỉ mục Oracle (CF) là gì?

Yếu tố phân cụm là một số thể hiện mức độ dữ liệu được phân phối ngẫu nhiên trong bảng so với cột được lập chỉ mục. Nói một cách dễ hiểu, đó là số lượng “công tắc khối” trong khi đọc bảng bằng chỉ mục.

Đây là một thống kê quan trọng đóng vai trò quan trọng trong tính toán của trình tối ưu hóa. Nó được sử dụng để tính toán trọng số cho các lần quét phạm vi chỉ mục. Khi hệ số phân cụm cao hơn, chi phí quét phạm vi chỉ mục sẽ cao hơn

Hệ số phân cụm tốt bằng (hoặc gần) với các giá trị của số khối của bảng.

Yếu tố phân cụm không hợp lệ bằng (hoặc gần) với số hàng của bảng.

CF được tính như thế nào?

Oracle tính toán hệ số phân cụm bằng cách quét toàn bộ chỉ mục đi các khối lá từ đầu đến cuối. Đối với mỗi mục nhập trong mỗi lá, Oracle kiểm tra số tệp tuyệt đối và id khối, như thu được từ ROWID của giá trị được lập chỉ mục. Nó giữ số lượng đang chạy có bao nhiêu khối "khác nhau" chứa các hàng dữ liệu được chỉ mục trỏ đến. Địa chỉ khối từ mục nhập đầu tiên được so sánh với địa chỉ khối từ mục nhập thứ hai. Nếu đó là cùng một khối bảng, Oracle không tăng bộ đếm. Nếu các khối bảng khác nhau, Oracle sẽ thêm một khối vào số đếm. Quá trình đếm này tiếp tục từ mục nhập này sang mục nhập khác, luôn so sánh mục nhập trước đó với mục nhập hiện tại.

Trên đây là một ví dụ CF tốt vì CF bằng số khối

Ví dụ về yếu tố phân cụm không hợp lệ

Ở đây hệ số phân cụm bằng không có hàng nào

Phương pháp đếm này có kết quả bất ngờ của riêng nó. Giả sử dữ liệu tình cờ được điền trên một tập hợp các khối nhỏ, nhưng không theo thứ tự tham chiếu đến khóa chỉ mục, thì một tập hợp các hàng có thể nằm trên một tập hợp lớn các khối khi có thể chỉ có một vài khối riêng biệt thực sự . Vì vậy, CF sẽ cao hơn nhưng trên thực tế, nó chạm rất ít khối. Vấn đề này có thể được giảm thiểu trong 12c bằng cách sử dụng tùy chọn bảng và chỉ định khối được lưu trong bộ nhớ cache theo thẻ.

cách cải thiện yếu tố phân cụm trong oracle

Việc xây dựng lại chỉ mục sẽ không có bất kỳ ảnh hưởng nào đến yếu tố phân cụm. Bảng cần được sắp xếp và xây dựng lại để giảm yếu tố phân nhóm.

Truy vấn để xác định yếu tố phân nhóm

CF được lưu trữ trong từ điển dữ liệu và có thể được xem từ dba_indexes (hoặc user_indexes).

Trên thực tế, tất cả các thống kê chỉ mục có thể được tìm thấy ở đó

SELECT index_name, index_type, uniqueness, blevel, leaf_blocks, distinct_keys, avg_leaf_blocks_per_key,
avg_data_blocks_per_key, clustering_factor, num_rows, sample_size, last_analyzed, partitioned
FROM dba_indexes
WHERE table_name = 'ORDERS' ;

Yếu tố phân nhóm chỉ mục Oracle tác động như thế nào đến kế hoạch trình tối ưu hóa?

Yếu tố phân nhóm là thống kê chính mà trình tối ưu hóa sử dụng để cân nhắc các đường dẫn truy cập chỉ mục. Đây là ước tính số lượng LIO cho các khối bảng cần thiết để có được tất cả các hàng đáp ứng truy vấn theo thứ tự. Yếu tố phân nhóm càng cao, thì càng nhiều LIO mà trình tối ưu hóa ước tính sẽ được yêu cầu. Càng nhiều LIO càng được yêu cầu, càng kém hấp dẫn và do đó, việc sử dụng chỉ mục sẽ tốn kém hơn.

Bài viết có liên quan
Chỉ mục phân vùng Oracle:Tìm hiểu chỉ mục phân vùng Oracle, Chỉ mục không phân vùng toàn cầu là gì ?, Chỉ mục cục bộ có tiền tố là gì, chỉ mục cục bộ không có tiền tố
tìm chỉ mục trên bảng trong oracle:hãy xem bài viết này để tìm các truy vấn về cách để tìm chỉ mục trên bảng trong oracle, liệt kê tất cả các chỉ mục trong lược đồ, trạng thái chỉ mục, cột chỉ mục
các loại chỉ mục trong oracle:Trang này bao gồm thông tin về chỉ mục oracle, các loại chỉ mục khác nhau trong oracle kèm theo một ví dụ, cách để tạo / thả / thay đổi chỉ mục trong oracle
Chỉ mục ảo trong Oracle:Chỉ mục ảo trong Oracle là gì? Công dụng, hạn chế, ưu điểm và cách sử dụng để kiểm tra kế hoạch giải thích trong cơ sở dữ liệu Oracle, Tham số ẩn _USE_NOSEGMENT_INDEXES


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thiết lập OTA trong R12 và 11i

  2. Tháng 7 năm 2016 PSU không tạo được isqora

  3. Sử dụng Oracle SQL, làm thế nào để xuất số ngày trong tuần và ngày trong tuần?

  4. LISTAGG với ORDER BY NULL thực sự sử dụng điều gì làm tiêu chí đặt hàng?

  5. Truy vấn tên cột từ một bảng từ người dùng khác