Article View: pl.comp.bazy-danych
Article #194728Re: Relacje w praktyce
From: M.M.
Date: Sat, 12 Dec 2015 22:27
Date: Sat, 12 Dec 2015 22:27
85 lines
5794 bytes
5794 bytes
On Saturday, December 12, 2015 at 10:01:33 PM UTC+1, szemrany wrote: > 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. Nie nie. Masz dwa zapytania. Jedno 'zwykłe' drugie 'zoptymalizowane' Odpalasz na jednym sprzęcie: zoptymalizowane działa 10 razy szybciej. Na drugim sprzęcie: zoptymalizowane działa 3 razy szybciej. Sprzęt ma duży wpływ na to 'ile razy będzie szybciej'. > Pisząc o "innych rozwiązaniach" miałem na myśli inaczej zbudowany SQL > (select), Tak właśnie zrozumiałem. > 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. Trochę rozumiem, trochę się domyślam... Szczegółów na pewno nie rozumiem. Warto rozumieć szczegóły? Jeśli masz ochotę, chętnie zobaczę Twoje zapytanie vs moje i uzasadnienie dlaczego Twoje nie zabije serwera. Może warto się czegoś nauczyć, ale póki co, dla mnie baza sql to czarna skrzynka, która ma dobrze działać. > > 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. Ja z kolei zmierzałem do tego, że bezcelowe jest mówienie o przyspieszeniu np. 100-krotnym, bez uwzględnienia sprzętu :) > > 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. Tak myślałem że to masz na myśli, nie mam bladego pojęcia, jakie jest uzasadnienie, że Twoja wersja zyskuje potwornie na wydajności. Powiem więcej, w pewnym momencie wyrzuciłem z pamięci swoje doświadczenia z optymalizacji zapytań, bo mialem sprzeczne wyniki testów, albo wyniki były bardzo wrażliwe na ilość danych i architekturę bazy. Uznałem że lepiej bazę traktować jako czarną skrzynkę. > 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). Cóż, nie rozumiem za wiele z tego. W każdej bazie ustawia się pamięć na bufor. Ba, każdy system plików może być buforowany przez system operacyjny. Ba, każdy dysk może mieć swój bufor, a i kontroler dysku może mieć swój bufor. Piszesz o jakimś jednym buforze w jednej konkretnej bazie - ja nie wiem dlaczego warto się tym zainteresować. Pozdrawiam
Technical Details
Message-ID:
<838ea62c-a064-4813-a306-89cae558db5b@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!mv3no15326383igc.0!news-out.google.com!l1ni1425igd.0!nntp.google.com!mv3no11762204igc.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<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> <izzsm6fj3oc5$.1huqgrqsag8ft$.dlg@40tude.net>Show Full Headers
Complete Article Headers
X-Received: by 10.182.19.164 with SMTP id g4mr21353615obe.42.1449959230327; Sat, 12 Dec 2015 14:27:10 -0800 (PST) X-Received: by 10.183.3.102 with SMTP id bv6mr130708obd.14.1449959230303; Sat, 12 Dec 2015 14:27:10 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!mv3no15326383igc.0!news-out.google.com!l1ni1425igd.0!nntp.google.com!mv3no11762204igc.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.bazy-danych Date: Sat, 12 Dec 2015 14:27:09 -0800 (PST) In-Reply-To: <izzsm6fj3oc5$.1huqgrqsag8ft$.dlg@40tude.net> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=77.254.47.3; posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj NNTP-Posting-Host: 77.254.47.3 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> <izzsm6fj3oc5$.1huqgrqsag8ft$.dlg@40tude.net> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <838ea62c-a064-4813-a306-89cae558db5b@googlegroups.com> Subject: Re: Relacje w praktyce From: "M.M." <mmarszik@gmail.com> Injection-Date: Sat, 12 Dec 2015 22:27:10 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit