NDB Cache – tisíce souborů – lze zjistit původ? či jak to debugovat

frosty22
Člen | 373
+
0
-

Zdravím Vás,

na jednom velikém projektu jsme zjistili, že se nám rapidně plní cache v tempu z Nette\Database. NDB nám generuje tisíce v podstatě totožných souborů. Napadá někoho jakým způsobem by toto šlo debugovat resp. lámu si hlavu s tím, jak přijít na to, která část kódu zrovna generuje tyto tisíce souborů, ale zatím si nevím rady.

Příklad obsahu souboru:

<?php //netteCache[01]000070a:2:{s:4:„time“;s:21:„0.28050100 1574077322“;s:10:„serialized“;b:1;}?>a:19:{s:2:„id“;b:1;s:3:„url“;b:1;s:7:„girl_id“;b:1;s:6:„agency“;b:0;s:9:„agency_id“;b:1;s:4:„name“;b:1;s:8:„image_id“;b:1;s:5:„image“;b:0;s:7:„on_tour“;b:1;s:12:„tour_city_id“;b:1;s:4:„city“;b:0;s:7:„city_id“;b:1;s:3:„top“;b:1;s:10:„vip_expire“;b:1;s:10:„top_expire“;b:1;s:7:„not_new“;b:1;s:13:„approval_date“;b:1;s:6:„verify“;b:1;s:8:„date_old“;b:1;}

A všechny ostatní se liší v podstatě jen časem, jinak jsou úplně totožné. Ve finále si nejsem ani jistý, co zrovna v této cachi je uloženo za informaci – vypadá to možná na použité sloupce pro SELECT (když se explicitně neuvednou sloupce, tak NDB snad prvně použije *, a poté si uloží jaké sloupce byly použity a v příštím dotazu to nahradí – nejsem si teď ani úplně jistý, ale snad to tak bylo).

Děkuji za nějaký nápad.

Nette/Database v2.4.6

frosty22
Člen | 373
+
0
-

Zkusím refreshnout vlákno, problém jsem nemusel pár měsíců řešit, nicméně ted jsem znovu u něj a pořád nevím, jak řešit =/ Nějaký náapad alespoň?

Pavel Kravčík
Člen | 1180
+
+1
-

U staršího většího projektu (2.4) problém způsoboval zápis SQL bez placeholderů.

Tj. generovalo 3 soubory cache:

SELECT * FROM `ANO` WHERE `krade` = 'málo'
SELECT * FROM `ANO` WHERE `krade` = 'hodně'
SELECT * FROM `ANO` WHERE `krade` = 'jako předseda'

Takhle se to zlepšilo:

SELECT * FROM `ANO` WHERE `krade` = ?, `hodně`