-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!news-out.readnews.com!news-x
xxfer.readnews.com!nx02.iad01.newshosting.com!newshosting.com!newsfeed.neostrad
a.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada
.pl.POSTED!not-for-mail
From: "R.e.m.e.K" <g...@d...null>
Subject: Re: jsp vs php
Newsgroups: pl.comp.programming
User-Agent: 40tude_Dialog/2.0.15.1pl
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
Sender: hell@heaven
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>
Date: Tue, 7 May 2013 09:21:55 +0200
Lines: 100
Message-ID: <5188ab94$0$1252$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 89-71-60-255.dynamic.chello.pl
X-Trace: 1367911316 unt-rea-a-02.news.neostrada.pl 1252 89.71.60.255:50771
X-Complaints-To: a...@n...neostrada.pl
Xref: news-archive.icm.edu.pl pl.comp.programming:203188
[ ukryj nagłówki ]Dnia Mon, 6 May 2013 16:48:09 -0700 (PDT), M.M. napisał(a):
>> Ogolna zasada budowy plikow bazy danych jest taka, ze plik jest zbudowany ze
>> stron, kazda taka strona ma okreslony rozmiar i jest alokowana w chwili, gdy
>> poprzednia strona sie "skonczy".
> Nie wiem, ale nie sadze aby bazy dane nie oferowaly lepszych mozliwosci - co
> akurat w jakims stopniu przemawia przeciwko optymalizacji recznej :)
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.
> Wystarczy ze plik nie jest w ogromnej ilosci malych kawaleczkow.
> Gwarancja nie jest potrzebna, wystarczy ze prawdopodobienstwo
> fragmentacji jest znikome.
Ale jesli plik baza bedzie mial kilkadziesiat GB, to podejrzewam, ze nawet
najlepszy system plikow nie zagwarantuje, ze znajdzie taki obszar w jednym
kawalku.
>> a zapytan, tworzace plan
>> zapytania z uwzglednieniem indeksow (lub nawet tworzeniem ich w locie w
>> razie potrzeby, jak umie czynic to MS SQL) i "inteligentnych" zlaczen.
> Cos widzialem, kiedys od przypadku nawet korzystalem z jakiegos.
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.
>> Nie no.. oczywiscie. Ale nie o to mi chodzilo. Chodzilo mi o zrobienia
>> enginu analogicznego do RDBMS, czyli takich "plikow CSV" i ich obslugi, ze
>> mozesz dodawac miliony nowych wpisow w dowolnej kolejnosci do dowolnych
>> plikow,
> Moze by sie dalo, ale chodzi wlasnie o to, aby nie robic w pelni
> funkcjonalnej bazy danych, tylko baze bardzo specjalistyczna i
> duzo szybsza.
Ale jesli nie bedzie read-only to stopien komplikacji wlasnego rozwiazania
rosnie ogromnie.
>> Ale czekaj... co znaczy "Potem zapisz wyniki zapytania w pliku, w postaci
>> liniowych rekordów. Ostatecznie zmierz czas odczytania tego pliku"? Czyli
>> RDBMS odwali cala robote z szukaniem, a potem mam mierzyc wczytanie pliku
>> textowego z wynikami i to porownywac z baza?? Cos mi tu nie halo.
> Chodzilo o cos innego, ale tak jak napisales czasami tez mozna zrobic.
> Trzymamy dane w bazie i korzystamy z zalet bazy. Raz na dobe wyciagamy
> dane z bazy do plikow tekstowych. Uzytkownikom podajemy dane lekko
> zdeaktualizowane, ale z plikow liniowych, bez wykonywania kosztownych zlaczen.
Do tego mozna takze uzyc serwera SQL. Raz na dobe zrobic nim widok i go
zmaterializowac (materialized view). Efekt bedzie podobny, a roboty ZERO.
>> Lub w sprzyjajacych warunkach (zalezy od rodzaju danych) odczytac dane
>> bezposrednio z indeksu (to tez "w locie i po cichu" potrafia dobre RDBMS).
> Ale to chyba tylko gdy chcemy dane z jednej kolumny? W przeciwnym razie to
> by oznaczalo wlasnie taka mozliwosc o jaka pytalem, czyli sekwencyjne
> ulozenie potrzebnych danych.
E, czemu tylko jedna kolumne? Indeks moze obejmowac kilka kolumn.
>> To jeden z
>> fundamentow wydajnosci. Nawet cale bazy potrafia trzymac jak maja odpowiedni
>> sprzet (czyt. kupe ramu).
> Zgoda, ale w specjalistycznym przypadku programista moze lepiej wiedziec
> ktore dane i w jaki sposob buforowac w RAM.
Wiedziec a to zrobic to przepasc liczona w setkach roboczogodzin ;-)
>> Zycze Ci oczywiscie sukcesow, ale imho skupiasz energie w zlym miejscu. Lub
>> moze inaczej, warto sie tym zajmowac wtedy, gdy wszystko inne bedzie
>> stuningowane na maksa.
> Nie wiem czy w zlym miejscu. Licze ile kosztuje sprzet, ile reklamy, ile
> praca... Do tego moj klient twierdzi ze 10tys uzytykownikow to jest nic...
> Patrze na czasy zapytan i widze to 2 sekundy, to 10 sekund, czasami nawet
> ponad 100 sekund...
No i dochodzimy do meritum. Jesli zapytania wykonuja sie po kilkadziesiat
sekund to (zaznacz wlasciwe pola):
- masz spieprzona strukture logiczna bazy
- nie korzystasz prawidlowo z indeksow
- piszesz zle zapytania SQL
- uzywasz produktu serweropodobnego
- wyciagasz w wyniku miliony rekordow wraz z polami typu blob i podsystem
dyskowy nie wyrabia
>> Chodzilo mi tu o dobra, przemyslana strukture tabel i indeksow. Do
>> zarzadzania plikami serwer uzywa inzynierow swojego producenta ;-)
> No ale mnie to boli pomimo przemyslanych struktur tabel i indeksow :)
Ale wlasnie, czy aby na pewno sa one przemyslane? Czy struktura jest
znormalizowana? A jesli tak to moze zbyt znormalizowana? 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.
--
pozdro
R.e.m.e.K
Następne wpisy z tego wątku
- 07.05.13 09:23 firr kenobi
- 07.05.13 11:56 Piotr Chamera
- 07.05.13 14:51 firr kenobi
- 07.05.13 15:02 Michal Kleczek
- 07.05.13 18:02 M.M.
- 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
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-12-12 Warszawa => Administrator Bezpieczeństwa IT <=
- 2024-12-12 Ostrów Wielkopolski => Trener zespołu sprzedaży Call Center <=
- 2024-12-12 Kraków => Key Account Manager <=
- 2024-12-11 SEP 1 kV E
- 2024-12-11 DNS restrictions are on
- 2024-12-11 wielkie bu
- 2024-12-11 Białystok => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-11 Aku LiPo źródło dostaw - ktoś poleci ?
- 2024-12-11 Warszawa => Specjalista Bezpieczeństwa Informacji <=
- 2024-12-11 Wrocław => Application Security Engineer <=
- 2024-12-11 Warszawa => Analyst in the Trade Development department (experience wi
- 2024-12-11 Lublin => Programista Delphi <=
- 2024-12-11 Motodziennik #305 Nowy ELEKTRYK za 350 złotych miesięcznie? Kreatywne kredytowanie problemów
- 2024-12-11 Warszawa => Spedytor Międzynarodowy <=
- 2024-12-11 Katowice => Key Account Manager (ERP) <=