Portál AbcLinuxu, 14. května 2025 05:25

Dotaz: Mysql cachovací tabulka a řazení dat neznámých typů

7.10.2010 01:56 mycache
Mysql cachovací tabulka a řazení dat neznámých typů
Přečteno: 454×
Odpovědět | Admin
Dobré ráno. Mám program v php který čte data z několika db. Jedná se vždy o data název:obsah. Protože to trvá celkem dlouho, tak bych si chtěl na lokálním mysql serveru v nějaké db vybudovat cache tabulku. Měla by mít asi takovouhle strukturu: klient | nazev | obsah | platnost. V té tabulce budu potřebovat i hledat a řadit. Sloupec obsah asi budu muset definovat jako varchar255 a může nabývat hodnot string, číslo, boolean apod. Asi to nebude moc efektivní na vyhledávání jestli to bude vůbec fungovat. Máte někdo nějaké návrhy na lepší strukturu cache?

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

7.10.2010 08:15 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Mysql cachovací tabulka a řazení dat neznámých typů
Odpovědět | | Sbalit | Link | Blokovat | Admin
Použijte raději nějakou opravdovou cache, např. Memcached.
8.10.2010 16:39 mycache
Rozbalit Rozbalit vše Re: Mysql cachovací tabulka a řazení dat neznámých typů
Díky, to vypadá velice zajímavě. Jestli jsem správně pochopil, tak to je serverová aplikace, ale nenašel jsem tam ale nikde jak se to chová v případě, že s tím pracuje více uživatelů (spuštěných php skriptů) najednou?
8.10.2010 17:08 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Mysql cachovací tabulka a řazení dat neznámých typů
Na konkurenční přístup je to připravené, keš se většinou používá v konkurenčním prostředí.
rADOn avatar 8.10.2010 19:37 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Mysql cachovací tabulka a řazení dat neznámých typů
Taktak, memcached je spravna cesta pokud nepotrebujes persistenci.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
9.10.2010 10:43 mycache
Rozbalit Rozbalit vše Re: Mysql cachovací tabulka a řazení dat neznámých typů
A co mám použít v php pro přístup k memcached: memcache nebo memcached? Našel jsem doporučení na memcache že je objektový ale vypadá to že ten druhý taky ...
AraxoN avatar 9.10.2010 13:18 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Mysql cachovací tabulka a řazení dat neznámých typů
Na začiatok je asi lepšie siahnuť po memcache. Je celkovo jednoduchší a má automatickú konverziu kľúča tak aby neobsahoval nepovolené znaky a nepresahoval povolenú dĺžku. Je jednoduchšie ho začať hneď používať, pretože robí to čo od neho neznalý človek intuitívne očakáva.
10.10.2010 13:39 mycache
Rozbalit Rozbalit vše Re: Mysql cachovací tabulka a řazení dat neznámých typů
Tak nakonec to vypadá že bude jednodušší ukládat do cache celé vygenerované web stránky. V tomhle případě bude asi výhodnější použít jako cache mysql tabulku, že? Ta nebude zabírat místo v RAM a nebude ani nutnost instalovat memcached backend,
Heron avatar 10.10.2010 15:00 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Mysql cachovací tabulka a řazení dat neznámých typů

Kolik zabírá jedna stránka a kolik počítáš, že jich bude v cache? Každá stránka má nejaký time to live a s tím umí memcached pracovat (a automaticky zahazovat záznamy s vypršeným TTL). Také není nutné mít ty stránky v cache všechny. Pokud se použije správná logika zahazování, tak ti tam zůstanou pouze nejvíce navštěvované stránky.

Navíc, je to cache, takže pokud se daná stránka nenajde v ní, tak se vygeneruje znovu. Tudíž nemusí být příliš velká, úplně stačí, pokud tam bude určitý podíl nejvytíženějších stránek.

V tomhle případě bude asi výhodnější použít jako cache mysql tabulku, že?

DB ten záznam v první řadě řádně zapíše na disk. A to je vždy zdržující a v případě jednoho disku i do jisté míry blokující. Zápisem cache na disk můžeš výrazně omezit provoz aplikace, jelikož se bude čekat na disk. Pokud to nepotřebuješ uchovávat, tak se DB zkus vyhnout. Paměti to bude žrát stejně, asi bys chtěl, aby se ty stránky z MySQL vraceli co nejrychleji, tudíž z RAM, takže bys nakonec přidělil MySQLd spoustu paměti. Tu, kterou bych dal memcached.

10.10.2010 20:58 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Mysql cachovací tabulka a řazení dat neznámých typů
I kdyby neplatilo to, co píše Heron, a vytvoření stránky by byla tak drahá operace, že by se vyplatilo kešovat i méně navštěvované stránky na disku, pořád je lepší použít nějakou už hotovou keš, která umí objekty kešovat v paměti a ty méně využívané odsouvat na disk, než tohle řešit SQL databází. SQL databáze by vám pro takovéhle použití přinesla jen zbytečný overhead, nic z jejích možností byste ale nevyužil. I kdybyste si tu keš chtěl psát sám, raději využijte nějakou key-value databázi. Ale určitě najdete spoustu keší pro PHP, třeba Nette také obsahuje implementaci keše.
10.10.2010 21:10 mycache
Rozbalit Rozbalit vše Re: Mysql cachovací tabulka a řazení dat neznámých typů
Mysql má možnost použít jako úložiště MEMORY. Já vycházím z toho že sql select dotaz a vrácení výsledku zabere velice málo času, zvlášť pokud je tabulka v úložišti MEMORY. Ale je fakt že jediný minus toho memcached je asi to že se to musí instalovat a předpokládám i konfigurovat.
10.10.2010 21:43 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Mysql cachovací tabulka a řazení dat neznámých typů
Pořád se ale musí parsovat SQL dotaz, způsob uložení dat také nebude optimální… Samozřejmě, že se to dá udělat i s databází, ale je to neefektivní jak pro vývoj, tak pro běh aplikace.
Heron avatar 11.10.2010 08:28 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Mysql cachovací tabulka a řazení dat neznámých typů
Také to bude nepřenositelné na jiné DB servery.

Založit nové vláknoNahoru

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

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.