Tento web používá soubory cookie. Dalším používáním webu s tímto souhlasíte.
jméno
heslo
přihlásit
zaregistrujte se
zapomněli jste heslo?
On-line WebBased hry kreativně - udělejte si vlastní webovku!
CYBERWOLF
Hráli jste někdy nějakou webovku a napadlo Vás někdy udělat si nějako vlastní?
Máte nějaký nápad na bezva hru a neumíte ho realizovat?
Nebo umíte skvěle programovat webové aplikace, ale nemáte nápad na dobrou hru?
Nebo namáte ani jedno a umíte cokoliv jiného, co by mohlo při tvorbě hry pomoct (malovat, dělat hezky vylížející html stránky, jakoukoli grafiku, nebo jste matematický génius, prostě COKOLI)
Pokud Vám vyšla alespoň jedna kladná odpověď, jste tu správně!
Máte k tomu co říct? Vložte se do diskuze.
CYBERWOLF --- 15:08:04 14.6.2010
Nooo, 2GB do pameti, to uz bych se asi trochu bal. Pokud by toho frcelo tolik, ze by bylo potreba cachovat tolik dat, tak ta pamet bude asi spis potreba nekde jinde.

Kazdopadne, tady jde o neco trochu jineho - query cache je tak nejak transparentni zalezitost. DB server si to resi sam a kdyz ma validni cache, tak sahne misto do tabulky do ni a vrati vysledek zdibec rychleji a kdyz nema, tak vrati vysledek a to same si nacpe do cache. Jenze pokud se do te cache nestaci podivat driv, nez ta cache vyexpiruje, tak to dela uplne zbytecne a kdyby to nedelal, tak by mohl jet o neco lip (a do dneska jsem to jeste nevyzkousel, hmmm).



Kdyz uz mluvime o cachovani, tak pred nejakym casem jsme v praci zkouseli, jak by se dala cachovat aplikacni data (celkem velky balik), aby se odlehcil SQL serveru. Celkem prekvapive (alespon pro me) jsme dospeli ke zjisteni, ze akorat memcache dokaze ta data vratit rychleji a to jeste ne o moc. Moduly pro cachovani dokazali cache vratit v case srovnatelnem s MySQL (bez cache). Cachovani do souboru bylo dokonce znatelne pomalejsi.

Ukazalo se, ze vyrazny podil na pomalosti cache ma rekonstrukce dat, protoze neni mozne ukladat rovnou pole, je potreba ho prevest do nejakeho ulozitelneho formatu (serializovat,csv,json, xml...) a prave rozparsovani po nacteni je nejkritictejsi bod.

Zaver, ktery z toho experimentu plyne je, ze prakticky nema cenu cachovat data a jedine co se vyplati cachovat je hotovy vystup (ktery se tedy nemusi porad generovat a hlavne se da ulozit/nacist tak jak je).
YAWGMOTH --- 14:42:33 14.6.2010
CYBERWOLF: tak to je ale v případě query cache to samé, někde to uložit musíš :) ... mít 2gb memcache neni dneska problém a zase tolik těch dat aby se tam to důležité nevešlo ta hra mít nebude :)
CYBERWOLF --- 19:36:19 13.6.2010
YAWGMOTH: memcache je fajn, ale ta pamet taky neni nafukovaci :)
YAWGMOTH --- 11:18:41 13.6.2010
CYBERWOLF: proto se reálně používá ještě cachování na úrovni aplikace, třeba s memcached, a do databáze vůbec nelezeš :)
CYBERWOLF --- 14:06:15 9.6.2010
TENCOKACISTROMY: Tak to je jesny, ze zalezi na situaci, ale ja bych prave rekl, ze zrovna webove hry jsou ten typ aplikace, kde tech insertu a updatu v pomeru k selectum docela dost (a proto tu o tom mluvim:) ).

Ale jak o tom tak prubezne premyslim, napadlo me, ze by mozna mohlo pomoct v pripadech kdy je nepriznivy pomer select/zmeny, tak jednoduse query cache vypnout a zbavit se tak overheadu s overovanim a ukladanim cache, ktera se stejne v 99.9% pripadu nevyuzije.
TENCOKACISTROMY --- 13:35:01 9.6.2010
CYBERWOLF: Tak to je samozrejme o tom, v jakym scenari to pouzivas. Kdyz mas naopak velkej pocet selectu a malej pocet zmen, tak se ti to vyplati.

Resit query cache jsem nikdy nemusel, pac mi skoro porad vychazej dotazy pokazdy trochu jiny a casto se mi menej data. Ale vim, ze treba MSSQL umi notifikovat, ze se zmenily data pro tebou zaslanej dotaz. Doporucuje se to ale pouzivat v omezeny mire, aby si prave tim porovnavanim jak rikas, nezabrdil celej stroj. Jak to maj reseny uvnitr netusim, ale tipuju ze je to delany podobne jako Change Data Capture.
CYBERWOLF --- 12:29:59 9.6.2010
TENCOKACISTROMY: nebo takhle, vis o nejakem db serveru, ktery tohle skutecne dela?
CYBERWOLF --- 12:24:09 9.6.2010
TENCOKACISTROMY: nj, ale predstav si, ze mas cachovanych par stovek (tisic, desetitisic...) dotazu a pri kazdem insertu musis proverovat, jestli by se vlozeny zaznam do nektereho nevesel aby se cache zinvalidovala. To mi neprijde realne, rekl bych, ze overhead bude daleko vetsi, nez zisk, obzvlast pokud budou inserty/updaty casto.
TENCOKACISTROMY --- 12:18:08 9.6.2010
CYBERWOLF: Jak kdy. Kdyz bys mel napriklad "SELECT a,b,c FROM tbl WHERE d > 10", tak pri "INSERT INTO tbl (a,b,c,d) VALUES (1,2,3,4)" docela jasne vis, ze to invalidovat nepotrebujes.
CYBERWOLF --- 12:08:31 9.6.2010
TENCOKACISTROMY: tohle konkretne MySQL, ale pochybuju, ze to jinde bude jinak. Logicky, kdyz zmenim obsah tabulky, tak se meni i to, co muzu vybrat a musi se invalidovat cache. Tezko by mohlo byt zjistovani, jestli do ktereho nacachovaneho dotazu by se vlozeny/upraveny zaznam vesel efektivnejsi, nez invalidace cache pro danou tabulku