ugrás a tartalomhoz

Tárolt eljárást készíteni mikor érdemes, hogyan kell telepíteni MySQL-ben?

Anonymous · 2006. Nov. 7. (K), 16.08
Hali!

Még teljesen kezdő kérdések :\. De a mysql honlapján olvasgattam a tárolt eljárásokról, hogy hogyan kell készíteni, majd meghívni. Ott csak egyszerűen a mysql konzolba írja.

A kérdés az lenne, hogy ha mondjuk írok egy egyszerű tárolt eljárást - amit majd php-ba futtatok query-vel például egy egyszerű COUNT(*) - akkor ezt a kis tárolt eljárást kódot egy külső sql fájlba teszem és feltöltöm a szerverre mikor az adatbázis telepítem és az addig marad míg meg nem szüntetem vagy hogy kell ilyet csinálni?

Illetve annyit olvastam még, hogy így gyorsabb lesz a lekérdeéz végrehajtás - ez tényleg igaz?

Mennyire érdemes tárolt eljárásokat készíteni a hagyományos legérdezéssel szemben? (Tehát gondolok arra, ha komplex vagy olyan lekérdezés van ami biztos sokszor kerül végrehajtásrsa)...
 
1

hat ez eleg bonyolult :))

Anonymous · 2006. Nov. 8. (Sze), 00.24
pl erdemes lehet komplex es egyeben gyakori lekerdezeseket osszefogni egy tarolt eljarasba. Elonye a teljesitmeny javulasa (nem kell a php es a mysql kozott dobalni odavissza az adatokat) Hatrany a nehezebb kezelhetoseg.
meg inkabb hasznos abban az estben, ha az uzleti logika egy resze kerul tarolt eljarasba. Igy barhonnan meghivva ugyan az a funkcionalitas erheto el. Nem fugg a hivo kornyezet programnyelvetol.
A mysql query-browsert javaslom a tarolt eljarasok szerkesztesere. Ez ingyenes es letoltheto a mysql honlapjarol. Vagy ami jo meg es ingyenes windowson a SQLyog

bongyi
2

Mikor

Anonymous · 2006. Nov. 8. (Sze), 08.27
Csak néhány példa:

1. Tfh. van olyan adatlekérésed, ami a PHP-MySQL párosban oda-vissza passzolgatja az adatokat. Ez esetben, ha meg tudod a PHP logikáját oldani MySQLben, akkor sokkal gyorsabb lesz.

2. Tfh különböző helyekről (PHP, C++, stb) használod az adatbázist. Ekkor a tárolt eljárások egységes felületet biztosítanak, kevesebbet lehet elcseszni.

3. Egyszerűen csak kényelmes vagy, nem akarod, hogy a PHPnek túl sok köze legyen az adatbázisokhoz.

Én személy szerint kényelmes vagy és ez nagyon megnövelte a produktivitásomat, gyorsabban haladok. Cserébe viszont lemondtam a hordozhatóságról.

A MySQL doksi azt mondja, hogy amennyit csak át tudsz tolni a programlogikából az adatbázisba, annyit tolj is át.
3

hasznalat

Anonymous · 2006. Nov. 8. (Sze), 08.51
Még akkor annyit kérdeznék ha írsz egy tárolt eljárást akkor azt hogy tárolod a mysql szerveren? Tehát úgy hasonlóan telepíteni kell mint az adatbázist vagy csak egy sql fájlba kell tenni őket és azokat belinkelni vagy hogy?
4

ez "csak" egy szolgáltatás

virág · 2006. Nov. 8. (Sze), 08.57
Ugyanolyan szolgáltatása az adatbáziskezelőknek mint bármely más funkciója, konkrétan a MySQL szintaxisáról itt olvashatsz:

http://dev.mysql.com/doc/refman/5.1/en/stored-procedures.html

Nem kell pluszba semmit telepíteni hozzá, csak 5-ös verziód legyen.

Itt találhatsz példákat is:

http://forge.mysql.com/
5

példa

Anonymous · 2006. Nov. 8. (Sze), 11.26
Értem,de ha van egy tárolt eljárásom, például:

PROCEDURE simpleproc (OUT param1 INT)
BEGIN
SELECT COUNT(*) INTO param1 FROM t;
END;

amit majd meg szeretnék hívni php:
$result = $conn->query("CALL simpleproc(@a)");

akkor a mysql honnan veszi, hogy van egy ilyen eljárásom? Ezzel kapcsolatban kérdeztem, hogy ezt akkor esetleg egy külső sql fájlba teszem?

Egy egyszerű példát tudnál erre írni?

Köszönöm.
6

honnan veszi

virág · 2006. Nov. 8. (Sze), 11.51
A tárolt eljárások éppen úgy egy táblában vannak tárolva mint bármi más a MySQL-ben (más DB-ben is hasonlóan van), neked a tárolással nem kell törődnöd, ezt a MySQL intézi, neked csak a CREATE, DROP parancsokat kell használnod, vagy egy erre kihegyezett szerkesztőt használni. Lényeg, hogy nincs szükséged külső fájlokra. Picit rosszul képzelted el :)
7

döntés

Anonymous · 2006. Nov. 8. (Sze), 16.16
Hali

Már működik a dolog. Annyit kérdeznék még, hogy azt írták itt többen, hogy a gyorsaság miatt és ha bonyolult lekérdezésünk van, akkor érdemes használni a tárolt eljárásokat. Valamit - Egy korábbi hozzászólásba - "A MySQL doksi azt mondja, hogy amennyit csak át tudsz tolni a programlogikából az adatbázisba, annyit tolj is át." Ezt hogy kell érteni, mert gondolom minden egyszerű eljárást azért nem írnak át? Illetve ha vagy egy egyszerű lekérdezésem, mondjuk legyen ez csak annyi, hogy egy könyvtárban éppen bent van egy könyv vagy nincs, de mivel több 10.000 könyv is lehet egy könyvtárnak és több 1.000 olvasója is lehet tehát nagyon nagy adatbázison sokszor kerül végrehajtásra, akkor ezt az egyszerű eljárást érdemes tárolni?