Optimalizace chodu MySQL (velká tabulka - SELECT dotaz freezne server) – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Optimalizace chodu MySQL (velká tabulka - SELECT dotaz freezne server) – MySQL – Fórum – Programujte.comOptimalizace chodu MySQL (velká tabulka - SELECT dotaz freezne server) – MySQL – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Tomáš
~ Anonymní uživatel
511 příspěvků
10. 3. 2012   #1
-
0
-

Ahoj , mám problém s jednou tabulku v mé mysql databázi.

Nejdříve vás s ní seznámím :) Pokud na něco zapomenu klidně si o to napište

Jde o typ MyISAM nachází se v ní celkem 8GB dat , na 70 milionech řádcích. Tady výpis využití indexů :

Data 2 511.0 MiB
Index 5 154.0 MiB -  má hodně indexů i když není rozáshlá
Celkem 7 665.0 MiB

Použití tabulky je dost časté jedná se především o inserty , problém nastává když chci udělat select podle dejme tomu 3 indexů LIMIT 0,50, phpmyadmin a deamon hry (tabulku používá hra k ukládání změn) úplně zamrzne a po chvíli  se zas rozjede. Je to nepříjemné, protože pracuji na rozhraní web <-> hra a při každém dotazu z webu se mi freezuje deamon hry. Je možnost i změnit nastavení MySQL vše běží na samostatném stroji. Uvažoval jsem například o zvětšení paměti k dispozici, ale do téhle úpravy bych se rád pustil až po konzultaci s někým kdo mi odpoví.

Děkuji

Nahlásit jako SPAM
IP: 82.99.191.–
Reklama
Reklama
KIIV+42
God of flame
10. 3. 2012   #2
-
0
-

dotazy nad takovejma tabulkama stoji hodne at uz sou indexy nebo ne...

teoreticky muzes zvetsit limity pro vyuziti ram tj. kdyz budes mit masinu se 64GB RAM nema cenu skudlit pro MySQL

nejhorsi dotazy nad takovou databazi sou vlastne veskery slozitejsi selecty, mazani starych zaznamu a tak ( a vlastne cokoliv co zamkne tabulku!! )

otazkou jest - hodi se na to zrovna sql databaze?  Neslo by to prekopat aby z toho nebyl takovy moloch? Ale neznam co se tam uklada a co se potrebuje hledat tudiz nemuzu rici co by se s tim mohlo delat...

Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Curo
~ Šéfredaktor
+8
Hero
12. 3. 2012   #3
-
0
-

Proč MyISAM a ne InnoDB? Nezamyká celou tabulku při insertu/updatu a je výkonnější...

Pokud nad tím nevyhledáváš fulltextem, přepni ji na InnoDB + by to chtělo optimální indexy dle výběrových dotazů.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 188.95.127.–
Guitar Hero Master, Project führer & zdejší čaroděj.
Sleduj mě na twitteru – @lukaschury.
Tomáš
~ Anonymní uživatel
511 příspěvků
14. 3. 2012   #4
-
0
-

Děkuji za odpovědi. 

Abych zodpověděl dotazy tak : překopat to opravdu nemohu strukturu ani typ tabulky sem nenavrhoval, pro úpravu bych musel dekompilovat zdroják :( Ano s mazáním je ještě větší problém, tam při větším výmazu chroupala přes hodinu, pak jsem to vzdal a nastavil minutové mazaní cca po 2000 záznamech.

Rozdíly mezi myisam a innodb my jsou známy ovšem zatím se mi nechtělo šahat do navrhnuté tabulky od někoho jiného (za předpokladu, že tomu rozumí více jak já) ale přepnutí enginu by neměla aplikace nijak poznat předpokládám.

Na mysql opravdu škudlit nemusím mám k dispozici cca 24gb ram jen nevím přesně co nastavit kandidáti asi jsou query_cache_size , max_allowed_packet , key_buffer ?

Mysql je nastavená defaultně tuším (neinstaloval jsem jí já)

key_buffer  = 16M
max_allowed_packet = 32M
thread_stack  = 192K
thread_cache_size       = 8
query_cache_limit = 1M
query_cache_size        = 16M

Myslím si že zvýšit max_allowed_packet by mělo pomoci ?

Nahlásit jako SPAM
IP: 93.157.132.–
Curo
~ Šéfredaktor
+8
Hero
15. 3. 2012   #5
-
0
-

#4 Tomáš
Pokud nevyhledáváš nad tabulkou fulltextově, pak ji přepni na InnoDB (data to nezmění, vrátit to můžeš kdykoliv).

Dále se podívej, zdali není zbytečně moc indexů nad tabulkou - pak je zápis i mazání násobně pomalejší, protože se musí přestavět indexy.

Nahlásit jako SPAM
IP: 90.180.158.–
Guitar Hero Master, Project führer & zdejší čaroděj.
Sleduj mě na twitteru – @lukaschury.
Zdeny
~ Korektor
0
Grafoman
15. 3. 2012   #6
-
0
-

Jen taková drobnost k tomu přepnutí na InnoDB - ano, mohlo by to teoreticky pomoci, je ale třeba mít MySQL ideálně ve verzi 5.5. Ve starších verzích (pět a nižší) bys s přepnutím mohl ublížit. Bez znalosti struktury a způsobu zacházení s daty si ale netroufám odhadnout procentuální přínos, jestli by vůbec nějaký mohl být.

Nahlásit jako SPAM
IP: 89.102.32.–
www.devtea.cz | zdenekvecera.cz | @ZdenekVecera
Redaktor Programujte.com a Živě.cz
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 10 hostů

Podobná vlákna

Dotaz k prikazu SELECT — založil Honza

Optimalizace MySQL v prestashopu — založil ITSpares

MySQL - SELECT — založil Harvy

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý