Posted By: medved (A~z na v~eky Mikov~ce.) on 'CZdatabases'
Title: Re: rychlost vyhledavani v DB
Date: Tue Nov 12 22:32:50 2002
Takze pokud bych chtel vyresit tuto ulohu co nejrychleji tak,
1) vybodnu se na velke databazove servery - ty jsou delany pro prostredi kde
je a) vice soucasnych uzivatelu kteri b) delaji v databazi ruzne operace
(nejen vyber jednoho zaznamu)
2) podival bych se po nejake "in memory" databazi. V databazovych systemech je
vzdy nejvetsi zdrzeni pri cteni z disku
3) pripadne bych vytvoril neco sam s tim, ze bych:
a) pouzival b-tree strom jako index nad prohledavanym sloupcem
b) pouzil neco jako clustered index v Sybase/MS SQL - listy indexu jsou
zaroven stranky s daty
c) vhodne zvolil velikost pametove stranky - asi tak, aby byla stejne velika
jako jeden zaznam - ale zase vzhledem k velikosti celych dat (a tim i indexu)
a indexovaneho klice - pametova stranka indexu obsahuje hodnoty klice a odkaz
na dalsi stranku indexu.
a d) zmyslel se nad moznou kompresi dat v pameti nebo vhodnou volbou kodovani
dat. Existuji systemy s asymetrickymi kody ("e" ma min bitu nez "j"), ktere
docela minimalizuji pametove naroky (napr. na text). Ale pak je to otazka
vyvazovani pamet vs CPU...
A ted proc doporucuji vyse uvedene:
Vsechny velke db servery prohravaji s malymi databazemi v situaci s jednim
uzivatelem, ktery dela pouze jeden typ operaci. To protoze delajki jeste
celou radu pro tento konkretni ucel nepotrebnych ukonu. Napriklad
optimalizace dotazu - pokud je jen jednoho typu, je to zbytecne. Nebo rizeni
viceuzivatelskeho pristupu - zamky, transakce opet zbytecne.
To jsou veci, ktere jsou potreba u "enterprise" reseni, kde je dobre pokud je
uzivateluv dotaz optimalizovan i podle aktualne probihajicich dotazu ostanich
uzivatelu.
Bye
Medved
No matter where you go, everyone is connected.