Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – DB wrapper s využitia súborové cache

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Pavel
Tvůrce
Avatar
Odpovedá na David Hartinger
Pavel:27.7.2015 12:52

Ahoj, jkk jsem ti psal v pm tak jsem tu kontrolu pridal.. jde o test samotneho dotazu, ktery sem pridal s vysledku z DB a po nacteni z disku testuji primo i samotny dotaz. Kolize je tedy vyloccena. A navic je to pohze 1 test navic :-D

Pavel

Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Pavel
David Hartinger:27.7.2015 13:04

Máš pravdu, mě zmátlo to:

který pro jedinečnost bude přetažen přes MD5() a přípona „.cache“

Stejně bych tam ale zmínil ty principy cachování co jsem psal výše, jak vidíš podle komentářů tak lidé vůbec netuší že sama databáze cachuje a nebo si myslí, že načíst dotaz z disku je stejně pomalé jako s databáze, protože jim vůbec nedochází, že databáze to musí ještě třídit a vyhledávat.

Odpovedať
New kid back on the block with a R.I.P
Avatar
Matúš Petrofčík:27.7.2015 21:30

Napadla ma otázka: Ako rýchle je súborové SQLite v porovnaní s klasickou databázou na vlastnom stroji? Hodilo by sa napríklad na uloženie nastavenia aplikácie, ktoré sa mení len zriedka, ale zároveň to nechcem mať v .ini súbore či priamo v kóde?

Editované
Odpovedať
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Richard
Člen
Avatar
Odpovedá na David Hartinger
Richard:29.7.2015 5:15

Řekni mi jaký jsem napsal zvláštní tvrzení, rád ti to objasním a podložím důkazy.
Základní otázka, víš jaký je ratio pro přístup databáze k souborům? Pokud to nekonfigurovala uklízečka, tak hodně blízké 0%, takže se na pomalej disk, kterej má už tak dost jiný práce, přistupuje minimálně i v případě, že výsledek není v cache. Jediný přístupy na disk jsou pak flushnutí dat z paměti, což téměř nemá vliv na výkon.

Samotný čas nahrání již nalezených a setříděných dat je zanedbatelný.

Chybí srovnání načtení z db cache a této file cache ve dvou úrovních a to samotná rychlost a paměťová náročnost, co vychází lépe:

  1. Poslat sql dotaz na kterej se okamžitě vrátí výsledek z cache, bez další režie
  2. Checknout jestli soubor existuje (což je dost rychlá operace), poslední editaci (což už je horší) potom ho otevřít a načíst data a následně zavřít

Nehledě na další aspekty, kde souborová cache prohrává při srovnání s db cache, jako je ukládání samotný cache (opět zápis do paměti vs otevření a zápis na disk) nebo zneplatnění (vyprázdnění paměti vs smazání z disku).

A ne, na cache souborů systému se v reálném světě spoléhat nemůžeme.

V článku chybí spousta dat na nějaké závěry.

Odpovedať
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Pavel
Tvůrce
Avatar
Odpovedá na Richard
Pavel:29.7.2015 9:13

Richarde jeste jednou a pomalu:
Toto je urceno pro bezne dostupny histing a VPS servery. Ne na nejake tvoje specificke stroje, co maji 64gb pameti. Tak se tim tady nemuzes porad ohanet. A predpokladam, ze to u nich uklozecky neprogramuji.

Ten test byl proveden 1000 za sebou v celkovem case 0,2 sekundy - co uz by mohlo byt, OPET na beznem hostingu, rychlejsi? Je to nacitano z cache DB. Nic rychlejso uz byt nemuze. Na co zase nejaky podle tebe test, ktery nikdo nevyuzije a pro hostingy uplne na nic.

Vysledky jasne ukazuji ze - OPET na beznem hostingu - ze celkovy cas nacitani ze souboru je az 5krat - ano ctes dobre petkrat - rychlejsi a ty s tim nic nenadelas. Nevim co do toho pletes nejaky otvirani a zavirani souvoru. To vse jiz v tomto testu probehlo.

Proste souborova cache se pouziva, pouzivat bude a ty s tim nic nenadelas. .

Cim driv se s tim smiris, bude pro tebe jen lip.

AJo a jo a jo. Bude.

Pavel

Avatar
Richard
Člen
Avatar
Odpovedá na Pavel
Richard:29.7.2015 9:42

Může tu prosím napsat svůj názor někdo, kdo napsal svůj databázovej server, nebo má zkušenosti se škálováním?

Pavle, když pustíš 1000x za sebou jeden select, to není test.
To že je to určeno pro hostingy nebo vps není argument, vzhledem k tomu že si to "testoval" na jednom hostingu a jednom vps u stejného poskytovatele. Kdyby si to testoval u různých poskytovatelů, dostaneš různé výsledky a různé závěry.

Nevím co myslíš tím "tvoje specificke stroje, co maji 64gb pameti", hostingy, konkrétně wedos určitě má konfiguraci velice podobnou jako naše servery, nehledě na to že wedos má stroje s 384GB paměti (GB nebo gb, to je maličko rozdíl).

Souborová cache se používá, má svoje místo kde je vhodné ji použít, i my ji používáme, ale prostě ji nemůžeš nasadit jen tak bezmyšlenkovitě kde se ti zachce aniž bys měl relevantní data jestli je to správný krok nebo ne.

Editované
Odpovedať
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Richard
Člen
Avatar
Richard:29.7.2015 13:58

A dovolím si úryvek pm co mi přišla

Člověče, myslíš, že by mělo smysl jim tam něco psát? Vždyť benchmarky a scaling jsou věda a pro většinu smrtelníků daleko za hranicí pochopení. Děcka nemůžou pochopit, že 1x1000=1000 volání jsou hrušky a 1000x1=1000 volání jsou jablka.

Aspoň někdo :-)

Odpovedať
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Pavel
Tvůrce
Avatar
Odpovedá na Richard
Pavel:29.7.2015 14:04

No jo no. Proste jste nejlepsi a vas nazor je jedinej spravnej.. vy dospeli

Asi bychom meli nechat, toto nikam nevede.. ty mas svoji pravdu a ja taky.. ostatni at se zaridi podle s eho rozumu...

Pavel

Avatar
Richard
Člen
Avatar
Odpovedá na Pavel
Richard:29.7.2015 14:09

Tak pravda je jenom jedna, jsem přesvědčený že jí mám já, protože moje zkušenosti to potvrzují a názor kolegů databázistů ho utvrzuje.

Ale rád se nechám přesvědčit o tom že jí nemám, alespoň bych z toho taky něco měl, ale když nejsi schopný dodat data a jen argumentuješ jedním nerelevantním testem který nic neříká, nemůžeš se divit že si stojím za svým.

Odpovedať
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
shaman
Člen
Avatar
Odpovedá na Pavel
shaman:29.7.2015 15:08

Ja pouzivam na shared hostingoch cacheovanie do suboru alebo databazy. Urcite to zrychli chod serveru. Nemam nejaku preferenciu ktore je lepsie, hlavne ze to pomaha. Ak by bol naozaj problem s rychlostou tak by som klienta presvedcil na prechod na VPS.
Okrem lepsieho hardwareu a CPU, tam uz nie som odkazany na neschopnych adminov hostingu a mozem si doinstalovat APC, memcached alebo redis.

Clanok mi zase raz potvrdil ze cacheovanie ma zmysel.

Odpovedať
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 25.