počet sql dotazů pri opětovném načtení

pazuzu
Člen | 29
+
0
-

Zdravim,
mel bych dotaz na pocet SQL queries. Kdyz smazu cache, tak chapu, ze se dela pri prvnim nacteni hodne dotazu kvuli klicum, a pak uz jen par zakladnich dotazu ke konkretni strance. Ale mam pripady, kdyz pri kazdem nacteni nette generuje stale ten prvni velky pocet dotazu. Netusite nekdo, v cem by mohl byt pudl zakopany?
diky

Polki
Člen | 553
+
0
-

Nejspíše ve špatně navrženém kódu.

pazuzu
Člen | 29
+
0
-

nic nevypisuju, jen udelam vykresleni latte a presto nacita znovu vsechno a uplne ze stejne DB jina apka a ta to nedela, tak nevim, jinak teda diky za radu, podivam se na to

David Matějka
Moderator | 6445
+
0
-

A jsou to dotazy na ta metadata, nebo jsou to sql dotazy na samotná data, co vykresluješ?

Kamil Valenta
Člen | 762
+
0
-

Nesaháš třeba na

database->getStructure()->getColumns('table');

?

V tomhle okamžiku se mi to totiž děje taky. Přitom ty informace existují v cache a čekal bych, že je dostanu z tama. Netuší někdo, zda se struktura tabulky dá vzít z cache?

pazuzu
Člen | 29
+
0
-

ja v ten moment nedavam zadne dotazy na data, on jen dela tu cache porad znova :( presenter i latte neobsahuje zadne sql na data

getStructure nevolam, ale je zvlastni ze na jinem miste, kde se dokoce tahaji data, to udela jen pri prvnim nacteni, to mi prave neni moc jasne, takhle nevim, kde mam co hledat

Polki
Člen | 553
+
0
-

To vypadá na to, že máš kód navržený tak, že se databázové spojení nevytváří až při prvním požadavku lazy, ale že jej někde nějak vytváříš dříve, než je potřeba a to i v případě, že není potřeba.

Pak je jasné, že se aplikace takto chová, protože tam, kde se nějaké dotazy dělají se udělá dotaz jednou a jeho optimalizovaná forma se uloží do cache, takže příště se vytáhne z cache a zbytečné dotazy se neprovádí. Když ale navážeš spojení a tyto dotazy (na nějaká metadata například) se provedou, ale neprovede se žádný další dotaz, tak se nemá do cache co optimalizovaného uložit, takže při dalším načtení se toto provede znovu, jelikož je nastartováno připojení, ale nejsou v cache uložená optimalizovaná data, takže si aplikace myslí, že se do databáze dívá poprvé.

Doporučuji nejdřív smazat cache, jestli nejsou v ní nějaká stará data uložená, která by toto chování vyvolávala a když to nepomůže, tak doporučuji projít kód a zjistit, jestli je opravdu vše LAZY.

Editoval Polki (1. 5. 2021 9:35)