abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:44 | Nová verze

    OpenCV (Open Source Computer Vision, Wikipedie), tj. open source multiplatformní knihovna pro zpracování obrazu a počítačové vidění, byla vydána v nové major verzi 5.

    Ladislav Hagara | Komentářů: 0
    5.6. 22:22 | Nová verze

    Byla vydána nová verze 9.7 multiplatformní digitální pracovní stanice pro práci s audiem (DAW) Ardour. Přehled novinek, vylepšení a oprav v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    5.6. 18:22 | Komunita

    Vývojáři webového prohlížeče Ladybird dnes oznámili, že mění způsob vývoje. S blížícím se vydáním alfa verze přestávají přijímat veřejné pull requesty. Všechny otevřené veřejné pull requesty budou uzavřeny. Tým nedokáže garantovat bezpečnost AI generovaných pull requestů.

    Ladislav Hagara | Komentářů: 2
    5.6. 17:33 | Zajímavý software

    OpenLogi (GitHub) je open source náhrada aplikace Logi Options+ pro přizpůsobení myší od společnosti Logitech. Zatím běží pouze na macOS.

    Ladislav Hagara | Komentářů: 1
    5.6. 04:33 | Nová verze

    Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za květen (YouTube).

    Ladislav Hagara | Komentářů: 9
    4.6. 11:22 | Bezpečnostní upozornění

    Úřad pro ochranu osobních údajů řeší desítky stížností na jednotné měsíční hlášení zaměstnavatele, které stát spustil počátkem dubna. Systém, jenž má firmám odlehčit od desítek formulářů, nejenže výrazně zatížil jejich účetní oddělení, ale docházelo v něm i k únikům osobních dat zaměstnanců k firmám, kde nepracovali. Podle ministerstva práce a sociálních věcí stála za problémem technická chyba. „Incident se týkal několika stovek

    … více »
    Ladislav Hagara | Komentářů: 23
    4.6. 10:46 | Nová verze

    Byla vydána (𝕏, Bluesky) nová verze 22.0.0 open source webového aplikačního frameworku Angular (Wikipedie). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    4.6. 04:33 | Nová verze

    Vim Classic byl vydán ve verzi 8.3. Drew DeVault oznámil tento fork editoru Vim (verze 8.2.0148, tj. těsně před zavedením Vim9 skriptování) v březnu letošního roku. Důvodem forku bylo, že vývojáři editorů Vim a Neovim začali při vývoji využívat LLM.

    Ladislav Hagara | Komentářů: 7
    4.6. 03:44 | Komunita

    Open source konference DevConf.CZ 2026 proběhne 18. a 19. června v Brně na FIT VUT. Publikován byl program a spuštěna byla registrace.

    Ladislav Hagara | Komentářů: 1
    3.6. 19:44 | Nová verze

    Společnost JetBrains uvolnila verzi 2 svého open-source velkého jazykového modelu (LLM) pro vývojáře Mellum.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (12%)
     (8%)
     (2%)
     (15%)
     (31%)
     (3%)
     (6%)
     (3%)
     (15%)
     (26%)
    Celkem 1846 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    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: 938×

    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.