09/03/2022
1, Tổng quan các phương thức thực hiện điều chỉnh hiệu năng
Các phương pháp thực hiện điều chỉnh hiệu năng nhằm mục đích loại bỏ các điểm nghẽn, tăng hiệu suất thực thi trong database.
Việc database tuning được phân loại theo 2 dạng: proactively(chủ động) and reactively (thụ động)
Theo dạng proactively, bạn cần phải thực thi các nhiệm vụ giống như các công việc thực hiện hàng ngày như: đọc và phân tích so sách các báo cáo addm, awr, các event trong alertlog kiểm tra, real-time performance trong OEM ...
Đối với dạng reactively, bạn cần phản hồi, xử lý ngay các vấn đề đang tồn tại trên DB thông qua việc report từ users, hệ thống cảnh báo. Có thể hiệu năng hệ thống chỉ xảy ra trong 1 khoảng thời điểm ngắn
SQL Tuning là 1 quy trình lặp đi lặp là để xác định, tuning và nâng cao hiệu xuất xử lý của các câu lệnh cao tải
2, Các bước cần chuẩn bị trước khi thực hiện điều chỉnh hiệu năng
- Xác định mục tiêu, phạm vi thực hiện. Việc này sẽ thu hẹp được công việc cần thực hiện, có con số để đo đếm được.
Ví dụ: 1 job gần đây chạy rất ỳ ạch, trước đó tổng thời gian thực hiện chỉ 30p, hiện tại hệ thống phải chạy 120p mới xong. Mục tiêu rất rõ ràng, có thể đong đếm được ...
- Kiểm tra tất cả các khía cạnh có thể ảnh hưởng tới hiệu năng thực hiện của hệ thống. Nhiều khi trên DB hoạt động rất bình thường nhưng ở phía app hoặc client lại là những thành phần chính gây ra vấn đề về hiệu năng.
- Đảm bảo các tham số STATISTICS_LEVEL, CONTROL_MANAGEMENT_PACK_ACCESS cần được thiết lập chính xác để có thể collect được đẩy đủ các công tin.
3, Các phương thức thực hiện điều chỉnh hiệu năng
3.1 Tuning the Database Proactively
- Review the ADDM findings. Với mỗi ADDM finding, ADDM sẽ cung cấp 1 danh sách những khuyến cáo để có thể giải quyết được vấn đề về hiệu năng. Tuy nhiên cũng cần có sự xét kỹ lưỡng trước khi thực hiện.
- Sử dụng chức năng AWR Compare Periods report để so sánh hiệu năng của hệ thống tại các thời điểm khác nhau.
- Sử dụng Monitoring Real-Time Database Performance trong OEM. Trong OEM cho phép chúng ta thực hiện kiểm tra các vấn đề về hiệu năng 1 cách real time. Thông qua công cụ này có thể kiểm tra được các loại wait đang tồn lại, câu lệnh nào đang chiếm tải ..
- Xác nhận lại nhưng thay đổi đã mang lại hiệu quả như mong muốn hay chưa. Rất nhiều trường hợp tuning 1 câu lệnh chạy từ chậm -> nhanh, nhưng lại kéo theo các câu lệnh khác lại chạy chậm. Do đó cũng hết sức phải lưu ý vấn đề này. Ác Min cũng từng bị SML vài lần rồi nên cảnh giác lắm ^^
3.2 Tuning the Database reactively
- Run ADDM, AWR manually để phân tích hiệu năng từ khoảng thời điểm hiện tại tới thời điểm xảy ra vấn đề về hiệu năng được phản ánh bởi users.
- ASH report giúp chúng ta phân tích hiệu năng khi vấn đề xảy ra trong 1 thời điểm ngắn
- Khi vấn đề hiệu năng thay đổi theo thời gian có thể sử dụng AWR Compare Periods report để chuẩn đoán
- Xác nhận lại nhưng thay đổi đã mang lại hiệu quả như mong muốn hay chưa.
3.3 Tuning SQL Statements
- Xác định được các câu lệnh chiếm tải hệ thống thông qua ADDM findings, SQL Statistics (AWR)
- Tuning các câu lệnh cao tải bằng công cụ SQL Tuning Advisor. Đây là 1 công cụ hỗ trợ khá tốt, tuy nhiên cũng cần phải có chút kinh nghiệm để xử lý trong những case khó. Đặc biệt lưu ý các câu lệnh phức tạp khi đưa vào SQL Tuning Advisor chạy có thể mất nhiều thời gian và gây treo hệ thống.
- Tuning về access paths: xem việc sử dụng index đã hiệu quả hay chưa
- Kiểm tra xem có hay không việc các câu lệnh bị nhẩy plan từ tốt -> xấu
Performance tuning là việc không là làm 1 lần là dùng được mãi. Do đó việc hệ thống hôm qua chạy rất mượt, hôm nay rất tệ là việc hết sức bình thường.
P/s: Các bài sau có thể sẽ tập trung vào các topic nhỏ, có tính chất thực chiến hơn