abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 23:11 | IT novinky

    3D tiskárny Original Prusa MK4S (a MK4) v kombinaci s Prusamenty PLA a PETG mají mezinárodně uznávanou certifikaci UL 2904 GREENGUARD, která potvrzuje splnění přísných bezpečnostních standardů pro VOC a UFP.

    Ladislav Hagara | Komentářů: 0
    včera 22:11 | Nová verze

    Byla vydána verze R1/beta5 open source operačního systému Haiku (Wikipedie). Přehled novinek i s náhledy v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 2
    včera 16:33 | Komunita

    Sovereign Tech Fund (Wikipedie), tj. program financování otevřeného softwaru německým ministerstvem hospodářství a ochrany klimatu, podpoří Sambu částkou 688 800 eur.

    Ladislav Hagara | Komentářů: 5
    včera 13:11 | IT novinky

    Společnost OpenAI představila novou řadu svých AI modelů OpenAI o1 navržených tak, aby "strávily více času přemýšlením, než zareagují". Videoukázky na 𝕏 nebo YouTube.

    Ladislav Hagara | Komentářů: 0
    včera 12:55 | Pozvánky

    Sailathon 24, tj. hackathon mobilního operačního systému Sailfish OS, proběhne od 27. do 30. září v Praze na Strahově ve školícím centru Silicon Hill.

    Ladislav Hagara | Komentářů: 0
    včera 01:11 | Nová verze

    Bylo vydáno Ubuntu 22.04.5 LTS, tj. páté opravné vydání Ubuntu 22.04 LTS s kódovým názvem Jammy Jellyfish. Stejně tak Kubuntu 22.04.5 LTS, Ubuntu Budgie 22.04.5 LTS, Ubuntu MATE 22.04.5 LTS, Lubuntu 22.04.5 LTS, Ubuntu Kylin 22.04.5 LTS, Ubuntu Studio 22.04.5 LTS a Xubuntu 22.04.5 LTS.

    Ladislav Hagara | Komentářů: 0
    12.9. 22:55 | Zajímavý článek Ladislav Hagara | Komentářů: 0
    12.9. 22:33 | Nová verze

    Byla vydána nová verze 8.7 multiplatformní digitální pracovní stanice pro práci s audiem (DAW) Ardour. Přehled oprav, vylepšení a novinek v oficiálním oznámení.

    Ladislav Hagara | Komentářů: 0
    12.9. 22:11 | IT novinky

    Společnost Juno Computers prodávající počítače s předinstalovaným Linuxem má nově v nabídce linuxový tablet Juno Tab 3. Na výběr je Mobian Phosh, Ubuntu 24.04 (GNOME) a Kubuntu 24.04 (KDE Plasma). Cena začíná na 699 dolarech.

    Ladislav Hagara | Komentářů: 0
    12.9. 21:33 | Nová verze

    VirtualBox, tj. multiplatformní virtualizační software, byl vydán v nové verzi 7.1. Přehled novinek v Changelogu. Přináší modernizovaný vzhled a ovládání. Přepínat se lze mezi základním a rozšířeným uživatelským rozhraním. NAT nově podporuje IPv6. Linuxový hostitel a host mohou sdílet schránku na Waylandu.

    Ladislav Hagara | Komentářů: 0
    Rozcestník

    Dotaz: MySQL - vysoké i/o zatížení s InnoDB?

    23.9.2009 08:58 Leinad
    MySQL - vysoké i/o zatížení s InnoDB?
    Přečteno: 866×

    Mám na netu jednu PHP webovou aplikaci, která má dlouhodobě problémy s rychlostí pravděpodobně kvůli ne ideálně udělané databázi a SQL dotazů na ni. Často jede rychle, často se ale taky stává, že se na půl minuty zasekne.

    Z logů slow_query. Velké množství dotazů, které překročil čas 5 vteřin vykonování (často i přes 30s) byl mezi jinými jednoduchý update. Konkrétně dotazy typu
    UPDATE statistika SET doba_online = doba_online + '7' WHERE jmeno = 'Leinad'
    Tabulka "statistika" má kromě pár dalších sloupců sloupce "jmeno", který je VARCHAR a index a "doba_online", který je TIME. Tato tabulka slouží pro logování, jaký čas daný uživatel strávil na webu, takže dotaz se provádí každým kliknutím uživatele. TAbulka je InnoDB a má cca 300 řádků.

    Zkusil jsem přehodit tabulku na engine MyISAM a už se tyto dotazy v logách slow_query neobjevují. Mám podezření, že InnoDB má vyšší režii na disk. Jedu na virtuálním serveru a když jsem se chvíli koukal na "top", tak jsem viděl často vyskočit hodnotu %wa až na 100%.

     

    Je možné, že InnoDB má až tak moc velkou režii proti MyISAM? Četl jsem, že má vyšší (kvůli transakcím), ale nedovedl jsem si nikdy představit, že by to takhle mohlo zlikvidovat výkon... Nemáte nějaký tip, co s tím?
    (Rada dát všechny tabulky na MyISAM znemožní použití transakcí u dotazů, kde se to hodí. Rada dát část tabulek do MyISAM a zbytek nechat na InnoDB by asi pomohla zvýšit rychlost, ovšem zbývající dotazy typu UPDATE a INSERT budou stále dělat problémy, jen jich bude méně...)

    MySQL verze "5.0.32-Debian_7etch3-log".

     

    Pozn.: Očekávám kritiku návrhu tabulky, kdy není ideální použití pro index tabulky typu VARCHAR. Vím to, ale nemyslím si, že má cenu se pouštět do opravy, když to můj problém stejně nevyřeší.

    Odpovědi

    23.9.2009 10:15 x22
    Rozbalit Rozbalit vše Re: MySQL - vysoké i/o zatížení s InnoDB?
    Vela % I/O-wait (WA v tope) je pri databazi a web aplikacii celkom normalne.

    Co by tam robilo I/O 5s v takomto dotaze na 300 riadkovej tabulke? Ten dotaz IO nerobi asi vobec, lebo cela tabulka bude v cache, ked sa tak casto pouziva. CPU tiez nema co robit 5s, takze to bude asi nejake zamykanie.

    Ked sa podobny dotaz robi casto, tak tych updatov v jednej tabulke moze byt dost naraz. Ak su pripadne v dlhsich transakciach, tak to moze vadit.

    23.9.2009 11:58 Leinad
    Rozbalit Rozbalit vše Re: MySQL - vysoké i/o zatížení s InnoDB?

    Nevyužívá se cache databáze při dotazech typu SELECT, nikoliv UPDATE?
     

    Zamykání by tam být u tohoto dotazu nemělo. Ta "statistika" je hlavně UPDATEována přihlášeným člověkem, málokdy jiným uživatelem. Tj. nemělo by tam být žádné čekání na zámek. V logu slow_query se psalo navíc u těch dotazů "Lock_time: 0", jen parametr  "Query_time:" je vysoký...

    23.9.2009 18:04 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: MySQL - vysoké i/o zatížení s InnoDB?
    Samotný dotaz je dost neškodný, spíš by to chtělo vědět, v jakém kontextu se vykonává. Podle popisu problému se čeká na disk. InnoDB narozdíl od MyISAM synchronizuje commity transakcí na disk, aby po pádu serveru byla DB konzistentní. Doporučuju se podívat na několik věcí:
    1. Pokud se vykonává několik SQL zápisů (insert, update, delete) najednou, obalit je do begin...commit, aby se to zapsalo jen jednou a ne po každém příkazu
    2. Pokud máte hodně paralelních zápisů najednou tak si holt musíte počkat, až se všechny vyřídí, nebo koupit diskový pole, lepší řadič, nebo použít jinou technologii (myisam nebo memory table pokud Vám nejde o integritu po pádu)
    3. Případně lze použít nežurnálovací filesystem pro oddíl s databází (nebo přímo prázdné místo na disku), jelikož integritu dat řeší InnoDB sama o sobě
    4. Pokud jste ve VM, platí výše zmíněná rada tuplem: pokuste se pro oddíl s databází virtuálního stroje přidělit oddíl na disku hostitele, a ne soubor přes loopback (nedejbože na žurnálovacím FS)
    5. Některé SQL aplikace jsou navyklé kvůli MyISAM použít LOCK TABLES, pokud se tam něco takového vyskytuje, tak by stálo za to to přepsat do transakcí
    Co se týče indexů, tak to je asi v tuto chvíli méně tíživý problém. VARCHAR by vadit nemusel, ale zrovna tak můžete indexovat např. jen podle prvních 20 znaků toho pole... pro nějakou lepší radu by to chtělo vidět schema a typické dotazy (SELECTy).

    In Ada the typical infinite loop would normally be terminated by detonation.
    23.9.2009 18:05 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: MySQL - vysoké i/o zatížení s InnoDB?
    PS. ještě bych dodal k těm žurnálovacím FS, že ext3 je v tomto případě nejhorší možná volba (např. proti XFS), protože fsync() na soubor s databází sesynchronizuje zápisy do všech souborů v systému, ne pouze do jednoho :(
    In Ada the typical infinite loop would normally be terminated by detonation.
    23.9.2009 22:03 Leinad
    Rozbalit Rozbalit vše Re: MySQL - vysoké i/o zatížení s InnoDB?

    Tak problém zdá se vyřešen. Zvýšení innodb_buffer_pool_size. Byl nastaven standardně na 8MB. Databázi jsem měl (hlavně asi díky fórám a logováním) velkou 30MB, takže velké tabulky s fórem zdá se vyhazovaly tabulky jako "statistika", do které se každým klikem uživatele zapisovalo. A přepnutí na MyISAM fungovalo zdá se proto, že má možná vlastní jiný parametr cache (ehm, jen domněnka).

     

    Díky tedy za rady a omlouvám se, že jsem si dostatečně neprohledal web předem. Resp. googlil jsem před podáním dotazu tady na fóru a našel jsem, že cache ovlivňuje rychlost DB, ale našel jsem jen články o cache využívanou při dotazech typu SELECT, narazil jsem na rady ohledně indexů, atd., ale to že tam je ještě další cache pro celé tabulky jsem zjistil bohužel až teď. No, tak snad tato diskuse pomůže v budoucnu někomu dalšímu, kdo se s tímto problémem setká.

    Jinak, ten článek, co mi pomohl, byl na adrese <a href="http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/">http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/</a>

     

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.