Quy trình IMCO (Điều phối viên bộ nhớ) đánh thức hai phút một lần và kiểm tra xem có cần hoàn thành bất kỳ nhiệm vụ dân số nào không. Vì vậy, truy vấn một bảng ngay sau khi bật nó cho inmemory không đảm bảo rằng truy vấn sẽ được phân phát từ inmemory.
Các đối tượng được đưa vào kho lưu trữ cột IM trong danh sách ưu tiên ngay sau khi cơ sở dữ liệu được mở hoặc sau khi các bảng được quét (truy vấn) lần đầu tiên.
Ví dụ:nếu chúng tôi bật bảng tab1, tab2, tab3 cho inmemory:
alter table tab1 inmemory priority medium;
alter table tab3 inmemory priority high;
alter table tab2 inmemory priority critical;
Các bảng này được đưa vào bộ nhớ khi:
- Quy trình IMCO chọn các bảng này và tải chúng vào khu vực bộ nhớ (theo thứ tự ưu tiên từ cao nhất đến thấp nhất:tab2, tab3 và tab1)
- Nếu chúng tôi thực hiện truy vấn chọn trên bất kỳ bảng nào (ví dụ:
select * from tab1
) trước khi quy trình IMCO bắt đầu (sau mỗi 2 phút)
Để biết liệu một bảng / phân vùng có được tải hoàn toàn vào bộ nhớ hay không, bạn có thể truy vấn v$im_segments
xem như sau:
select owner, segment_name, partition_name, segment_type, bytes,
bytes_not_populated, populate_status from v$im_segments;
Vì vậy, để trả lời câu hỏi của bạn:
- Đảm bảo bảng được tải vào inmemory bằng cách truy vấn
v$im_segments
- Nếu bảng không được tải, hãy thực hiện truy vấn chọn trên đó để tải bảng vào khu vực bộ nhớ
- Nhận kế hoạch truy vấn cho truy vấn đã chọn trên bảng, nó sẽ hiển thị INMEMORY như một phần của kế hoạch
Kiểm tra báo cáo chính thức này để biết thêm chi tiết.