Cách đây không lâu, tôi đã hướng dẫn về Kế hoạch Giải thích cho nhân viên phát triển ứng dụng của chúng tôi. Một câu hỏi đặt ra là làm cách nào để quyết định câu lệnh SQL nào cần điều chỉnh? Tôi sử dụng một số cách tiếp cận khác nhau và tìm các ứng viên điều chỉnh SQL từ các góc độ khác nhau.
- Tôi thường xuyên thực hiện đánh giá mã trên các câu lệnh SQL gặp cơ sở dữ liệu của chúng tôi. Tôi tận dụng kinh nghiệm của mình để xem nhanh một câu lệnh SQL mới hoặc đã được sửa đổi đáng kể để quyết định xem tôi có cần điều tra thêm về SQL hay không. Ví dụ:nếu một truy vấn trên bảng đang tìm kiếm trên cột PK hoặc Unique, thì tôi có thể chắc chắn rằng nó sẽ chạy nhanh. Nếu câu lệnh SQL có vẻ nghi ngờ đối với tôi, tôi sẽ chạy nó thông qua Giải thích kế hoạch và / hoặc thời gian câu lệnh để đảm bảo nó chạy đủ.
- Tôi được Người quản lý Doanh nghiệp của Oracle thông báo cho tôi về sự tranh chấp tài nguyên trong hệ thống cơ sở dữ liệu Thử nghiệm của chúng tôi. Đôi khi có thể tìm thấy bất kỳ câu lệnh SQL nào mà tôi đã bỏ lỡ trong quá trình xem lại mã tại đây. Nếu tôi nhận được cảnh báo về tranh chấp tài nguyên, tôi sẽ tiếp tục và xem liệu một hoặc hai câu lệnh SQL có gây ra sự cố hay không. Đây là cơ hội cuối cùng để tôi nắm bắt các câu lệnh SQL trước khi chúng bắt đầu được sản xuất.
- Tôi sử dụng Ignite cho Oracle. Sản phẩm này là của Confio, nhưng Confio hiện là một phần của Solarwinds. Thông thường, tôi không cắm sản phẩm của nhà cung cấp, nhưng tôi sẽ ngoại lệ trong trường hợp này. Điều tôi thích ở Ignite là tôi gửi báo cáo qua email cho tôi vào thứ Hai hàng tuần. Báo cáo chứa N người vi phạm hàng đầu dựa trên thời gian chờ đợi. Tôi mất vài giây để xem báo cáo này. Tôi tìm kiếm các thanh lớn trong báo cáo. Trong ảnh chụp màn hình ví dụ bên dưới, bạn có thể thấy một thanh màu xanh lam ngay lập tức thu hút sự chú ý của bạn. Số bên phải là một giá trị id và nếu bạn nhấp vào nó, bạn có thể nhận được văn bản SQL. Đây là một cách tuyệt vời để xác định các câu lệnh SQL cần điều chỉnh. Nó siêu nhanh và siêu dễ dàng.
Như bạn có thể thấy, tôi cố gắng tìm ra các SQL có vấn đề khi chúng đang được phát triển, khi chúng ở trong hệ thống thử nghiệm của chúng tôi và ngay cả sau khi chúng được đưa vào sản xuất.