-
X-Received: by 10.180.208.114 with SMTP id md18mr266398wic.9.1367942531719; Tue, 07
May 2013 09:02:11 -0700 (PDT)
X-Received: by 10.180.208.114 with SMTP id md18mr266398wic.9.1367942531719; Tue, 07
May 2013 09:02:11 -0700 (PDT)
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!goblin1!goblin.stu.neva.ru!17no5121108wie.0!news-out.google.com!hg5ni7
8691wib.1!nntp.google.com!17no5121105wie.0!postnews.google.com!glegroupsg2000go
o.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Tue, 7 May 2013 09:02:11 -0700 (PDT)
In-Reply-To: <5188ab94$0$1252$65785112@news.neostrada.pl>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=213.195.164.27;
posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
NNTP-Posting-Host: 213.195.164.27
References: <c...@g...com>
<klqg29$o16$1@news.mm.pl>
<0...@g...com>
<klsle1$ogf$1@news.mm.pl>
<2...@g...com>
<km4nal$kkp$1@news.mm.pl>
<4...@g...com>
<d...@g...com>
<e...@g...com>
<51874eb2$0$1250$65785112@news.neostrada.pl>
<6...@g...com>
<51882061$0$1222$65785112@news.neostrada.pl>
<5...@g...com>
<5188ab94$0$1252$65785112@news.neostrada.pl>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <3...@g...com>
Subject: Re: jsp vs php
From: "M.M." <m...@g...com>
Injection-Date: Tue, 07 May 2013 16:02:11 +0000
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
Xref: news-archive.icm.edu.pl pl.comp.programming:203200
[ ukryj nagłówki ]W dniu wtorek, 7 maja 2013 09:21:55 UTC+2 użytkownik R.e.m.e.K napisał:
> Bazy danych sa srubowane pod wzgledem wydajnosci, bo to jeden z priorytetow.
> Mechanizmow temu sprzyjajacych maja wiele, w koncu to temat stary jak cale
> IT, ale nie sadze by byla mozliwosc grzebania w tak niskopoziomowych
> parametrach jak polozenie stron w sektorach dysku.
Ok, jak nie ma to nie ma. Chociaz... troche nie ufam, poszukam jeszcze :)
> Ale jesli plik baza bedzie mial kilkadziesiat GB, to podejrzewam, ze nawet
> najlepszy system plikow nie zagwarantuje, ze znajdzie taki obszar w jednym
> kawalku.
No tak, ale w jednym kawalku nie musi byc.
> Optymalizator jest wbudowany w engine serwera i sie korzysta z niego
> wykonujac zapytania. Mozna wplynac na jego decyzje wymuszajac mu plan
> zapytania, ale w dobrych serwerach wiecej takim wymuszeniem mozna zaszkodzic
> niz pomoc, w gorszych (ze slabym optymalizatorem) mozna poprawic wiele.
Brzmi logicznie, ale nie ma cudow. Jesli tabela jest ogromna, to w
pesymistycznym przypadku DB musi nastawic glowice tyle razy ile jest
rekordow do odczytania.
> Ale jesli nie bedzie read-only to stopien komplikacji wlasnego rozwiazania
> rosnie ogromnie.
To zalezy od szczegolow problemu. Ostatnio duzo sie bawilem rozwiazaniami
opartymi na SQL i CSV. Az tak bardzo trudno nie jest. Wieksze problemy
mialem gdy byly nieoczekiwane zmiany w projekcie.
> Do tego mozna takze uzyc serwera SQL. Raz na dobe zrobic nim widok i go
> zmaterializowac (materialized view). Efekt bedzie podobny, a roboty ZERO.
Zgadza sie. Przy okazji zyskuje sie transakcje, prosta mozliwosc zrobienia
kopii - niby sa zalety. Ale dane w takich plikach sa nadmiarowe, zawsze
mozna je odtworzyc - czyli transakcji nie potrzebuje. W kopii zapasowej
takie dane tez jak kula u nogi. Po plikach bazy danych trudno iterowac...
Masz racje ze mozna, ale w takim przypadku baza to niepotrzebna warstwa.
Lepiej takie dane zrzucic do pliku binarnego, potem w golym C po takim
pliku iterowac. Struktury z C mapuja sie bez zadnych konwersji do danych w
pliku binarnym - wydajnosc i wygoda w jednym.
> E, czemu tylko jedna kolumne? Indeks moze obejmowac kilka kolumn.
Hmmm, ale i tak to chyba nie ma nic wspólnego z jakąś metodą na
układanie potrzebnych danych obok siebie.
> Wiedziec a to zrobic to przepasc liczona w setkach roboczogodzin ;-)
Samo sie nie zrobi, pytanie czy warto :)
> No i dochodzimy do meritum. Jesli zapytania wykonuja sie po kilkadziesiat
> sekund to (zaznacz wlasciwe pola):
> - masz spieprzona strukture logiczna bazy
O tej samej bazie mozna powiedziec ze jest optymala i spieprzona. Moja jest
optymalizowana na elastycznosc, na to zeby latwo mozna bylo cos zmienic,
cos dodac. Mozna zrobic tak jak wyzej proponowales, ze tabel sa odpowiednikami
plikow na ktorych to dziala szybciej. Tyle ze wtedy taka baza wydaje sie jak
kula u nogi.
> - nie korzystasz prawidlowo z indeksow
Raczej tak.
> - piszesz zle zapytania SQL
Nie popelniam wielkich bledow, ale nie sprawdzalem jeszcze czy szybciej
zadziala zlaczenie join, czy moze jakies sprytne podzapytanie.
> - uzywasz produktu serweropodobnego
Ostatnio uzywam dwoch: SQLite i Postresql
> - wyciagasz w wyniku miliony rekordow wraz z polami typu blob i podsystem
> dyskowy nie wyrabia
Blob nie uzywam. Ilosc rekordow rozna, rzadko powyzej 100tys, ale zdarza sie.
> Ale wlasnie, czy aby na pewno sa one przemyslane? Czy struktura jest
> znormalizowana? A jesli tak to moze zbyt znormalizowana?
Jak na wydajnosc to jest zbyt znormalizowana, jak na zarzadzanie, to jest
znormalizowana w sam raz - jesli mozna tak powiedziec :)
> W praktyce dla zwiekszenia wydajnosci stosuje sie czesto denormalizacje
> oraz celowa redundancje danych. Mysle, ze struktura bazy danych moze byc
> tu kluczowa dla wydajnosci, mozna nia bardzo duzo poprawic oraz ...zepsuc.
Z tego co widze, to mozna w ten sposob duzo poprawic. Pytanie tylko, czy
robienie tabel z redundantnymi danymi nie jest gorze niz zewnetrzne pliki.
Pozdrawiam
Następne wpisy z tego wątku
- 07.05.13 18:06 M.M.
- 07.05.13 20:15 Michal Kleczek
- 07.05.13 21:51 M.M.
- 07.05.13 21:59 Ghost
- 07.05.13 22:28 M.M.
- 07.05.13 23:24 M.M.
- 08.05.13 00:13 Tomek Kańka
- 08.05.13 01:41 M.M.
- 08.05.13 09:41 Ghost
- 08.05.13 11:04 Michal Kleczek
- 08.05.13 18:09 M.M.
- 08.05.13 18:12 M.M.
- 08.05.13 18:53 Ghost
- 08.05.13 20:59 M.M.
- 08.05.13 21:03 Ghost
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-11-29 Dławik CM
- 2024-11-29 [OT] Lewe oprogramowanie
- 2024-11-29 Błonie => Sales Specialist <=
- 2024-11-29 Warszawa => IT Expert (Network Systems area) <=
- 2024-11-29 Warszawa => Ekspert IT (obszar systemów sieciowych) <=
- 2024-11-29 Warszawa => Head of International Freight Forwarding Department <=
- 2024-11-29 Białystok => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-11-29 Pómpy ciepła darmo rozdajoo
- 2024-11-29 Białystok => Application Security Engineer <=
- 2024-11-29 Białystok => Programista Full Stack (.Net Core) <=
- 2024-11-29 Gdańsk => Software .Net Developer <=
- 2024-11-29 Wrocław => Key Account Manager <=
- 2024-11-29 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-11-29 Chrzanów => Specjalista ds. public relations <=
- 2024-11-27 Re: UseGalileo -- PRODUKTY I APLIKACJE UŻYWAJĄ JUŻ DZIŚ SYSTEMU GALILEO