Oznámení
rychlost dibi fetchAll a fetchPairs
před 6 lety
- jan-kratochvil
- Člen | 14
Dobrý den všem,
používám dibi 2.0.3 a nette 2.0.10, připojuji se přes kompilovaný MS odbc na MSSQL2008 (provozuji na linuxu). Narazil jsem na následující problém. V aplikaci mám 1 fetchAll a 31 fetchPairs dotazů, které všechny běží 1722ms, přesto celá funkce, která potom skládá data běží neuvěřitelných 30s, přišel jsem na to, že doba běhu je přímoúměrná počtu fetchů, které dělám.
Když jsem místo dibi použil nette database, celé to najednou běží 2,5s (což mě přijde rozumné).
Netušíte, jak je možné, že je při použití dibi takový výkonostní propad?
Co mě napadá, že při použití nete database nejde použít fetchAll(Both), ale jen číselné indexy, vypadá to, že z ODBC nějak neumí dostat názvy sloupců, musel jsem to vyřešit pomocí fetchAll(PDO::FETCH_NUM), naopak dibi názvy vrací, nemůže toto představovat to šílené zdržení?
Díky za případné nasměrování…
Honza
Editoval jan-kratochvil (22. 4. 2013 17:08)
před 6 lety
- Milo
- Nette Core | 1119
A jaký driver v dibi používáš?
před 6 lety
- jan-kratochvil
- Člen | 14
driver: odbc
před 6 lety
- Jan Tvrdík
- Nette guru | 2550
@jan-kratochvil: Ideálně pustit na to profiler a kouknout se na čem přesně to tak dlouho čeká. Případně zkusit použít jako driver pdo.
před 6 lety
- jan-kratochvil
- Člen | 14
Jan Tvrdík napsal(a):
@jan-kratochvil: Ideálně pustit na to profiler a kouknout se na čem přesně to tak dlouho čeká. Případně zkusit použít jako driver pdo.
Bohužel PDO na MSSQL není (pouze WIN verze, já spouštím na Linuxu)
S Profilerem bych potřeboval poradit, jak na to, navede mne prosím někdo? Zkoušel jsem různě vkládat Debugger::timer() ale to moc valné výsledky nemá…
Díky Honza