DBA Expert

DBA Expert DBA Expert cung cấp các giải pháp triển khai, vận hành, tối ưu, đào tạo cơ sở dữ liệu

New option
14/12/2023

New option

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

09/03/2022

Những vấn đề phổ biến trong quá trình Performance Tuning

- CPU bottlenecks (Nghẽn CPU): Vấn đề này thường xảy ra khi CPU cấp chưa đủ mạnh, DB nhiều tải hoặc do các câu lệnh chưa tối ưu gây ra. Vấn đề này có thể được phát hiện thông qua các báo cáo ADDM, AWR report, top ...
- Undersized memory structures: Những vấn đề gây ra bởi việc sizing memory (SGA, PGA) không chuẩn hoặc không đủ có thể được phát hiện thông qua báo cáo ADDM (Oracle nói như vậy). Tuy nhiên qua 1 thời gian vận hành DB nhiều lần các khuyến cáo về bộ nhớ trong báo cáo này cũng chưa thực sự chính xác. Thay vào đó tôi kiểm tra Time Model Statistics, Top 10 Foreground Events để kiểm tra việc phân bố về tải cũng như top các event nào có liên quan đến việc đọc ghi (khi memory không đủ oracle sẽ phải thường xuyên load data block từ datafile lên buffer cache, hay sẽ phải write ra temp tablespace ...)
SGA Target Advisory, PGA Memory Advisory trong awr cũng là rất hữu ích khi chuẩn đoán vấn đề về memory
- I/O capacity issues: Vấn đề này thường xảy ra khi chất lượng đọc ghi xuống disk không tốt hoặc do việc sizing memory chưa chuẩn, các câu lệnh chưa tối ưu.
- Suboptimal use of Oracle Database by the application (Vấn đề hiệu năng do ứng dụng): Vấn đề hiệu năng do phần ứng dụng gây nên ví dụ: logic code viết không tốt, không dùng connection pool, truyền biến theo kiểu literal thay vì bind variable ...
- Database configuration issues: Vấn đề này xảy ra liên quan đến việc thiết lập các tham số cho database chưa chuẩn. Ví dụ redo log size, process ... thiết lập chưa phù hợp
- Short-lived performance problems (Vấn đề hiệu năng xảy ra trong 1 khoảng thời gian ngắn): Vấn đề về hiệu năng của database xảy ra trong 1 khoảng thời gian ngắn sẽ không được phát hiện qua các báo cáo AWR, ADDM. Hãy sử dụng ASH, tăng tham số Top N để kiểm tra
- Degradation of database performance over time (Hiệu năng của database giảm dần theo thời gian): Dữ liệu mở rộng, phân mảnh dữ liệu là 2 nguyên nhân dẫn tới hiệu năng database giảm dần theo thời gian.
- Inefficient or high-load SQL statements: Do các câu lệnh chiếm tải cũng như chưa được tối ưu gây ra
- Object contention: Do sự tranh chấp trong việc đồng thời truy cập vào các đối tượng trong shared_pool, buffer cache ...
- Unexpected performance regression after tuning SQL statements (Hiệu năng bị ảnh hưởng sau quá trình tuning): Việc tuning instance, sql có thể gây ra vấn đề về hiệu năng không mong muốn. Do đó cần đánh giá được mức độ ảnh hưởng, giám sát hiệu năng trước & sau khi tuning để có sự so sánh, dánh giá mức độ hiệu quả.

REF: oracle.com

Các bước kiểm tra vấn đề về hiệu năng của database1- Xác định vấn đề (OS, database hay do câu lệnh SQL gây ra)- Kiểm tra...
08/03/2022

Các bước kiểm tra vấn đề về hiệu năng của database

1- Xác định vấn đề (OS, database hay do câu lệnh SQL gây ra)
- Kiểm tra OS thông qua các công cụ top, vmstat,iostat, iotop OSWatcher ...
- Kiểm tra tình trạng tải của hệ thống thông qua các báo cáo awr, addm, ash report, OEM ...
- Kiểm tra các câu lệnh chiếm tài nguyên trong báo cáo awr, addm, ash report, OEM

2. Kiểm tra OS

- Nếu vấn đề liên quan tới các tài nguyên trên OS như CPU, RAM hoặc swap thì nên kiểm tra ở mức OS đầu tiền sau đó mới đến các phần tiếp theo sau. Tất nhiên có nhiều trường hợp tải của OS tăng cao là do các job, query chưa được tối ưu gây ra.
- Nếu việc sử dụng CPU, Ram luôn ở mức cao thì nên xem xét nâng cấp phần cứng (bước này làm sau cùng sau khi các phương án tuning đã được áp dụng)
- Nếu việc sử dụng disk luôn ở mức cao thì hãy xem xét thay thế loại disk với chất lượng tốt hơn (bước này làm sau khi các phương án tuning instance, sql được áp dụng)

3. Kiểm tra Database

- Nếu vấn đề liên quan tới database như lock, Concurrency hoặc các tham số database hãy kiểm tra và tối ưu nó (ví dụ thiết lập redo log size quá bé và số lương redo log nhỏ dẫn tới việc hệ thống switch log liên tục và wait trong quá trình chờ check point - Check point incompleted)
- Nếu hệ thóng có lock có thể phải kill để giải quyết vấn đề về hiệu năng
- Nếu các tham số sizing cho SGA, PGA là không đủ hoặc chưa phù hợp thì có thể điều chỉnh hoặc cần bổ sung thêm
- Nếu các thông tin về statistics đã quá cũ (stale) thì có thể cần phải gather statistics lại

4. Kiểm tra câu lệnh SQL

- Nếu các vấn đề về hạ tầng, instance đã được xem xét kỹ nhưng vấn đề về hiệu năng vẫn chưa thể giải quyết thì bắt đầu kiểm tra đến các câu lệnh. Tất nhiên không nhất thiết phải là bước kiểm tra cuối cùng
- Nếu các câu truy vấn cần sử dụng index thì cần phân tích và tạo index phù hợp. Index là cần thiết cho cả câu select, update, delete
- Nếu sql plan (ex*****on plan) không tốt và cost để thực thi câu lệnh rất lớn hoặc có sự thay đổi plan từ tốt -> xâu thì nên xem xét áp dụng các phương án sql plan management
- Có thể xem xét viết lại các câu lệnh để Oracle có thể thực thi với hiệu năng tốt hơn

P/s: bài viết đầu tay rất mong các anh em góp ý giúp

Address

Hanoi

Website

Alerts

Be the first to know and let us send you an email when DBA Expert posts news and promotions. Your email address will not be used for any other purpose, and you can unsubscribe at any time.

Share