Chúng tôi đang sử dụng chỉ mục CTXSYS.CONTEXT của Oracle Text để lập chỉ mục khoảng nửa triệu hàng chứa thông tin xác thực. Thông tin được trải rộng trên hai bảng được kết hợp bởi một thủ tục mà trình chỉ mục gọi khi chạy (chỉ mục chức năng).Tăng tốc độ lập chỉ mục văn bản Oracle hoặc để chỉ mục hoạt động chỉ khi thời gian tải thấp
Khi tôi chạy CREATE INDEX trên máy cục bộ của mình (sổ ghi chép hai lõi đơn giản), chỉ mục được tạo trong khoảng 3 phút. Trên máy chủ DB chạy trên Solaris với 8 lõi và 16G RAM, phải mất 24 giờ để tạo chỉ mục cho cùng một dữ liệu (chính xác). đang
mẫu: Đây là nạp chỉ mục của mình cho hai bảng và 3 cột:
create or replace procedure docmeta_revisions_text_feeder
(p_rowid in rowid , p_clob in out nocopy clob) as v_clob CLOB begin
FOR c1 IN (select DM.DID, DM.XDESCRIB || ' ' || DM.XAUTHOR AS data
from DOCMETA DM
WHERE ROWID = p_rowid)
LOOP
v_clob := v_clob || c1.data;
FOR c2 IN (
SELECT ' ' || RV.DDOCTITLE AS data
FROM REVISIONS RV
WHERE RV.DID = c1.DID)
LOOP
v_clob := v_clob || c2.data;
END LOOP;
END LOOP;
p_clob := v_clob;
end docmeta_revisions_text_feeder
Đây là những ưu đãi về
BEGIN
CTX_DDL.CREATE_PREFERENCE ('concat_DM_RV_DS', 'USER_DATASTORE');
CTX_DDL.SET_ATTRIBUTE ('concat_DM_RV_DS', 'PROCEDURE',
'docmeta_revisions_text_feeder');
END;
Bây giờ chúng ta tạo ra chỉ số
CREATE INDEX concat_DM_RV_idx ON DOCMETA (FULLTEXTIDX_DUMMY)
INDEXTYPE IS CTXSYS.CONTEXT
PARAMETERS ('datastore concat_DM_RV_DS
section group CTXSYS.AUTO_SECTION_GROUP
') PARALLEL 4;
Dữ liệu chủ yếu bao gồm tiêu đề đơn giản hoặc tên tác giả + mô tả ngắn với văn bản1k.
Tôi đã cố gắng phát một chút với các cài đặt bộ nhớ liên quan và tham số PARALLEL nhưng không thành công. Vì vậy, đây là câu hỏi của tôi:
- có cách nào để tạm dừng và tiếp tục quy trình lập chỉ mục (tôi có vai trò CTX_SYS trong tầm tay) không?
- có ai gợi ý tham số nào có thể được tinh chỉnh (đặc biệt là kích thước bộ nhớ)?
- có thể xuất và nhập chỉ mục văn bản không? -> sau đó tôi có thể thực hiện lập chỉ mục trên máy cục bộ của mình và chỉ cần sao chép vào máy chủ của chúng tôi
- trình lập chỉ mục có thể chạy với "mức độ ưu tiên thấp hơn" không?
- có thể là người lập chỉ mục đã bị quấy rầy bởi các hoạt động khóa (đó là một máy phân tầng mà quyền truy cập của người khác song song). Có cách nào để khóa các bảng liên quan, tạo chỉ mục và mở khóa chúng sau đó không?
Cảm ơn bạn đã nghiên cứu. – egor7
Đăng ký tuyệt vời, đã cho tôi nhiều tuần để tìm ra càng nhiều. Tuy nhiên, populate_pending POPULATES danh sách các cập nhật chỉ mục PENDING với TẤT CẢ hàng/tài liệu trong bảng nguồn. Oracle không có ý tưởng những gì có thể đã thay đổi, sau khi tất cả, theo dõi những gì đã thay đổi là chính xác những gì CTXSYS.DR $ PENDING là cho. Chỉ sử dụng điều này khi tạo chỉ mục hoặc nếu bạn muốn lập chỉ mục lại mọi thứ. – Roy