=?iso-8859-2?q?drastyczne_r=F3=BFnice_mi=EAdzy_versiami_bazy_-_postgresql?=
tomsiak - 25-06-2006 00:10
=?iso-8859-2?q?drastyczne_r=F3=BFnice_mi=EAdzy_versiami_bazy_-_postgresql?=
WItam! Zauważyłem bardzo dużą różnicę wydajności bazy danych przy wykonaniu prostego zapytania tabela ocena ma aktualnie ok 50 000 wierszy, każdy uczeń ma średnio 25 ocen. CREATE TABLE ocena ( id_uczen int4, id_przedmiot int4, ocena int4 ) Dodam tylko ze w bazie testowe (windows postgresql 8.1.4) jest kilka wierszy mniej w tabeli ocena, jakby sie komus nie zgadzaly statystyki analizujac explain;
Postgresql ver 8.0.3 na linux dla przykladu proste zapytanie: select ocena from ocena where id_przedmiot=-2 - zapytanie wykonuje sie okolo 900ms
explain analyze: daje w wyniku Seq Scan on ocena (cost=0.00..958.52 rows=2086 width=4) (actual time=0.039..25.671 rows=2077 loops=1) Filter: (id_przedmiot = -2) Total runtime: 26.807 ms
DRUGI PRZYKŁAD Postgresql ver 8.1.4 na windows xp select ocena from ocena where id_przedmiot=-2 - zapytanie wykonuje sie okolo 70ms
explain analyze: daje w wyniku Seq Scan on ocena (cost=0.00..965.77 rows=1533 width=4) (actual time=0.059..26.913 rows=2056 loops=1) Filter: (id_przedmiot = -2) Total runtime: 30.351 ms
na bazie w wersji postgresql > 8.0.3 wszystko takze dzieje sie o wiele szybciej. wlaczylem statystyki na 8.0.3 ale nic nie pomoglo oczywiscie analyze takze wykonalem. Mysle ze powinienem cos ustawic w postgresql.conf pytanie tylko co. z gory dzięki za odpowiedź
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 25-06-2006 00:10
tomsiak wrote: > WItam! > Zauważyłem bardzo dużą różnicę wydajności bazy danych przy > wykonaniu prostego zapytania > > Postgresql ver 8.0.3 na linux > Total runtime: 26.807 ms > > DRUGI PRZYKŁAD > Total runtime: 30.351 ms > > na bazie w wersji postgresql > 8.0.3 wszystko takze dzieje sie o wiele > szybciej.
Ja wiem, czy 4 ms to tak o wiele szybciej? No i zaraz, zaraz... przecież z tego wynika, że 8.0.3 jest szybsze?! ;)
Wszystko jest kwestią poprawności testów i interpretacji wyników. Te pierwsze 700ms to po najprawdopodobniej z powodu czytania danych z dysku, a nie z cache.
-- P.M.
Bartek Siebab - 25-06-2006 00:10
> tomsiak w dniu 2006-06-24 12:39 pisze:
> Zauważyłem bardzo dużą różnicę wydajności bazy danych przy > wykonaniu prostego zapytania > tabela ocena ma aktualnie ok 50 000 wierszy, każdy uczeń ma średnio > 25 ocen. > CREATE TABLE ocena > ( > id_uczen int4, > id_przedmiot int4, > ocena int4 > )
> select ocena from ocena where id_przedmiot=-2 - zapytanie wykonuje sie > okolo 900ms
Załóż indexy na te wszystkie pola tej tabeli
> na bazie w wersji postgresql > 8.0.3 wszystko takze dzieje sie o wiele > szybciej. wlaczylem statystyki na 8.0.3 ale nic nie pomoglo oczywiscie > analyze takze wykonalem. Mysle ze powinienem cos ustawic w > postgresql.conf pytanie tylko co. z gory dzięki za odpowiedź
załóż indexy i powtórz testy
-- ..---------- -------- ------ ---- ---- --- - -- - | Bartek `saphire` Siebab http://bartek.siebab.net
tomsiak - 25-06-2006 00:10
=?iso-8859-2?q?Re:_drastyczne_r=F3=BFnice_mi=EAdzy_versiami_b azy_-_postgresql?= Paweł Matejski napisał(a): > tomsiak wrote: > > WItam! > > Zauważyłem bardzo dużą różnicę wydajności bazy danych przy > > wykonaniu prostego zapytania > > > > Postgresql ver 8.0.3 na linux > > Total runtime: 26.807 ms > > > > DRUGI PRZYKŁAD > > Total runtime: 30.351 ms > > > > na bazie w wersji postgresql > 8.0.3 wszystko takze dzieje sie o wiele > > szybciej. > > Ja wiem, czy 4 ms to tak o wiele szybciej? No i zaraz, zaraz... przecież > z tego wynika, że 8.0.3 jest szybsze?! ;) > > Wszystko jest kwestią poprawności testów i interpretacji wyników. > Te pierwsze 700ms to po najprawdopodobniej z powodu czytania danych z > dysku, a nie z cache. > > -- > P.M.
Serwer postawiony na linuxie sklada sie z dwóch opteronów i dysków SCSI, natomisat drugi to zwykly PC Athlon 64 i dysk SATA, na innym komputerze PIV, dysk IDE 7200 obr baza postgresql > 8.0.3 czas wykonania okolo 80ms wiec wyklucza to platforme sprzetowa wg mnie
tomsiak - 25-06-2006 00:10
=?iso-8859-2?q?Re:_drastyczne_r=F3=BFnice_mi=EAdzy_versiami_b azy_-_postgresql?= Bartek Siebab napisał(a): > > tomsiak w dniu 2006-06-24 12:39 pisze: > > > Zauważyłem bardzo dużą różnicę wydajności bazy danych przy > > wykonaniu prostego zapytania > > tabela ocena ma aktualnie ok 50 000 wierszy, każdy uczeń ma średnio > > 25 ocen. > > CREATE TABLE ocena > > ( > > id_uczen int4, > > id_przedmiot int4, > > ocena int4 > > ) > > > select ocena from ocena where id_przedmiot=-2 - zapytanie wykonuje sie > > okolo 900ms > > Załóż indexy na te wszystkie pola tej tabeli > > > na bazie w wersji postgresql > 8.0.3 wszystko takze dzieje sie o wiele > > szybciej. wlaczylem statystyki na 8.0.3 ale nic nie pomoglo oczywiscie > > analyze takze wykonalem. Mysle ze powinienem cos ustawic w > > postgresql.conf pytanie tylko co. z gory dzięki za odpowiedź > > załóż indexy i powtórz testy > > -- > .---------- -------- ------ ---- ---- --- - -- - > | Bartek `saphire` Siebab http://bartek.siebab.net
już próbowałem z indexami nie chce mi ich użyć a gdy wyłączyłem seq_scan i w końcu użył infdexów zapytanie nadal wykonywało się tak długo. Ale nie w tym rzecz na komputerze testowym z bazą 8.1.4 także uzywa seq_scan ale przelicza 10 razy szybciej czyli ok 70ms.
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 25-06-2006 00:10
tomsiak wrote: > Paweł Matejski napisał(a): >> tomsiak wrote: >>> WItam! >>> Zauważyłem bardzo dużą różnicę wydajności bazy danych przy >>> wykonaniu prostego zapytania >>> >>> Postgresql ver 8.0.3 na linux >>> Total runtime: 26.807 ms >>> >>> DRUGI PRZYKŁAD >>> Total runtime: 30.351 ms >>> >>> na bazie w wersji postgresql > 8.0.3 wszystko takze dzieje sie o wiele >>> szybciej. >> Ja wiem, czy 4 ms to tak o wiele szybciej? No i zaraz, zaraz... przecież >> z tego wynika, że 8.0.3 jest szybsze?! ;) >> >> Wszystko jest kwestią poprawności testów i interpretacji wyników. >> Te pierwsze 700ms to po najprawdopodobniej z powodu czytania danych z >> dysku, a nie z cache. > > Serwer postawiony na linuxie sklada sie z dwóch opteronów i dysków > SCSI, natomisat drugi to zwykly PC Athlon 64 i dysk SATA, na innym > komputerze PIV, dysk IDE 7200 obr baza postgresql > 8.0.3 czas > wykonania okolo 80ms wiec wyklucza to platforme sprzetowa wg mnie
A czy ja pisałem coś o platformie sprzętowej? Pokazałem Ci, że wyciągasz złe wnioski. Różnica masz nie między wersjami bazy, a między select * a explain analize select *! -- P.M.
tomsiak - 25-06-2006 00:10
=?iso-8859-2?q?Re:_drastyczne_r=F3=BFnice_mi=EAdzy_versiami_b azy_-_postgresql?=
> A czy ja pisałem coś o platformie sprzętowej? Pokazałem Ci, że wyciągasz > złe wnioski. Różnica masz nie między wersjami bazy, a między select * a > explain analize select *! > -- > P.M.
dodatkowo opisałem platforme sprzętową a co do czasu wykonania analyze to byl czysty przypadek na serwerze linuxowym baza 8.0.3 wykonuje sie znacznie dluzej ale to tylko analyze jesli chodzi o wyszukania danych to roznice sa drastyczne.
hubert depesz lubaczewski - 25-06-2006 00:10
On 2006-06-24, tomsiak <tomsiak@gmail.com> wrote: > Postgresql ver 8.0.3 na linux > dla przykladu proste zapytanie: > select ocena from ocena where id_przedmiot=-2 - zapytanie wykonuje sie > okolo 900ms > DRUGI PRZYKŁAD > Postgresql ver 8.1.4 na windows xp > select ocena from ocena where id_przedmiot=-2 - zapytanie wykonuje sie > okolo 70ms
zakładam iż mówiąc do dużej różnicy piszesz o tym. 900ms vs. 70ms. w/g mnie różnicy nie ma.
nie wiem jakiej procedury użyłeś do testowania. jakie wcześniej zapytania robiłeś na tym systemie, w tym połączeniu. wyciąganie wniosków z pojedynczego zapytania odpalonego raz nie ma sensu.
odpal tego select'a kilkanascie razy pod rząd na każdej z baz (w pojedynczym połączeniu) to wtedy można porozmawiać. dodatkowo przy tak małych ilościach danych to w ogóle by mieć wiarygodne wyniki musiałbyś przed testami wyczyścić wszystkie możliwe bufory, cache'a itd. czyli realnie zrestartować system.
dodatkowo - pisano ci o indeksie. zrobiłeś? i postgresql nie chce ci go użyć? jak go założyłeś? zrobiłeś potem vacuum analyze? jaki masz rozkład statystyczny wartości w id_przedmiot (wartość -2 jako id wydaje mi się być dziwna).
depesz
-- http://www.depesz.com/index.php/2006/06/22/choroby/
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 25-06-2006 00:10
tomsiak wrote: >> A czy ja pisałem coś o platformie sprzętowej? Pokazałem Ci, że wyciągasz >> złe wnioski. Różnica masz nie między wersjami bazy, a między select * a >> explain analize select *! > > dodatkowo opisałem platforme sprzętową a co do czasu wykonania > analyze to byl czysty przypadek na serwerze linuxowym baza 8.0.3 > wykonuje sie znacznie dluzej ale to tylko analyze jesli chodzi o > wyszukania danych to roznice sa drastyczne.
Wykonano testy przejazdy pojazdu z punktu A do punktu B. W 99 przypadkach czas przejazdu był 10h +- 30m, w 1 czas przejazdu wyniósł 1h. Jaki z tego wniosek?
Co z tego wynika?
-- P.M.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Wydajność baz danych w zależności od poziomu izolacji ANSI/ISO
Czy zna (obsługuje) ktoś program Iso Draw ?
MYSQL - kodowanie w ISO-PL
strona plus baza w iso do utf-8
Kodowanie: z iso na utf
postgresql - int/int
postgresql Select count(*) czy raczej Select count(ID)
Postgres - replikcja master-master
Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL]
Dwie bazy czy dwie tabele?
zanotowane.pldoc.pisz.plpdf.pisz.plshutter.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|