Hiện PostgreSQL đang dần trở lên phổ biến và sử dụng rộng rãi trong các hệ thống Web, phần mềm,… PostgreSQL có năng lực xử lý dữ liệu rất tốt. Tuy nhiên với những câu lệnh SQL không thực sự tối ưu nó cũng sẽ thực thi mất rất nhiều thời gian. Nếu vấn đề này xảy ra trên hệ thống của bạn thì bạn cần điều tra để xác nhận được đâu là câu SQL cần tối ưu.
Để làm được việc đó PostgreSQL cung cấp cho chúng ta 1 tham số đó là log_min_duration_statement để log lại những câu SQL thực thi quá thời gian mà chúng ta quy định.
Mặc định tham số log_min_duration_statement sẽ bị comment lại, và giá trị mặc định là -1. Nếu chúng ta set giá trị cho chúng là:
- – 1 : Không log câu SQL gì cả
- 0: Là logc toàn bộ câu SQL
- <number> : Nhập 1 số cụ thể nghĩa là log câu SQL có thời gian chạy lớn giá trị này. Đơn vị là mini giây. (miniseconds)
Để log lại những câu lệnh SQL thực thi chậm chúng ta thực hiện qua 3 bước sau:
Bước 1: Tìm và sửa file cấu hình postgresql.conf. Tùy vào từng hệ thống mà nó ở đường dẫn khác nhau. VD: Trên Ubuntu nó nằm ở đường dẫn: /etc/postgresql/<version>/main/postgresql.conf Với <version> là version của PostgreSQL
Bước 2: Sau đó sửa tham số log_min_duration_statement sang một giá trị cụ thể. Ví dụ 1000 (Tức là 1000 mini giây, tương đương với 1 giây)
log_min_duration_statement = 1000
Save file lại
Bước 3: Cuối cùng là restart PostgreSQL. VD: trên Ubuntu bằng lệnh sau
sudo systemctl restart postgresql
Để kiểm tra xem sau khi sửa config nó có hoạt động đúng không chúng ta sử dụng câu lệnh SQL sau để test.
SELECT pg_sleep(2);
pg_sleep(2) là 1 function của PostgreSQL, và 2 là số giây sleep (ngủ) của câu lệnh.
Kết quả là câu lệnh SQL đã bị log lại do lớn hơn 1 giây đã config được lưu lại trong file log.
Bạn có thể tìm file log ở trên Linux là đường dẫn /var/log/postgresql
Nguồn: vinasupport.com