[PostgreSQL] Wydajnosc.

0

witam

wlasnie stoje przed wyborem jednej z baz danych do systemu ktory pisze i chcialbym poznac opinie forumowiczow na temat wydajnosci bazy PGsql. Konkretnie chodzi mi jak PostgreSQL radzi sobie pod Windowsem (2000/XP/2003) z duzymi bazami (rzedu 20, 30GB).

ps : Czy jest w PostgreSQL cos takiego jak dlugi insert (w mysql: insert into xxx (1,2),(2,3);) i ew. jaka jest jego wydajnosc.
ps2: Czy jest w PostgreSQL REPLACE (ponoc w Firebird 2.0 dwa maja zaimplementowaz juz, wiec moze w PG juz jest).

0
DanGi napisał(a)

ps : Czy jest w PostgreSQL cos takiego jak dlugi insert (w mysql: insert into xxx (1,2),(2,3);) i ew. jaka jest jego wydajnosc.

Nie spotkałem się z czymś takim.

Co do wydajności, to był ostatnio temat na forum - ktoś (nie pamiętam dokładnie kto) testował postgresa pod kątem wielkości -> szybkości, poczytaj sobie.

Moim zdaniem wszystko zależy od admina, ale mimo wszystko podobno mysql jest szybszy, ale za to na pewno o niebo uboższy pod względem funkcjonalności od postgresa.

0

Dobrze zaprojektowana baza PostgreSQL na Windows z dużą ilością danych radzi sobie praktycznie tak samo szybko jak komercyjne systemy bazodanowe. Większe znaczenie ma sposób zaprojektowania bazy (klucze, indeksy, itp) niż wybór systemu.

Długi INSERT

INSERT INTO tabela
    SELECT 1, 'A' UNION
    SELECT 2, 'B' UNION
    SELECT 3, 'C';

Odnośnie REPLACE: zależy, o którego Ci chodzi. Istnieje CREATE OR REPLACE, ale nie ma INSERT OR REPLACE.

0

To ja testowałem ostatnio Postgresa na bazie 4 GB i powiem tak: przy tak dużych bazach na tle komercyjnych rozwiązań wypada słabo, ale jak się umie, to można go dostroić tak aby był wystarczający.
Standardowy MySQL nie spełnia założeń ACID*, więc porównania szybkości i benchmarki jakie można znaleźć w sieci są zwykle mocno nie fair na korzyść MySQL.

Przy tak dużych bazach trzeba uważać na to, aby pozakładać dobre indeksy na tabelach, odpowiednio poukładać dane w tabelach (CLUSTER), nie zapominać o okresowym VACUUM ANALYZE, dobrze ustawić wielkość effective_cache_size oraz work_mem. Czasem możesz potrzebować też widoków zmaterializowanych, które można uzyskać za pomocą triggerów, choć nie jest to zabawa dla początkujących. EXPLAIN [ANALYZE] Twoim przyjacielem. Niestety żaden system OpenSource na razie nie potrafi zoptymalizować się sam (a DB2 i Oracle potrafią całkiem nieźle).

*) Chyba że się go ustawi aby używał InnoDB, ale to jest silnik należący do Oracle'a, a nie LGPL i w aplikacji closed-source tego Ci użyć nie wolno - musisz kupić od Oracla licencje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1