ugrás a tartalomhoz

Archívum - Júl 30, 2010

MySQL tárolt eljárások extrém mennyiségben

ocsi01 · 2010. Júl. 30. (P), 09.05
Sziasztok!

Nagy mennyiségű adatot kell importálnom MySQL adatbázisba, úgy, hogy közben egy keveset számolgatnom is kell. Az adatbázis konzisztencia szempontjából azt a megoldást választottam, hogy a bemenő adatokat MySQL tárolt eljárások kapják meg, azok kiszámolnak, ellenőriznek mindent, majd Insertálják a megfelelő táblákba az adatokat.
Egy ilyen lefutása kb 0.0002s a PHPmyadmin szerint.
A probléma ott kezdődik, hogy százezres nagyságrendben kellene lefuttatnom ezt a tárolt eljárást. ( Mivel ez egy inicializációs művelet, ezért nem probléma, ha perceket vesz igénybe, csak fusson le.)
PHP-val hívom meg a Mysqli->multiple_query() -t. 100 asával adom be a hívásokat. ( 5000 nél már kiakadt) A PHP-val folyamatosan kijelzem a belső állapotot, minden sikeres ilyen 100as hívás után újabb jelzést küld a php a böngészőnek (Flush()) így látom, hogy hol tart a folyamat. Ez így szép is lenne, de a tapasztalat az, hogy valamiért egyre lassul a rendszer. Az elején simán 1s alatt van egy ilyen multiple_query-nek a lefutása, de úgy 5-10000 hívás után már közeledik a 1,5-2 s-hez és egyre lassul.

A kérdés konkrétan: tud valaki segíteni abban, hogy mit tehetnék? valamilyen változókat kéne felszabadítanom, vagy mi lassíthatja az SQL szervert?

Kérlek segítsetek!