DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   SQL baze podataka - Sponzor: Baze-Podataka.net (http://www.devprotalk.com/forumdisplay.php?f=10)
-   -   stored procedure brzina (http://www.devprotalk.com/showthread.php?t=5115)

_korso_ 14. 04. 2008. 11:23

stored procedure brzina
 
Imam jedno pitanje, vezano za stored procedure kod Sql Server-a 2005. Da napomenem da ih nikad nisam pisao. Jedino sam video kako izgledaju.
Pitanje bi glasilo ovako: "Da li je brze izvrsavanje SP-e ili obicnog upita ?".
E sada, verovatno da se ovo moze sagledati sa raznih strana.
Nema smisla govoriti o zameni upita "select * from users where userid=1" stored procedurom.
Ali tamo gde se vrsi join nad vise tabela, ili gde ima dosta podataka za obradu (par hiljada, desetina hiljada slogova) ili pak tamo gde se izvlace podaci koji bi se mozda dobili sekvencijalnim izvrsavanjem par upita.
Interesuju me vasa iskustva sa ovim (ukoliko ste ih imali) ?
Takodje koliko bi imalo smisla koristiti iste na web-u (opet vezano za brzinu, ako postoji taj speed issue).
Moje neko licno misljenje (mozda posto ih nisam koristio) je da je ipak brzina izvrsavanja obicnih upita veca, ali ... mozda to zavisi od slucaja do slucaja ?
//edit
sada sam bas video jedan zanimljiv tekst
http://statestreetgang.net/post/2008...rocedures.aspx

jablan 14. 04. 2008. 12:14

Načelno, nema mnogo prednosti u korišćenju SP sve dok ne odlučiš da malo veće parčiće koda postaviš u njih (kreiranje nekih temp tabela, rad sa kursorima, prosleđivanje kolekcija kroz parametre kao XML, itd). Sa druge strane, SP ti ostavljaju manje mogućnosti da brljaš (upiti svuda u kodu, sklapanje koje omogućava SQL injection itd).

Moj generalni savet je da ih koristiš.

Dejan Topalovic 14. 04. 2008. 13:08

Principijelno su direktni SQL upiti brzi od uskladistenih procedura, ali sve zavisi od namjene i kolicine zatrazenih/obradjenih podataka.

Ukoliko imas potrebu za serijskim izvrsavanjem veceg broja upita i za obradom tih dobijenih podataka, onda su uskladistene procedure bolje rjesenje.

Iz mog visegodisnjeg iskustva u radu sa Oracleom (jbg, ne radim sa SQL Serverom), mogu ti potvrditi da su direktni SQL upiti daleko brzi nego da koristis uskladistenu proceduru (zato sto Oracle u uskladistenoj proceduri skace sa RDBMS engina na PL/SQL engine i obrnuto, da ne davim sad internim funkcionisanjem baze), ali direktne upite veoma rijetko koristimo, jer nam je baza oko 90% DataWarehouse orjentisana (import podataka, dnevni/sedmicni/mjesecni/kvartalni/godisnji obracuni, export podataka i td.), a 10% OLTP orjentisana (za Web formulare i par aplikacija za rucni unos podataka).

Mi imamo poprilican broj uskladistenih procedura, koje se pozivaju iz razlicitih aplikacija radjenih u Javi, C# i Delphiju - zamisli sta bi bilo da smo za svaku aplikaciju morali pisati/prilagodjavati SQL upite... Ili da moras mijenjati neki upit da bi dodao par kolona ili neko ogranicenje u WHERE klauzulu - u proceduri moras samo jednom izmijeniti, a u suprotnom bi u svakoj aplikaciji morao da trazis te upite i mijenjati ih jedno po jedno...

Ako podatke zelis samo izlistati iz baze i prikazati na ekranu/papiru, onda pokusaj za tu namjenu koristiti direktni SQL upit. Ukoliko ti je brzina veoma bitna, onda se isplati napisati i kompleksniji SQL upit, nego koristiti uskladistenu proceduru. U svakom drugom slucaju - uskladistena procedura.

_korso_ 14. 04. 2008. 13:37

@Dejan Topalovic
Ne verujem (uglavnom uvek) onome sto procitam ili cujem, dok se na ovaj ili onaj nacin, ne uverim sam.

A i hvala na odgovorima BTW. Brzina mi je bitna posto se radi o web aplikaciji.
Uglavnom baza sa kojom cu da radim je vec u funkciji, koristi se u par drugih desktop aplikacija. Takodje postoje neke gotove procedure koje se koriste,ali
neke od njih se bas dugo izvrsavaju, oko 10tak sec. Za web je to rekao bih, puno vremena. Zbog toga sam i pitao o razlici u brzini, posto cu morati neke od tih i sam da koristim.

Dejan Topalovic 14. 04. 2008. 15:54

@_korso_: Mozes li kopirati source code od tih upita ili procedure, da pokusamo optimizovati upite? Prilozi takodje i DDL izraze (za CREATE TABLE).

_korso_ 14. 04. 2008. 17:09

1 Prilog(a)
Evo koda za jednu SP. Posto je malo veci saljem ga kao attachment. Script tabele trenutno nemam kod sebe.
Posteno ja ne mogu da se snadjem u prilozenoj proceduri, osim sto vidim da je par tabela u igri.

jablan 14. 04. 2008. 18:03

Citat:

Originalno napisao Dejan Topalovic (Napišite 53717)
@_korso_: Mozes li kopirati source code od tih upita ili procedure, da pokusamo optimizovati upite? Prilozi takodje i DDL izraze (za CREATE TABLE).

Tražili ste - gledajte... :)

Dejan Topalovic 14. 04. 2008. 19:12

Citat:

Originalno napisao jablan (Napišite 53725)
Tražili ste - gledajte... :)

Napisao sam "pokušamo", a ne "pokušam". ;)
Ima li neko drugi, ko se bolje razumije u SQL Server, jer sam tu tanak skroz? :D
Jedino da portiram source code na Oracle...

@_korso_: Pogledao sam malo tvoju proceduru i vidim da se tu podaci provjeravaju i obrađuju po određenim uslovima, tako da ne vjerujem da u ovom slučaju možeš izbjeći korištenje uskladištene procedure...

Ovo bih mogao uzeti kao temu za novi tekst na blogu - "Uskladišena procedura vs. direktni SQL upiti". :1014:

jablan 14. 04. 2008. 19:40

Pa ima kursore - teško da će to moći van SP. :)

A sad, da raspetljavam SP od kilo linija, i to još iz bankarstva, neka hvala, to ni za pare ne radim... ;)

_korso_ 14. 04. 2008. 22:13

Citat:

Originalno napisao jablan (Napišite 53730)
iz bankarstva, neka hvala, to ni za pare ne radim... ;)

takodje moja omiljena oblast ;)

Citat:

Originalno napisao Dejan Topalovic (Napišite 53727)
Ovo bih mogao uzeti kao temu za novi tekst na blogu - "Uskladišena procedura vs. direktni SQL upiti". :1014:

Mislim da bi to bilo lepo :), ali vezano za mysql, pa sto da ne i oracle.

Sve u svemu videcu sta cu sa ovim da radim i kako cu da se iskobeljam sa ovim procedurama, jer ima jos par ovakvih a neke idu i do 1,5 K koda.
Bice veselo...


Vreme je GMT +2. Trenutno vreme je 16:45.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.