2010-02-01 45 views
15

Tôi đang cố gắng kiểm tra tiện ích của bảng tóm tắt mới cho dữ liệu của mình.Làm thế nào để vô hiệu hóa bộ nhớ cache oracle cho các bài kiểm tra hiệu suất

Vì vậy, tôi đã tạo hai thủ tục để tìm nạp dữ liệu của một khoảng thời gian nhất định, mỗi lần sử dụng một nguồn bảng khác nhau. Vì vậy, trên ứng dụng giao diện điều khiển C# của tôi, tôi chỉ gọi một hoặc khác. Vấn đề bắt đầu khi tôi muốn lặp lại điều này nhiều lần để có một thời gian phản ứng tốt.

tôi có một cái gì đó như thế này: 1199,84,81,81,81,81,82,80,80,81,81,80,81,91,80,80,81,80

lẽ Oracle 10g của tôi đang tạo bộ nhớ đệm không phù hợp.

Tôi có thể giải quyết vấn đề này bằng cách nào?

Trả lời

9

EDIT: Xem thread on asktom này, trong đó mô tả cáchtại sao không để làm điều này.

Nếu bạn đang ở trong một môi trường kiểm tra, bạn có thể đặt tablespace ngoại tuyến và trực tuyến một lần nữa:

ALTER TABLESPACE <tablespace_name> OFFLINE; 
ALTER TABLESPACE <tablespace_name> ONLINE; 

Hoặc bạn có thể thử

ALTER SYSTEM FLUSH BUFFER_CACHE; 

nhưng một lần nữa chỉ trên môi trường thử nghiệm.

Khi bạn kiểm tra trên hệ thống "thực" của mình, thời gian bạn nhận được sau lần gọi đầu tiên (những người sử dụng dữ liệu được lưu vào bộ nhớ cache) có thể thú vị hơn vì bạn sẽ có dữ liệu được lưu trong bộ nhớ cache. Gọi thủ tục hai lần, và chỉ xem xét kết quả hiệu suất mà bạn nhận được trong các lần thực hiện tiếp theo.

+0

xả trước cuộc gọi tôi nhận được một số kết quả thú vị như: 1370,354,391,375,352,511,390,375,326,335,435,334,334,328,337,314,417,377,384,367,393. Tôi sẽ nghiên cứu thêm về nó vào ngày mai và tôi sẽ nói kết quả của mình. Cảm ơn! – Custodio

+2

Xin chào @Peter Lang, các bảng của tôi nằm ở vùng bảng hệ thống, vì vậy tôi không thể đặt ngoại tuyến. Tuy nhiên tôi không hiểu tại sao tôi nên làm điều này? Bạn có thể giải thích hoặc đề xuất một bài giảng hay không? Cảm ơn. – Custodio

6

Có lẽ Oracle 10g của tôi đang tạo một bộ nhớ đệm không phù hợp .

Thực ra có vẻ như Oracle đang thực hiện một số bộ đệm ẩn hoàn toàn thích hợp. Nếu những bảng này sẽ được sử dụng rất nhiều sau đó bạn sẽ hy vọng sẽ có chúng trong bộ nhớ cache hầu hết thời gian.

chỉnh sửa

Trong một bình luận về phản ứng của Peter Luis nói

đỏ bừng trước khi cuộc gọi Tôi có một số kết quả thú vị như: 1370.354.391.375.352.511.390.375.326.335.435.334.334.328.337.314.417.377.384.367.393.

Những phát hiện này là "thú vị" vì lệnh xả nghĩa là cuộc gọi mất nhiều thời gian hơn khi các hàng nằm trong bộ nhớ cache DB nhưng không miễn là cuộc gọi đầu tiên. Điều này gần như chắc chắn vì máy chủ đã lưu trữ các bản ghi vật lý trong bộ nhớ cache vật lý của nó. Cách duy nhất để tránh điều đó, để chạy đúng với bộ nhớ cache trống là để khởi động lại máy chủ trước mỗi lần kiểm tra.

Hoặc học cách điều chỉnh truy vấn đúng cách. Sự hiểu biết how the database works là một khởi đầu tốt. Và EXPLAIN PLAN là một trợ giúp điều chỉnh tốt hơn so với đồng hồ treo tường.Find out more.

+0

+1: Đoán tôi không rõ ràng về điều đó trong bài viết của tôi :) –

+0

Ok, tôi hiểu tầm quan trọng của bộ nhớ đệm trong tình huống này, nhưng trong trường hợp của tôi, các bảng sẽ không được xếp hàng với cùng một khoảng thời gian. Tôi chỉ muốn xem thời gian phản hồi mà không có bộ nhớ cache, sử dụng bảng tóm tắt của tôi hay không. Tuy nhiên, cảm ơn tôi đánh giá cao. +1 – Custodio

+0

Tôi đã đọc bản chỉnh sửa của bạn, đây là vấn đề. Bạn có một số gợi ý của một giải pháp so sánh tốt hơn giữa thủ tục của tôi sử dụng bảng bình thường và một khác mà sử dụng bảng tóm tắt? – Custodio

Các vấn đề liên quan