Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Da li je "SET @a = 1;" upit ??? Molim experta za pomoc!

  • 4 odgovora
  • 3.047 pregleda

Najnovija ↓

Da li je "SET @a = 1;" upit ??? Molim experta za pomoc! 22.06.2009. u 14:12 · pre 211 meseci #1
Imam problem. Moj hosting provajder mi dozvoljava 50 upita po sekundi.

Svake sekunde moj PHP poziva jednu proceduru.

Kada u MySQL Administratoru gledam na "Health" mysql servera (broj querija koji je trenutno izvrsen),
kada PHP pozove porceduru on izbroji da je izvrseno oko 20 upita!

Nije mi jasno kako, ako u proceduri imam samo jedan SELECT i jedan UPDATE.

Ima dosta izraza tipa: "SET @a = 1;" i sl. koji su mi neophodni za izracunavanje vrednosti za update.
Ali to ne smatram za upit vec kao operaciju sa nekim variablama...

Sada sam u nedoumici da li ce mi ovo praviti problem kod hosting provajdera, odnosno nije mi jasno sta se podrazumeva pod upitom... ?

Pomoc!
Potpis
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
Re: Da li je "SET @a = 1;" upit ??? Molim experta za pomoc! 22.06.2009. u 19:43 · pre 211 meseci #2
kakav provajder .... napravis ti to sve u jednom veeeeeeeelikom union/subselect upitu i bas te briga ...

mysql nema definiciju "sta je upit a sta nije" ... realno, sve je upit ... ali ono sto mozes da pratis su vrednosti:
Code:

 show global status like 'Queries';


ta status varijabla se povecava za svaki query ... (i ovaj show status je query) tako da ... primer:

Code:


mysql> show global status like 'Queries'; select 1; select 2; select 3;  show global status like 'Queries';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Queries       | 36    | 
+---------------+-------+
1 row in set (0.00 sec)

+---+
| 1 |
+---+
| 1 | 
+---+
1 row in set (0.00 sec)

+---+
| 2 |
+---+
| 2 | 
+---+
1 row in set (0.00 sec)

+---+
| 3 |
+---+
| 3 | 
+---+
1 row in set (0.00 sec)

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Queries       | 40    | 
+---------------+-------+
1 row in set (0.00 sec)

mysql> show global status like 'Queries'; set @a=1; set @b=2; select @a,@b;  show global status like 'Queries';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Queries       | 41    | 
+---------------+-------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

+------+------+
| @a   | @b   |
+------+------+
|    1 |    2 | 
+------+------+
1 row in set (0.00 sec)

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Queries       | 45    | 
+---------------+-------+
1 row in set (0.00 sec)



kao sto vidis, varijabla queries je povecana na ona dva set-a .. tako da, ako tvoj provajder koristi tu varijablu - onda si u problemu ...

e sad, isto to moze "mnogo finije ali komplikovanije" da se izvadi iz Com_% varijabli .. pitanje je sta tvoj provajder koristi .. ne postoji nacin da mi to odavde znamo ...

ono sto mogu da kazem je da mysql nema nikakav sistem da "per user" radi neku kontrolu resursa .. to je "long standing feature request" a u medjuvremenu dok mi ne odlucimo na koji nacin uopste tako nesto da se izvede provajderi koriste razne trikove .. rade monitoring baza citajuci vrednosti statusnih varijabli pa onda lokuju usera (skinu mu prava, promene mu sifru i slicno) .. 1and1 na primer proverava kad predjete 100M (show table status pa sabira) i onda vasem useru skine prava na insert .. ostavi samo select i delete ... to rade iz neke skripte svakih 15 min ..
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Da li je "SET @a = 1;" upit ??? Molim experta za pomoc! 23.06.2009. u 14:05 · pre 211 meseci #3
Hvala, ostaje mi da vidim na koji nacin provajder ogranicava rad sa mysql-om.

Uzgred, ako uzmem u obzir da je i SET @a = 0; upit, ispada da moja procedura izvrsi 22 upita.
Medjutim, zauzece procesora za ovu operaciju je relativno receno vrlo vrlo malo, pa bi razmisljam bilo logicno da
provajderi zakljucavaju korisnike na osnovu toga koliko se server procesorski opterecuje, a ne koliko ima upita.
Moze biti i jedan upit ali vrlo komplikovan.

Da li imate iskustva o tome, da li provajderi kontrulisu rad sa mysql-om u zavisnosti od procesorskog opterecenja?
Potpis
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
Re: Da li je "SET @a = 1;" upit ??? Molim experta za pomoc! 24.06.2009. u 06:06 · pre 211 meseci #4
Citat:
zgas
Da li imate iskustva o tome, da li provajderi kontrulisu rad sa mysql-om u zavisnosti od procesorskog opterecenja?


oni bi - vrlo radi ... ali je to jako komplikovano ... mysql nema nikakav sistem kojim bi to omogucio tako da sve sto sam ja video da provajderi rade je citaju te razne brojace i na osnovu njih limitiraju rad ... i to je uz pomoc stapa i kanapa :( ...

vrlo je moguce da ce provajderi trositi drizzle posto je tim koji ga radi "osakatio" doticni projekat maksimalno tako da se provajderu realno isplati da tera jednu instancu aplikacije za svakog korisnika... onda na sistemskom nivou mozes da kontrolises upotrebu resursa i limitiras istu kako zelis... sa mysql-om mi imamo odavno te zahteve za nekakvu resource kontrolu unutar mysql-a ali ja ne znam da postoji work log za to - dakle jos nije odluceno ni da ce to da se radi (ikad) a kamoli kada se planira da bude i kojoj verziji ...

Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Da li je "SET @a = 1;" upit ??? Molim experta za pomoc! 29.06.2009. u 08:47 · pre 211 meseci
izmenjeno 1 put, poslednji put misk0 29.06.2009. u 17:44
  1. misk029.06.2009. u 17:44zapis iz teksta poruke
#5
Koliko para toliko i muzike. Ovo što ti koristiš je ili besplatan hosting (oni su svi crap, a najčešće ne daju ni MySQL), srpski hosting (oni su svi skupi a loši) ili jako jeftin hosting.
Ako hoćeš pristojan hosting bez ovako glupih limita (20 querija u sekundi? lol) onda moraš uzeti dobar inostrani hosting, koji košta bar 5$ mesečno (jeftinije i ne isplati im se da budu pristojni).
Nađi par provajdera i onda na webhostingtalk vidi šta drugi ljudi kažu o njima. Kakva im je podrška, uptime, odnos sa korisnicima...
Potpis
"Common sense is not so common." - Voltaire
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme