sql >> Databáze >  >> RDS >> Mysql

Proč je PostgreSQL na Windows tak pomalý?

Existují případy, kdy PostgreSQL ve Windows platí další režii ve srovnání s jinými řešeními kvůli kompromisům, které jsme udělali, když jsme jej přenesli.

Například PostgreSQL používá proces na připojení, MySQL používá vlákno. Na Unixu to obvykle není znatelný rozdíl ve výkonu, ale na Windows je vytváření nových procesů velmi drahé (kvůli chybějícímu systémovému volání fork()). Z tohoto důvodu je používání trvalých připojení nebo sdružování připojení velmi důležitější ve Windows při používání PostgreSQL.

Dalším problémem, který jsem viděl, je, že raný PostgreSQL ve Windows bude ve výchozím nastavení zajišťovat, že jeho zápisy procházejí mezipamětí pro zápis – i když je zálohován baterií. AFAIK, MySQL to nedělá a výrazně to ovlivní výkon zápisu. Nyní je to ve skutečnosti vyžadováno, pokud máte nezabezpečený hardware, jako je například levný disk. Ale pokud máte mezipaměť pro zápis zálohovanou baterií, chcete to změnit na běžný fsync. Moderní verze PostgreSQL (určitě 8.3) budou místo toho standardně používat open_datasync, což by mělo tento rozdíl odstranit.

Také se nezmiňujete o tom, jak jste vyladili konfiguraci databáze. Ve výchozím nastavení je konfigurační soubor dodávaný s PostgreSQL velmi konzervativní. Pokud jste tam nic neměnili, určitě se na to musíte mrknout. Na PostgreSQL wiki je k dispozici několik rad pro ladění .

Chcete-li uvést další podrobnosti, budete muset poskytnout mnohem více podrobností o tom, co přesně běží pomalu a jak jste vyladili svou databázi. Doporučil bych poslat e-mail na mailinglist pgsql-general.



  1. MySQL Join na základě indexování YEAR () – přidání sloupce nebo vygenerovaný sloupec

  2. SQL INSERT INTO z více tabulek

  3. Jak načíst více řádků z databáze v PHP

  4. Zkontrolujte, zda tabulka MySQL existuje nebo ne