Nette\Database\Structure pro velke databaze

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
lukyrys
Člen | 36
+
0
-

Navazuju na vlakno https://forum.nette.org/…pgradu-nette ktere by se spise hodilo asi sem.
Narazil jsem na problem v konceptu nette\database\structure kdy databaze ma mnoho tabulek.
Rapidne narusta doba zpracovani php na unserialize() obriho pole z cache.
V mem pripade jsem nastesti mel stejnou strukturu pro 95% tabulek tak jsem to castecne vyresil ze jsem rychlost nacitani srazil, nicmene i tak pole struktury pro jednu tabulku byt manualne naplnene trva dost dlouho na zpracovani. Pro 6tis tabulek zpracovani trva neco kolem 450ms v puvodnim zpracovani struktury a unserialize z cache trva az 1s.
Na verzi nette 2.0.7 tato „neduha“ nebyla, objevila se u me az po upgradu na 2.3.5.
Na hodne zatizene aplikaci pocitate s kazdou ms takze i 450ms je pro me zasadni problem, nema nekdo tipy na to jak to efektivne vyresit?

Editoval lukyrys (4. 10. 2015 20:12)

enumag
Člen | 2118
+
+3
-

Nepoužívat 6 tisíc stejných tabulek? :-)

Unlink
Člen | 298
+
0
-

Ako hovorí @enumag, pokiaľ máš vo svojej databáze 5700 rovnakých tabuliek, tak niečo nebude v poriadku s návrhom databázy.
Nette 2.0.x bolo už dávno, vtedy Structure ešte tuším neexistovalo a načítavalo to len niektoré dáta v porovnaní zo súčasnosťou (a pokiaľ si používal statickú reflexiu, či ako sa to volalo tak nenačítavalo nič
.) Možno by stálo za to trochu to zoptimalizovať, pretože pri (reálne) veľkých databázach to môže byť problém.

K tvojmu problému, možno by si nemusel napĺňať priamo to pole duplicitnými dátami, ale namiesto poľa si tam spraviť nejaký kontajner implementujúcii ArrayAccess…

CZechBoY
Člen | 3608
+
0
-

Muzes si podedit statickou reflexi a implementovat dany metody.

lukyrys
Člen | 36
+
0
-

enumag napsal(a):

Nepoužívat 6 tisíc stejných tabulek? :-)

Nemyslim si ze by to bylo spatne ma to urcite svy duvody. Tabulky maji sice stejnou strukturu ale ruzna data a tabulky muzou mit ruznou velikost, nektere dosahuji az 1gb dat coz pri sjednoceni do jedne by byl problem vzhledem k prohledavani vuci velikosti.. I pres indexy mam problem ve vyhledavani v 6GB tabulce.
Muzu to prirovnat k diskuznimu foru. Co topic to tabulka, nebo me nekdo presvedci o tom proc to mit vsechny posty v jedne tabulce?
Nicmene to neni predmetem, i tisicovka tabulek nemusi byt nejaka extremni vyjimka, i pri tomto cislu je znat casove a pametove navyseni.

CZechBoY napsal(a):

Muzes si podedit statickou reflexi a implementovat dany metody.

Nejaky nakopnuti by bylo prosim? Pouzivam defaultni discovery

Editoval lukyrys (4. 10. 2015 14:42)

hrach
Člen | 1844
+
0
-

Napsat si vlastni IStructure, ktere to bude cachovat zvlast a az bude treba, ne pri kazdem pageloadu. Plus kazdou skupinu tabulke do vlastniho ulozite (souboru, klice, etc.).