Tôi có một ứng dụng Java mã nguồn mở sử dụng Hibernate và HSQLDB để lưu giữ lâu bền. Trong tất cả các bài kiểm tra đồ chơi của tôi, mọi thứ chạy nhanh và mọi thứ đều tốt. Tôi có một khách hàng đã chạy phần mềm trong vài tháng liên tục và cơ sở dữ liệu của họ đã phát triển đáng kể trong thời gian đó, và hiệu suất đã giảm dần. Nó cuối cùng đã xảy ra với tôi rằng cơ sở dữ liệu có thể là vấn đề. Theo như tôi có thể nói từ báo cáo tường trình, tất cả các tính toán trong máy chủ xảy ra nhanh chóng, vì vậy điều này phù hợp với giả thuyết rằng DB có thể bị lỗi.Cách điều chỉnh hiệu suất của ứng dụng hsqldb/hibernate
Tôi biết cách làm hồ sơ bình thường của chương trình để tìm ra nơi có điểm nóng và những gì đang chiếm một lượng đáng kể thời gian. Nhưng tất cả các profilers tôi biết về thời gian thực hiện giám sát trong chương trình và không cung cấp cho bạn bất kỳ sự trợ giúp nào về các cuộc gọi đến các tài nguyên bên ngoài. Những công cụ nào mọi người sử dụng để lập hồ sơ các chương trình đang sử dụng các cuộc gọi db bên ngoài để tìm ra nơi để tối ưu hóa hiệu suất?
Một chút mù tìm kiếm xung quanh đã tìm thấy một vài điểm nóng - tôi nhận thấy một cuộc gọi nơi tôi đang liệt kê tất cả các đối tượng của một lớp cụ thể để tìm hiểu xem có bất kỳ thứ gì không. Một thay đổi một dòng cho tiêu chí [.setMaxResults (1)] đã thay đổi cuộc gọi đó từ nửa giây đến gần như tức thời. Tôi cũng thấy những nơi mà tôi hỏi cùng một câu hỏi từ db nhiều lần trong một giao dịch duy nhất. Tôi đã không tìm ra cách để cache câu trả lời được nêu ra, nhưng những gì tôi thực sự muốn là một công cụ để giúp tôi tìm kiếm những loại điều một cách hệ thống hơn.
Tôi chưa thực hiện bất kỳ điều chỉnh hiệu suất nào trên cấu hình DB. Tôi đã giả định rằng vấn đề của tôi có nhiều khả năng là các truy vấn được hình thành kém hoặc hỏi sai câu hỏi quá nhiều lần. Tôi đoán tôi muốn tìm cách giảm số lượng truy vấn và chi phí của họ trước, và sau đó (sau khi cắt giảm mức sử dụng xuống 80%), hãy tăng tốc độ db bằng cách sử dụng bộ nhớ đệm và các thủ thuật khác để giảm tải. Nhưng tôi không phải là một chuyên gia trong việc điều chỉnh sử dụng DB. Bạn có đề xuất điều chỉnh DB trước khi ứng dụng không? – PanCrit
Nếu bạn chắc chắn rằng sự cố đang ở chế độ ngủ đông, việc điều chỉnh DB sẽ không giúp ích gì. Trước khi điều chỉnh, sử dụng công cụ profiler hoặc một công cụ giúp bạn theo dõi chính xác gốc của các vấn đề về hiệu suất, sau đó tối ưu hóa nó. Thật không may, không có cách nào dễ dàng. Tin tốt là: tất cả các IDE ngày nay có hỗ trợ profiling phong nha. – razenha