NDB Cache – tisíce souborů – lze zjistit původ? či jak to debugovat
- frosty22
- Člen | 373
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
- Pavel Kravčík
- Člen | 1195
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ě`