Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego PostgreSQL działa tak wolno w systemie Windows?

Zdarzają się przypadki, w których PostgreSQL w systemie Windows płaci dodatkowe koszty w porównaniu z innymi rozwiązaniami, ze względu na kompromisy dokonane podczas jego portowania.

Na przykład PostgreSQL używa procesu na połączenie, MySQL używa wątku. W Uniksie zwykle nie jest to zauważalna różnica w wydajności, ale w systemie Windows tworzenie nowych procesów jest bardzo kosztowne (ze względu na brak wywołania systemowego fork()). Z tego powodu używanie trwałych połączeń lub puli połączeń to dużo ważniejsza w systemie Windows podczas korzystania z PostgreSQL.

Innym problemem, który zauważyłem, jest to, że wczesny PostgreSQL w systemie Windows domyślnie upewnia się, że jego zapisy przechodzą przez pamięć podręczną zapisu - nawet jeśli jest zasilany bateryjnie. AFAIK, MySQL tego nie robi i znacznie wpłynie to na wydajność zapisu. Teraz jest to faktycznie wymagane, jeśli masz niezabezpieczony sprzęt, taki jak tani dysk. Ale jeśli masz pamięć podręczną zapisu podtrzymywaną bateryjnie, chcesz to zmienić na zwykłe fsync. Nowoczesne wersje PostgreSQL (z pewnością 8.3) będą domyślnie używać open_datasync, co powinno usunąć tę różnicę.

Nie wspominasz również o tym, jak dostroiłeś konfigurację bazy danych. Domyślnie plik konfiguracyjny dostarczany z PostgreSQL to bardzo konserwatywny. Jeśli nic tam nie zmieniłeś, na pewno musisz się temu przyjrzeć. Na wiki PostgreSQL znajdziesz porady dotyczące strojenia. .

Aby podać więcej szczegółów, będziesz musiał podać dużo więcej szczegółów na temat tego, co działa wolno i jak dostroiłeś swoją bazę danych. Proponuję wysłać e-mail na listę dyskusyjną pgsql-general.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Group By z najwyższym numerem N każdego rodzaju

  2. Standardowe wywołanie SQL UPSERT

  3. Jak poprawić wydajność INSERT na bardzo dużej tabeli MySQL?

  4. Jak warunkowo obsługiwać dzielenie przez zero w MySQL?

  5. MySQL:Wybierz wszystkie daty z zakresu dat i uzyskaj dane z tabeli pasujących do dat