Blitz Posted September 7, 2006 Report Posted September 7, 2006 Kā īsti php query un fetch_row funkcijas strādā ar datubāzi pie datu nolasīšanas. Es saprotu tā ka, query nosūta sql pieprasijumu uz db, tur vins izpildās un tiek izveidota temp tabula (view). Pec tam no šīs izveidotās tabulas, ar fecth_row nolasa katru rindinju. Tatad mani interesē vai šos principus esu sapratis precizi, un kur tā tabula fiziski tiek izveidota. Atmiņā uz DB servera, vai jau tiek parsutita uz PHP servera atmiņu, vai kā citādi? Jautajums tads ir tapec ka japapēta tīkla noslodze, ņemot vērā ka PHP un DB neatrodas uz viena datora. Ja DB to temp tabulu saglabā savā atmiņā tad stulbi iznak pie lielaka datu apjoma, visu laiku jaskraida pec datiem (katras rindiņas) caur tiklu. Ja galigi braucu auzās, lamājiet :)
Delfins Posted September 7, 2006 Report Posted September 7, 2006 Elementarno vatson -> Send SQL <- Return Result ID & Error Code -> Fetch row from result (tiek padots resulta ID) <- Return Data (binarie dati, mysql -> php atgriež jau saformatētus stringus/etc) Rezultāts tiek glabāts atmiņā, kas tiek "nomārķēts" ar rezultāta ID, tālāk jau pie fetch notiek atmiņas nolasīšana ( rowid ir offset attiecībā pret sākumu pareizināts reiz fiziska ieraksta datu izmēra - par to jau rūpējās sql serveris)
Blitz Posted September 7, 2006 Author Report Posted September 7, 2006 (edited) tas skaidrs, bet viens jautajums paliek. Kura servera atmiņā viņš glabā rezultātu, ja pieņemam ka DB un PHP serveri izvietoti uz atseviskiem datoriem. Edited September 7, 2006 by Blitz
Delfins Posted September 7, 2006 Report Posted September 7, 2006 Kura servera atmiņā viņš glabā rezultātu System RAM vai Swap atmiņā, ja fiziskā RAM atminās pa maz (fizisks fails uz HDD vai partīcija *nix-am)
PheliX Posted September 7, 2006 Report Posted September 7, 2006 http://lv.php.net/manual/en/function.mysqli-query.php resultmode parametrs nosaka ko dariit ar rezultātu
Recommended Posts