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

Chỉ mục phân vùng Oracle

Ở bài trước, chúng ta đã tìm hiểu về bảng phân vùng Oracle. Trong phần tiếp theo của loạt bài đó, ở đây tôi sẽ trình bày chỉ mục phân vùng Oracle

Dưới đây là một số thông tin về Hiểu các Chỉ mục được Phân vùng

Chỉ mục phân vùng cục bộ

  • Chỉ mục cục bộ trên bảng được phân vùng được tạo trong đó chỉ mục được phân vùng theo cách chính xác như bảng được phân vùng bên dưới. Tức là, chỉ mục cục bộ kế thừa phương pháp phân vùng của bảng. Đây được gọi là phân vùng tương đương.
  • Đối với các chỉ mục cục bộ, các khóa chỉ mục trong chỉ mục sẽ chỉ tham chiếu đến các hàng được lưu trữ trong một phân vùng bảng bên dưới. Chỉ mục cục bộ được tạo bằng cách chỉ định thuộc tính LOCAL và có thể được tạo dưới dạng DUY NHẤT hoặc KHÔNG DUY NHẤT.
  • Bảng và chỉ mục cục bộ được phân vùng theo cách chính xác hoặc có cùng khóa phân vùng vì các chỉ mục cục bộ được duy trì tự động, có thể cung cấp tính khả dụng cao hơn.
  • Do cơ sở dữ liệu Oracle đảm bảo rằng các phân vùng chỉ mục được đồng bộ hóa với các phân vùng bảng tương ứng của chúng, nên cơ sở dữ liệu sẽ tự động duy trì phân vùng chỉ mục bất cứ khi nào thực hiện bất kỳ thao tác bảo trì nào trên các bảng bên dưới
  • ví dụ:khi các phân vùng được thêm, bớt hoặc hợp nhất.
  • Chỉ mục cục bộ được đặt trước nếu khoá phân vùng của bảng và khoá chỉ mục giống nhau; nếu không thì nó là một chỉ mục cục bộ không có tiền tố
SQL> CREATE TABLE EXP_PART (id number, item_id number, name varchar2(20))
  PARTITION BY RANGE (id, item_id)
  (partition EXP_PART_1 values less than (10, 100),
  partition EXP_PART_2 values less than (20, 200),
  partition EXP_PART_3 values less than (30, 300),
  partition EXP_PART_4 values less than (40, 400));
 Table created.

 SQL> CREATE INDEX test_idx ON EXP_PART(id, item_id)
  LOCAL
  (partition test_idx_1,
  partition test_idx_2,
  partition test_idx_3,
  partition test_idx_4);
 Index created.

SQL> SELECT index_name, partition_name, status
  FROM user_ind_partitions where index_name='TEST_IDX'
  ORDER BY index_name, partition_name;
 INDEX_NAME PARTITION_NAME STATUS
 ---------   -----------    ------
 TEST_IDX IX_TEST_IDX_1 USABLE
 TEST_IDX IX_TEST_IDX_2 USABLE
 TEST_IDX IX_TEST_IDX_3 USABLE
 TEST_IDX IX_TEST_IDX_4 USABLE

Chỉ mục được phân vùng toàn cầu

  • Chỉ mục được phân vùng toàn cục là một chỉ mục trên bảng được phân vùng hoặc không được phân vùng được phân vùng độc lập, tức là sử dụng khoá phân vùng khác với bảng. Các chỉ mục được phân vùng toàn cục có thể được phân vùng theo phạm vi hoặc phân vùng theo hàm băm. Các chỉ mục được phân vùng toàn cục khó duy trì hơn các chỉ mục cục bộ. Tuy nhiên, họ cung cấp một phương pháp truy cập hiệu quả hơn vào bất kỳ bản ghi cá nhân nào.
  • Trong quá trình tương tác với bảng hoặc chỉ mục trong quá trình bảo trì phân vùng, tất cả các phân vùng trong chỉ mục chung sẽ bị ảnh hưởng.
  • Khi phân vùng bảng bên dưới có bất kỳ hoạt động bảo trì SPLIT, MOVE, DROP hoặc TRUNCATE nào được thực hiện trên nó, cả chỉ mục chung và chỉ mục được phân vùng toàn cục sẽ được đánh dấu là không sử dụng được. Do đó, nó không thể độc lập với phân vùng đối với các chỉ mục chung.
  • Tùy thuộc vào loại thao tác được thực hiện trên phân vùng bảng, các chỉ mục trên bảng sẽ bị ảnh hưởng. Khi thay đổi phân vùng bảng, mệnh đề UPDATE INDEXES có thể được chỉ định. Điều này tự động duy trì các chỉ mục và phân vùng toàn cầu bị ảnh hưởng.
  • Ưu điểm của việc sử dụng tùy chọn này là chỉ mục sẽ vẫn trực tuyến và khả dụng trong suốt quá trình hoạt động và không phải tạo lại sau khi hoạt động hoàn tất.
SQL> CREATE TABLE EXP_PART (id number, item_id number, name varchar2(20))
  PARTITION BY RANGE (id, item_id)
  (partition EXP_PART_1 values less than (10, 100),
  partition EXP_PART_2 values less than (20, 200),
  partition EXP_PART_3 values less than (30, 300),
  partition EXP_PART_4 values less than (40, 400));
 Table created.

 SQL> CREATE UNIQUE INDEX EXP_PART_IDX ON EXP_PART(id, item_id)
  GLOBAL PARTITION BY RANGE (id, item_id)
  (partition EXP_PART_IDX_1 values less than (20, 200),
   partition EXP_PART_IDX_2 values less than (maxvalue, maxvalue));
 Index created.

SQL> SELECT index_name, partition_name, status
  FROM user_ind_partitions where index_name='EXP_PART_IDX'
  ORDER BY index_name, partition_name;
 INDEX_NAME PARTITION_NAME STATUS
 
 EXP_PART_IDX EXP_PART_IDX_1 USABLE
 EXP_PART_IDX EXP_PART_IDX_2 USABLE

Chỉ mục toàn cầu không phân vùng

  • Các chỉ mục toàn cục không được phân vùng cung cấp cùng một quyền truy cập hiệu quả vào bất kỳ bản ghi riêng lẻ nào trong bất kỳ phân vùng nào và hoạt động giống như một chỉ mục không được phân vùng. Vì cấu trúc chỉ mục không được phân vùng, nên chỉ mục có sẵn cho tất cả các phân vùng.
  • Một tình huống mà loại chỉ mục này sẽ hữu ích là với một truy vấn không bao gồm khóa phân vùng của bảng dưới dạng bộ lọc, nhưng bạn vẫn muốn trình tối ưu hóa oracle sử dụng một chỉ mục

Câu hỏi thường gặp

Chỉ mục có tiền tố và không có tiền tố là gì?

Chỉ mục được gọi là có tiền tố nếu (các) cột đứng đầu trong định nghĩa chỉ mục là (các) cột khóa phân vùng, nếu không nó được gọi là không có tiền tố.

Chúng tôi có thể phân vùng phụ chỉ mục chung không?

Không, bạn không thể phân vùng phụ chỉ mục chung, nhưng bạn có thể phân vùng nó. Cách duy nhất để kết thúc với phân vùng con chỉ mục là có một bảng được phân vùng con với chỉ mục cục bộ

Cách Tìm Chỉ mục là Toàn cầu hay Cục bộ

Bằng cách truy vấn cột, ĐỊA PHƯƠNG, trong DBA_PART_INDEXES.

Cũng đã đọc

  • Hướng dẫn Quản trị Cơ sở dữ liệu Oracle
  • https://docs.oracle.com/en/database/oracle/oracle-database/18/vldbg/index-partitioning.html#GUID-569F94D0-E6E5-45BB-9626-5506DE18FF00
  • thay đổi định dạng ngày trong tiên tri


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn EF tới Oracle ném ORA-12704:bộ ký tự không khớp

  2. Các truy vấn hàng đầu về khóa chính trong Oracle với các ví dụ

  3. Oracle ORA-12154:TNS:Không thể giải quyết lỗi tên dịch vụ?

  4. Thay đổi giao diện Oracle

  5. Oracle PL / SQL:Xuất dữ liệu từ một bảng sang CSV