NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – DB wrapper s využití souborové cache

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Pavel
Tvůrce
Avatar
Odpovídá 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

 
Odpovědět
27.7.2015 12:52
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá 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.

Odpovědět
27.7.2015 13:04
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?

Editováno 27.7.2015 21:31
Odpovědět
27.7.2015 21:30
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Richard
Člen
Avatar
Odpovídá 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.

Odpovědět
29.7.2015 5:15
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Pavel
Tvůrce
Avatar
Odpovídá 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

 
Odpovědět
29.7.2015 9:13
Avatar
Richard
Člen
Avatar
Odpovídá 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.

Editováno 29.7.2015 9:43
Odpovědět
29.7.2015 9:42
$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 :-)

Odpovědět
29.7.2015 13:58
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Pavel
Tvůrce
Avatar
Odpovídá 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

 
Odpovědět
29.7.2015 14:04
Avatar
Richard
Člen
Avatar
Odpovídá 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.

Odpovědět
29.7.2015 14:09
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
shaman
Člen
Avatar
Odpovídá 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.

Odpovědět
29.7.2015 15:08
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 25.