🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.bazy-danych
Article #194727

Re: Relacje w praktyce

#194727
From: szemrany
Date: Sat, 12 Dec 2015 21:01
61 lines
4235 bytes
On Sat, 12 Dec 2015 10:52:51 -0800 (PST), M.M. wrote:

>>> mechanizmu niż indeksy, to inne rozwiązanie też będzie zabójcze.
>>> Wyszukiwanie przez index hash jest bardzo szybkie, więc inne rozwiązania
>>> będą szybsze maksymalnie 3-4 razy i to tylko na silnikach które mają
>>> coś lepszego niż indeksy.
>> 
>> Inne rozwiązania będą szybsze setki razy :-)
> Analiza jest skomplikowana. Na czas zapytania składa się kilka czynników:
> 1) Transfer danych
> 2) Parsowanie zapytania
> 3) Optymalizowanie i sposób wykonania.
> 4) Dostępy do danych w buforze ram
> 5) Dostępy do danych na dysku
> 6) Odczyty danych z dysku.

Ok, ok, ale... to wszystko bez znaczenia, bo występuje w każdym wypadku.
Pisząc o "innych rozwiązaniach" miałem na myśli inaczej zbudowany SQL
(select), niż to co pokazałeś. Bo albo ja nie rozumiem co masz na myśli,
albo Ty nie rozumiesz jak serwer tego typu zapytanie wykonuje.

> Jeden dysk (SSD) ma 100tys dostępów na sekundę, drugi tylko 100. Każda
> strategia na każdym dysku da inne przyspieszenie.

Mówimy cały czas o jednym i niezmiennym środowisku, porównywanie wydajności
rozwiązania na różnym hardware jest bezcelowe i bezowocne.
 
> Spójrzmy skrótowo. Dostęp do danych zaindeksowanych wymaga 3-4 odczytow z
> dysku. Dostęp optymalny wymaga jednego odczytu. Czyli teoretycznie można
> przyspieszyć nie więcej niż 3-4 razy. A jeśli optymalizator opracuje
> tak kosztowny plan wykonania że faktycznie można przyspieszyć setki
> razy, to mi ręce opadają i używam innego rozwiązania.

Chodziło o zwykłe:

select L.imie, L.Nazwisko, count(z.id) as liczba_samochodow from Ludzie L
join zasoby z on z.id_1 = L.id
join samochody s on s.id = z.id_2 
group by L.imie, L.nazwisko
 
Tylko dzięki takiej budowie zapytania (w przeciwieństwie do Twojego)
zyskujesz potwornie na wydajności. 

>> PS. oczywiście mogę nie wiedzieć, że istnieje serwer SQL, który zrozumie co
>> autor miał na myśli i wykona to zapytanie zupełnie inaczej niż autor mu
>> kazał.
> Od tego jest optymalizator, żeby zrobić tę robotę za autora. Dopracujesz
> szczegóły, baza zmieni zawartość i architekturę i znowu będziesz dopracowywał?
> To ja wolę dopracować np. w C++.

No wiesz, nie wszystko się da jednak zoptymalizować. Programista też musi
myśleć. Doczytałem, że Oracle coś tam umie keszować przy zapytaniu tego
typu jaki zaprezentowałeś (nazywają to scalar subquery), ale warunkiem jest
powtarzalność rekordów z tabeli bazowej (tu: Ludzie), a to nie zawsze jest
spełniony warunek (tu nie jest).

-- 
howgh
szemrany
"Trzeba z żywymi naprzód iść, po życie sięgać nowe,
a nie w uwiędłych laurów liść z uporem stroić głowę"
Technical Details
Message-ID: <izzsm6fj3oc5$.1huqgrqsag8ft$.dlg@40tude.net>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin3!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <1wybpc8c36lsd$.1fen7ule9h1jh$.dlg@40tude.net> <6afe3f6d-b8e9-46af-a682-e1f741c1de22@googlegroups.com> <n4e4mk$sr7$1@usenet.news.interia.pl> <df04af2d-5b69-4906-a05e-ce9bf9af9b07@googlegroups.com> <1tjc7yjmiqguh.11krnzpakf6ri$.dlg@40tude.net> <b79ad5ec-846e-43f5-accf-6eb2f699101d@googlegroups.com> <nk4lort1sib1.kctbavh9wc3g.dlg@40tude.net> <03a7d4b6-93fc-4411-a16b-d09b01180800@googlegroups.com> <6l5i9ybjsi0b$.1dg8u6yw4z4jz$.dlg@40tude.net> <0a73ecf6-e077-41a9-8b13-8334ef196d00@googlegroups.com> <l5s51r5k1n8r$.1c55652qehijb$.dlg@40tude.net> <deab76ac-dc90-41a5-b160-4ab93cbef450@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin3!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
From: szemrany <szemrany@offline.off>
Subject: Re: Relacje w praktyce
Newsgroups: pl.comp.bazy-danych
User-Agent: 40tude_Dialog/2.0.15.84
MIME-Version: 1.0
Sender: no@please.no
References: <1wybpc8c36lsd$.1fen7ule9h1jh$.dlg@40tude.net> <6afe3f6d-b8e9-46af-a682-e1f741c1de22@googlegroups.com> <n4e4mk$sr7$1@usenet.news.interia.pl> <df04af2d-5b69-4906-a05e-ce9bf9af9b07@googlegroups.com> <1tjc7yjmiqguh.11krnzpakf6ri$.dlg@40tude.net> <b79ad5ec-846e-43f5-accf-6eb2f699101d@googlegroups.com> <nk4lort1sib1.kctbavh9wc3g.dlg@40tude.net> <03a7d4b6-93fc-4411-a16b-d09b01180800@googlegroups.com> <6l5i9ybjsi0b$.1dg8u6yw4z4jz$.dlg@40tude.net> <0a73ecf6-e077-41a9-8b13-8334ef196d00@googlegroups.com> <l5s51r5k1n8r$.1c55652qehijb$.dlg@40tude.net> <deab76ac-dc90-41a5-b160-4ab93cbef450@googlegroups.com>
Date: Sat, 12 Dec 2015 22:01:30 +0100
Message-ID: <izzsm6fj3oc5$.1huqgrqsag8ft$.dlg@40tude.net>
Lines: 61
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 89-71-60-55.dynamic.chello.pl
X-Trace: 1449954090 unt-rea-b-01.news.neostrada.pl 652 89.71.60.55:3902
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit