Tôi có hai máy chủ giống hệt nhau (về phần cứng), cả hai đều là cài đặt tiêu chuẩn của windows server 2008 r2, với phần mềm tối thiểu được cài đặt (về cơ bản là mã của tôi và các công cụ bắt buộc như jvm, v.v.).
Trên một máy chủ, tôi đang chạy máy chủ sql 2005, trên máy chủ thứ hai postgresql 9.1. Sự khác biệt về hiệu suất của 2 máy chủ này là đáng kinh ngạc, thật tệ cho postgresql đến nỗi tôi đang hối hận về bài phát biểu "hãy sử dụng postgresql ban đầu thay vì trả tiền cho giấy phép máy chủ sql" cho sếp của tôi. Chúng ta đang nói về sự khác biệt của 30 giây so với 15 phút cho cùng một lệnh và đó không chỉ là một lệnh này, đó là bất kỳ truy vấn hoặc lệnh nào tôi ném vào nó. Cả hai đều có khá nhiều dữ liệu giống nhau (các bản ghi được chèn theo thứ tự khác nhau) và cả hai cơ sở dữ liệu đều có cùng cấu trúc / chỉ mục, v.v.
Nhưng tôi hy vọng nó chỉ là vấn đề điều chỉnh hiệu suất. Vấn đề là, máy chủ sql sử dụng khá nhiều tất cả 32 hợp đồng ram trên máy chủ, trong khi postgresl không sử dụng gì, chắc chắn là ít hơn một hợp đồng mặc dù tôi chưa thực sự tìm ra chi tiết tốt.
Làm cách nào để tôi có được postgresql để sử dụng hơn 20 hợp đồng ram? Các máy chủ này được xây dựng riêng cho công cụ cơ sở dữ liệu này, do đó, bất kỳ ram nào không được sử dụng bởi cơ sở dữ liệu và các quy trình hỗ trợ đều bị lãng phí theo quan điểm của tôi.
SET effective_cache_size=18G;
(cài đặt mặc định cực kỳ thấp) BTW: giả sử đây là máy 64 bit (không có PTE)