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

Thực hành tốt để sử dụng chỉ mục ngược trên các khóa thay thế? (Oracle)

Nói chung, nếu bạn không sử dụng RAC, sẽ không có lý do gì để sử dụng chỉ mục khóa ngược.

Từ quan điểm hiệu suất, bạn tốt hơn nhiều nên có một hoặc hai khối nóng tại bất kỳ thời điểm nào có thể chèn vào vì điều đó về cơ bản đảm bảo rằng các khối nóng sẽ nằm trong bộ đệm ẩn và INSERT sẽ không phải chịu chi phí đọc khối từ đĩa. Nếu bạn có các lần chèn vào các khối ngẫu nhiên trong một chỉ mục, thì có nhiều khả năng khối bạn muốn đã bị xóa khỏi bộ nhớ cache và sẽ phải chịu chi phí của một I / O vật lý.

Chi phí để giữ một chỉ số cân bằng là khá nhỏ nhưng thậm chí điều đó còn ủng hộ một chỉ số tiêu chuẩn. Nếu bạn có khóa chính được tạo theo trình tự với chỉ mục bình thường, Oracle sẽ thực hiện Phân chia khối 90/10 trên khối ngoài cùng bên phải khi khối đó lấp đầy. Ngược lại, nếu bạn có chỉ mục khóa đảo ngược, Oracle phải thực hiện Tách khối 50/50 bất cứ khi nào một khối nhất định lấp đầy. Phần tách khối 50/50 sao chép một nửa dữ liệu từ khối cũ sang khối mới, phần tách khối 90/10 chỉ sao chép giá trị dữ liệu ngoài cùng bên phải sang khối mới. Do đó, phân chia khối 90/10 rẻ hơn nhiều so với chia tách khối 50/50 và bạn cần thực hiện gần như cùng một số lượng phân chia khối bất kể loại chỉ mục bạn chọn. Vì vậy, chi phí duy trì một chỉ mục thường xuyên sẽ ít hơn chi phí duy trì một chỉ mục khóa ngược ngay cả khi bỏ qua ảnh hưởng của bộ nhớ cache.

Lý do bạn cân nhắc sử dụng chỉ mục khóa đảo ngược là bạn đang sử dụng RAC và bạn muốn tránh chi phí có nhiều nút RAC cùng chiến đấu trên cùng một khối nóng. Nếu bạn liên tục phải chuyển khối nóng từ nút này sang nút khác để thực hiện lần chèn tiếp theo, có thể nên sử dụng chỉ mục khóa ngược để giảm bớt sự tranh cãi đó. Nếu bạn đã cấp phép cho tùy chọn phân vùng, tốt hơn là bạn nên sử dụng chỉ mục phân vùng băm để thay thế (điều này có thể được thực hiện cho dù các bảng có được phân vùng hay không). Nếu bạn chưa cấp phép tùy chọn phân vùng, chỉ mục khóa ngược có thể đủ tốt để giải quyết tranh chấp trên khối nóng để không yêu cầu bạn cấp phép phân vùng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle - Materialized View thay đổi cấu trúc quá chậm

  2. So sánh hai lược đồ và cập nhật lược đồ cũ với các cột mới của lược đồ mới

  3. Cách giải quyết ORA-00939:quá nhiều đối số cho lỗi hàm?

  4. Hợp nhất CTE Oracle

  5. Cách tìm số lượng và tên của các ký tự riêng biệt trong chuỗi trong PL / SQL