tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

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