konto usunięte

Temat: SqlServer 2008 vs PostgreSQL

Witam,
jakie są różnice jeśli chodzi o fizyczną organizacją danych ?
Jeśli o SQL Server łatwo znaleźć wszystko dobrze opisane, to z Postgre jest już problem. np.: https://www.youtube.com/watch?v=LVP_d7D7beU&feature=pla...

konto usunięte

Temat: SqlServer 2008 vs PostgreSQL

Hm...
czy może być...
takie coś: http://www.postgresql.org/docs/9.0/static/storage.html
i takie coś: http://www.postgresql.org/files/developer/internalpics...

A tak z ciekawości zapytam, czemu o to pytasz? Czy to tak z ciekawości, hobbystycznie, czy zamierzasz grzebać w kodzie Postgresa?

PS) To się nazywa Postgres, nie Postgre.

konto usunięte

Temat: SqlServer 2008 vs PostgreSQL

Słabo udokumentowane ale nic ...
Nie zamierzam w tym kodzie "grzebać", jednak jeśli kluczowe są kwestie wydajnościowe to trzeba wiedzieć, czemu coś wolno działa. Szybkość odczytu zależy przecież ile stron musi przejrzeć engine aby zwrócić wynik, czy te strony są fizycznie blisko od siebie itp tak ?

konto usunięte

Temat: SqlServer 2008 vs PostgreSQL

Nie. To ma niewielkie znaczenie. Tak naprawdę używasz explain z różnymi parametrami, do tego kilka programów systemowych pokazujących obciążenie procesora i dysku. Nikogo nie interesuje fizyczny układ danych w plikach, chociażby dlatego, że z wersji na wersję to się zmienia, a do tego w pliku jednocześnie jest np. sto wersji każdego wiersza jednocześnie, nie mówiąc o polach, których rozmiar jest duży i są trzymane w zupełnie innych plikach.

konto usunięte

Temat: SqlServer 2008 vs PostgreSQL

Jak 100 procesów będzie chciało zrobić update to 1 się uda a pozostałe będą czekać. W tym sensie raczej będą 2 wersje tego samego rekordu. No, ale...

Co do fizycznej organizacji. PG trzyma dane w systemie plików. Schemat ma katalog. Dane tabeli trzymane są w plikach - po 1GB każdy. No przynajmniej kiedyś tak było.

Może przedstaw problem, bo odnoszę wrażenie, że zaczynasz od końca. Przewodu pokarmowego. :) W profilu masz javę. Jesteś pewien, że np. Hibernate nie robi 1+N zapytań, zamiast 1? Może też brakować indeksu.

Generalnie - organizacja danych na dysku jest na samym końcu optymalizacji. Jak masz bazę ze 100GB+ i tysiące zapytań na minutę - wtedy jest sens zastanawiać się nad organizacją danych.

konto usunięte

Temat: SqlServer 2008 vs PostgreSQL

No niby tak, ale w praktyce jak procesy sobie raźno biegają, część radośnie wisi w transakcji, a na wierszu zrobiło się 100 updatów... to vacuum tego nie ruszy i mamy wiele wersji tego samego wiersza...

W praktyce wpływ na organizację danych na dysku jest w postaci tablespace'ów, no ale nawet do używania tychże nie potrzeba wiedzieć jak dane są zapisywane na dysku.

W sumie zawsze mnie zastanawiało dlaczego wiele książek o Oraclu zaczyna się od ogromnie dokładnych opisów do czego służy który plik na dysku i jak nimi zarządzać. Pozostaje pytanie: po co. Myślałem, że do tego jest 4GL, że nie trzeba bazie tłumaczyć poleceń na poziomie assemblera. No ale może się mylę.

konto usunięte

Temat: SqlServer 2008 vs PostgreSQL

Nie jestem zwolennikeim Hibernate, nic nie zastąpi dobrze zaprojektowanej BD, z odpowiednimi indeksami, itp itp itp.
Ludzie np. nie wiedzą, że Postgre nie zakłada domyślnie index na fk ...
Więc nie rozumiem po co się pytasz o problem o 1 +N zapyatan - wizae to sie glownie z lazy laoding przy petli gdzie jest otwarta sesja ...
Michał Z.:
Jak 100 procesów będzie chciało zrobić update to 1 się uda a pozostałe będą czekać. W tym sensie raczej będą 2 wersje tego samego rekordu. No, ale...

Co do fizycznej organizacji. PG trzyma dane w systemie plików. Schemat ma katalog. Dane tabeli trzymane są w plikach - po 1GB każdy. No przynajmniej kiedyś tak było.

Może przedstaw problem, bo odnoszę wrażenie, że zaczynasz od końca. Przewodu pokarmowego. :) W profilu masz javę. Jesteś pewien, że np. Hibernate nie robi 1+N zapytań, zamiast 1? Może też brakować indeksu.

Generalnie - organizacja danych na dysku jest na samym końcu optymalizacji. Jak masz bazę ze 100GB+ i tysiące zapytań na minutę - wtedy jest sens zastanawiać się nad organizacją danych.

konto usunięte

Temat: SqlServer 2008 vs PostgreSQL

Kamil J.:
Nie jestem zwolennikeim Hibernate, nic nie zastąpi dobrze zaprojektowanej BD, z odpowiednimi indeksami, itp itp itp.

A z czego to można wywnioskować? Zadajesz pytanie wskazujące na długie móżdżenie. I oczekujesz, że ktoś odtworzy ten proces myślowy? Ba masz pretensje do mnie, bo mimo wszystko podjąłem próbę? Powiedz o co chodzi to może pomożemy. Bez tego, to sobie możemy podyskutować. Trolluję na różnych forach - zaczynałem w poprzednim stuleciu na usenecie... Kto wie, może się jeszcze czegoś nauczę w tym obszarze. :)
Ludzie np. nie wiedzą, że Postgre nie zakłada domyślnie index na fk ...

No i other left join, którego ms sql server uwielbia tu nie jest aż tak polecany. BTW - PostreSQL - albo PG. Może być małymi literkami, może być dużymi...
Więc nie rozumiem po co się pytasz o problem o 1 +N zapyatan - wizae to sie glownie z lazy laoding przy petli gdzie jest otwarta sesja ...
Z grubsza to już się wywnętrzyłem, ale niech tam. Jak ktoś się pyta o organizację danych, zwykle przebrnął przez wszystkie możliwości i nie znalazł odpowiedzi. Z drugiej strony to się optymalizuje na końcu. Więc - albo coś po drodze przeoczyłeś, albo nie mamy szansy pomóc. W celu rozstrzygnięcia tego dylematu wymagane jest podanie większej ilości informacji. No więc niezależnie od tego jak by nie podejść do Twojego pytania - żeby odpowiedzieć potrzebny jest pełen opis problemu, w skrócie - "napisz o co chodzi, od początku, po kolei" <TM> :)

konto usunięte

Temat: SqlServer 2008 vs PostgreSQL

Nie mam pretensji do Ciebie. Zresztą dyskusja widzę nie zmierza do celu.
Ja zadałem pytanie :
"Witam,
jakie są różnice jeśli chodzi o fizyczną organizacją danych ?"
A ty piszesz o zupełnie innych rzeczach ... To co mam wpisane w profilu ...
Mniejsza o to.
Ja zadałem pytanie o różnicę między tymi SZBD, a Ty mnie pytasz o jakiś problem ?

"Może przedstaw problem, bo odnoszę wrażenie, że zaczynasz od końca. Przewodu pokarmowego. :) W profilu masz javę. Jesteś pewien, że np. Hibernate nie robi 1+N zapytań, zamiast 1? Może też brakować indeksu. "

Nie widzę sensu takiej dyskusji.
Pozdrawiam.
Michał Z.:
Kamil J.:
Nie jestem zwolennikeim Hibernate, nic nie zastąpi dobrze zaprojektowanej BD, z odpowiednimi indeksami, itp itp itp.

A z czego to można wywnioskować? Zadajesz pytanie wskazujące na długie móżdżenie. I oczekujesz, że ktoś odtworzy ten proces myślowy? Ba masz pretensje do mnie, bo mimo wszystko podjąłem próbę? Powiedz o co chodzi to może pomożemy. Bez tego, to sobie możemy podyskutować. Trolluję na różnych forach - zaczynałem w poprzednim stuleciu na usenecie... Kto wie, może się jeszcze czegoś nauczę w tym obszarze. :)
Ludzie np. nie wiedzą, że Postgre nie zakłada domyślnie index na fk ...

No i other left join, którego ms sql server uwielbia tu nie jest aż tak polecany. BTW - PostreSQL - albo PG. Może być małymi literkami, może być dużymi...
Więc nie rozumiem po co się pytasz o problem o 1 +N zapyatan - wizae to sie glownie z lazy laoding przy petli gdzie jest otwarta sesja ...
Z grubsza to już się wywnętrzyłem, ale niech tam. Jak ktoś się pyta o organizację danych, zwykle przebrnął przez wszystkie możliwości i nie znalazł odpowiedzi. Z drugiej strony to się optymalizuje na końcu. Więc - albo coś po drodze przeoczyłeś, albo nie mamy szansy pomóc. W celu rozstrzygnięcia tego dylematu wymagane jest podanie większej ilości informacji. No więc niezależnie od tego jak by nie podejść do Twojego pytania - żeby odpowiedzieć potrzebny jest pełen opis problemu, w skrócie - "napisz o co chodzi, od początku, po kolei" <TM> :)

konto usunięte

Temat: SqlServer 2008 vs PostgreSQL

Ech...

zadajesz pytanie, którego odpowiedź może zająć lata, a i tak jej nie wykorzystasz. Po prostu wydawało nam się, że masz jakiś problem do rozwiązania i staramy się pomóc go rozwiązać inaczej, niż poznając meandry trzymania danych w plikach.

Co do Postgresa, to się naprawdę zmienia co wersję i poza garstką ludzi, którzy w tym grzebią, oraz kilkoma ciekawskimi osobnikami (bo nie sądze, żeby ich było więcej), nikt nie wie co tam się dzieje. I pomimo swej niewiedzy mogą sprawnie optymalizować bazy.

Samo założenie SQLa jest takie, że prosisz bazę o zrobienie czegoś i nie masz pojęcia co robi i w jaki sposób, ale robi.

Kluczowe kwestie wydajnościowe w Postgresie to:
- struktura tabel
- zapytania
- indeksy
- system plików na dysku
- prędkość dysku
- ilość ramu
- zmienne w pliku konfiguracyjnych (słownie 10 wartości)
- poziom logowania
- replikacja biegająca w tle
- wiszące długo transakcje

No i sposobu zapisu danych w plikach na tej liście nigdzie nie ma.

konto usunięte

Temat: SqlServer 2008 vs PostgreSQL

Szymon G.:
Ech...

zadajesz pytanie, którego odpowiedź może zająć lata, a i tak jej nie wykorzystasz. Po prostu wydawało nam się, że masz jakiś problem do rozwiązania i staramy się pomóc go rozwiązać inaczej, niż poznając meandry trzymania danych w plikach.

Co do Postgresa, to się naprawdę zmienia co wersję i poza garstką ludzi, którzy w tym grzebią, oraz kilkoma ciekawskimi osobnikami (bo nie sądze, żeby ich było więcej), nikt nie wie co tam się dzieje. I pomimo swej niewiedzy mogą sprawnie optymalizować bazy.

Samo założenie SQLa jest takie, że prosisz bazę o zrobienie czegoś i nie masz pojęcia co robi i w jaki sposób, ale robi.

Kluczowe kwestie wydajnościowe w Postgresie to:
- struktura tabel
- zapytania
- indeksy
- system plików na dysku
- prędkość dysku
- ilość ramu
- zmienne w pliku konfiguracyjnych (słownie 10 wartości)
- poziom logowania
- replikacja biegająca w tle
- wiszące długo transakcje

No i sposobu zapisu danych w plikach na tej liście nigdzie nie ma.

Logiczne jest, to, że to temat rzeka. Chodziło mi o główne różnice jakieś.
To jakie kluczowe są kwestie wydajnościowe ma się podobnie też do innych SZBD.
Mimo to, dzięki za ukierunkowanie jakieś.

konto usunięte

Temat: SqlServer 2008 vs PostgreSQL

Kamil J.:
[...]

Logiczne jest, to, że to temat rzeka. Chodziło mi o główne różnice jakieś.
To jakie kluczowe są kwestie wydajnościowe ma się podobnie też do innych SZBD.
Mimo to, dzięki za ukierunkowanie jakieś.

Odpowiedź na takie pytanie wymaga dogłębnej znajomości obu serwerów.

MS SQL Server znam mniej/więcej. Raczej mniej jak więcej. Wiem, że potrafi trzymać dane w b-drzewie i odroczyć porządkowanie takiej struktury. Przy większym ruchu się to wyłącza. Tabele mniejsze jak 5MB ładuje do ramu i robi seqscan / nie używa indeksów. Potrafi trzymać dane w indeksach. Optymalizacje, o których słyszałem polegały na pakowaniu wszystkiego do indeksów i za to się jakieś gwiazdki dostawało. Jak indeks zwraca to, czego wymaga zapytanie i nic więcej - dostaje 3 gwiazdki i to ponoć jest super.

PG trzyma dane w strukturze plików. Konkretna tabela zapisana jest w plikach o rozmiarze do 1GB - standardowo. To chyba zależy od wielkości strony. Standardowo strona ma 8kB. Rekord może znajdować się w 1 stronie. Jak wychodzi poza stronę, dane trafiają do TOASTa. Dane z kolumny są dzielone na 1/4 strony i zapisywane w osobnej tabeli. Odczyt robi się wolny, ale działa. Dane mogą być kompresowane. Każda strona ma nagłówek, każdy rekord też. Rekord wie dla jakich transakcji ma być dostępny. W ten sposób nie ma problemu z kolizjami, dostępem do zatwierdzonych danych itp. Indeks wskazuje na rekord przez tid. Strona i element na niej. Wyszukiwanie po tid jest baardzo szybkie. Poza tym można w indeksie trzymać dane, żeby nie czytać ich z tabeli. Jak statystyki wskażą, że indeks wyfiltruje więcej niż 2% danych i tak będzie seqscan.

Tu jest więcej:
http://postgresql.org/files/developer/internalpics.pdf
Co prawda nie tylko o tym. Dopisałem trochę o TOASTach, bo w pdfie tego chyba nie ma.
Dalsze lektury:
https://momjian.us/main/presentations/overview.html
No i Tom Lane - http://en.wikipedia.org/wiki/Tom_Lane_%28computer_scie... - chociaż jego prezentacji jakoś znaleźć nie mogę.

PG ma bardzo rozwinięty system typów. Do kolumny da się wpisać wszystko, co da się przeczytać w C. Dla przykładu można wpisać 2GB tablicę - array. W takim przypadku trafi to TOASTa, ale da się. To jest siła tego silnika. full text search, indeksowanie przestrzenne, h-store - przechowywanie tego w porządnej formie, a nie jako string...

IMO - to jest odpowiedź na Twoje pytanie. BTW część z tego już raz napisałem.
IMVHO to nie jest rozwiązanie problemu, chociaż pozwoli na pogłębienie wiedzy. To może doprowadzić do rozwiązania. No, ale - nie moje małpy - nie mój cyrk. ;)

Następna dyskusja:

PostgreSQL - automatyzacja ...




Wyślij zaproszenie do