Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



mysql benchmark

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: mysql benchmark

Autor: Maaartin

20:30:15 30.11.2011

> [ital]jak mám tedy zjistit, jak dlouho trvá průměrne SELECT ???[/ital]

Nijak. Zadny takovy mereni nema smysl. Bud to bude v nacachovany pameti a bude to hooodne rychly (nanosekundy pro nacteni a rekneme microsekundova latence) nebo to bude na disku a bude to par milisekund, pripadne bude potreba predtim natahnout i data pro index a kazdy pristup na disk bude dalsich par milisekund. Nebo to pojede z SSD a bude to o dost rychlejsi.

V aplikace se to bude chovat uplne jinak: Prvni takovy dotaz muze natahnout potrebny data a druhy byt nekolikaradove rychlejsi. Pak muze naky nesouvisejici narocny dotaz vyhodit tvoje data z cache a pojede to sfinsky pomalu. Navic budes pouzivat mnohem slozitejsi selekty kde bude zalezet na tom co DB umi zoptimalovat a jestli ma vsecky indexy co potrebuje.

V kazdym pripade ty hausnumery co meris nepouzijes.

> [ital]Jeste bys mohl zkusit pouzit parametrizovany dotaz, jestli to tady jde[/ital]

Tohle bych testoval z programu kde to samozrejme jde. Bez nej taky:
http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html

Citovat příspěvek

 

Re: mysql benchmark

Autor: Mi.Chal

19:31:03 30.11.2011

pití Napsal:
-------------------------------------------------------
> důvod je
> EXPLAIN SELECT id FROM bench WHERE id =
> round(RAND() * 1000000) LIMIT 1
> >>> id není definováno jako CONST takže
> se nepoužívá primární index

proc by to melo byt konstantni? pri vyhodnoceni tam snad jde konkretni hodnota, takze proc by to melo vadit? U Parodie me to ale moc neprekvapuje. Jeste bys mohl zkusit pouzit parametrizovany dotaz, jestli to tady jde

> jenže pokud mu dám bench s konkrétním číslem...
> tak se přeci do cache uloží výsledek hned při
> prvním spuštění a výsledek bench je pak fraška

obecne se toho cachuje spousta, takze prvni provedeni sql dotazu bude vzdycky pomalejsi nez ty dalsi i kdyz pouzijes jine parametry

> jak mám tedy zjistit, jak dlouho trvá průměrne
> SELECT ???

tak jeste tam ty dotazy muzes posilat z aplikace a merit si to sam

Citovat příspěvek

 

mysql benchmark

Autor: pití

9:11:53 30.11.2011

nepochopil jsem udělat "funkční benchmark" nad mysql


když spustím
BENCHMARK(100, SELECT id FROM bench WHERE id = round(RAND() * 1000000) LIMIT 1)

tak výsledek bude něco kolem 120 sekund

důvod je
EXPLAIN SELECT id FROM bench WHERE id = round(RAND() * 1000000) LIMIT 1
>>> id není definováno jako CONST takže se nepoužívá primární index

a je to pravda
SELECT id FROM bench WHERE id = round(RAND() * 1000000) LIMIT 1
trvá od 0,5 do 1 sekundy (tabulka má milion řádků)

zatímco když se zeptám na
SELECT id FROM bench WHERE id = 464578 LIMIT 1
trvá 0,0005

rovněž SELECT round(RAND() * 1000000)
trvá 0,0005

jenže pokud mu dám bench s konkrétním číslem... tak se přeci do cache uloží výsledek hned při prvním spuštění a výsledek bench je pak fraška

právě proto jsem mu tam dal random, aby se pokaždé musel hledat jiný záznam

jak mám tedy zjistit, jak dlouho trvá průměrne SELECT ???

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: