Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tại sao PostgreSQL quá chậm trên Windows?

Có những trường hợp PostgreSQL trên Windows trả thêm phí so với các giải pháp khác, do sự cân bằng được thực hiện khi chúng tôi chuyển nó.

Ví dụ:PostgreSQL sử dụng một quy trình cho mỗi kết nối, MySQL sử dụng một tiểu trình. Trên Unix, đây thường không phải là sự khác biệt về hiệu suất đáng chú ý, nhưng trên Windows, việc tạo các tiến trình mới rất tốn kém (do thiếu lệnh gọi hệ thống fork ()). Vì lý do này, việc sử dụng kết nối liên tục hoặc trình gộp kết nối là nhiều quan trọng hơn trên Windows khi sử dụng PostgreSQL.

Một vấn đề khác mà tôi đã thấy là PostgreSQL ban đầu trên Windows theo mặc định sẽ đảm bảo rằng việc ghi nó đang đi qua bộ đệm ghi - ngay cả khi nó được hỗ trợ pin. AFAIK, MySQL không làm được điều này, và nó sẽ ảnh hưởng rất nhiều đến hiệu suất ghi. Bây giờ, điều này thực sự bắt buộc nếu bạn có phần cứng không an toàn, chẳng hạn như ổ đĩa rẻ tiền. Nhưng nếu bạn có bộ nhớ đệm ghi được hỗ trợ bằng pin, bạn muốn thay đổi điều này thành fsync thông thường. Các phiên bản hiện đại của PostgreSQL (chắc chắn là 8.3) sẽ mặc định thành open_datasync để thay thế, điều này sẽ loại bỏ sự khác biệt này.

Bạn cũng không đề cập gì về cách bạn đã điều chỉnh cấu hình của cơ sở dữ liệu. Theo mặc định, tệp cấu hình được gửi cùng với PostgreSQL là rất bảo thủ. Nếu bạn không thay đổi bất cứ điều gì ở đó, bạn chắc chắn cần phải xem xét nó. Có một số lời khuyên điều chỉnh có sẵn trên wiki PostgreSQL .

Để cung cấp thêm bất kỳ chi tiết nào, bạn sẽ phải cung cấp thêm rất nhiều chi tiết về chính xác những gì chạy chậm và cách bạn đã điều chỉnh cơ sở dữ liệu của mình. Tôi muốn đề xuất một email tới danh sách gửi thư chung của pgsql.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách phân tích cú pháp mảng trong mảng PHP-> JSON-> XCODE

  2. Flask-SQLAlchemy:Không thể kết nối lại cho đến khi giao dịch không hợp lệ được khôi phục

  3. Thủ tục lưu trữ đệ quy Mysql ... Đã đạt đến giới hạn 0 ... không thể thay đổi biến max_sp_recursion_depth

  4. Câu lệnh đã chuẩn bị sẵn mysqli num_rows trả về 0 trong khi truy vấn trả về lớn hơn 0

  5. Mã lỗi MySQL 1235