Trong Chương 3 của Điều chỉnh Hiệu suất Oracle RAC, tôi đã chỉ ra cách các giá trị CACHE không phù hợp cho các chuỗi có thể gây ra hiệu suất kém trong Oracle RAC. Tôi cũng đã chỉ ra cách phát hiện sự tranh chấp về trình tự khi xem xét các sự kiện chờ của một phiên.
Hôm nay, tôi đã làm việc với một nhà phát triển đang tạo một chuỗi mới. Nhà phát triển có giá trị CACHE là 100, điều này khiến tôi ban đầu nghĩ rằng giá trị này quá thấp. Tôi phát hiện cài đặt thấp này trong quá trình xem xét mã. Nhà phát triển cho rằng giá trị CACHE là ổn nhưng tôi không bị thuyết phục. Chúng tôi sẽ kiểm tra điều này khi tải để xem liệu giá trị CACHE có cần được điều chỉnh hay không.
Trong khi chờ đợi, tôi đã nghĩ "điều gì sẽ xảy ra nếu tôi bỏ lỡ điều này trong quá trình xem xét mã?" Và một câu hỏi tiếp theo, "điều gì sẽ xảy ra nếu chúng tôi không nhận thấy bất kỳ điều gì trong quá trình thử nghiệm tải?" Tôi muốn có thể quay lại và xác định trình tự nào, nếu có, sẽ là ứng cử viên cho việc có cài đặt CACHE không phù hợp. Tôi chắc chắn có thể theo dõi các phiên và phân tích các tệp theo dõi, nhưng điều đó sẽ quá đau đớn. Vì vậy, tôi đã nghĩ ra một tập lệnh mà tôi có thể chạy dựa trên Lịch sử phiên hoạt động để giúp xác định trình tự ứng viên.
select sh.sql_id,to_char(st.sql_text),count(*) from dba_hist_active_sess_history sh join dba_hist_sqltext st on sh.sql_id=st.sql_id where st.sql_text like '%NEXTVAL%' and (event='row cache lock' or event like 'gc current block %-way') group by sh.sql_id,to_char(st.sql_text) order by count(*) desc;
Đây không phải là một khoa học hoàn hảo do bản chất của bộ sưu tập ASH. Phiên gặp phải tranh chấp sẽ cần phải được nắm bắt vào đúng thời điểm để có trong bảng DBA_HIST_ACTIVE_SESSION_HISTORY. Nhưng câu lệnh SQL ở trên cung cấp cho tôi một số ứng cử viên để xem xét. Không phải mọi chuỗi được truy cập trong các câu lệnh SQL được trả về đều cần phải điều chỉnh các giá trị CACHE của chúng. Phân tích sâu hơn sẽ là cần thiết. Tuy nhiên, điều này cho tôi một danh sách những thứ cần xem xét. Và nó có thể giúp trả lời những câu hỏi ban đầu của tôi. Nếu tôi bỏ lỡ quá trình tạo trình tự trong quá trình xem xét mã, tôi hy vọng có thể tìm thấy nó sau này nếu trình tự là vấn đề đối với hiệu suất ứng dụng.