» »

(my)SQL SELECT (low priority)

(my)SQL SELECT (low priority)

technolog ::

Torej...

Na spletni strani vsako uro poganjam en težak query, ki traja nekako eno minuto. Rad bi naredil ta SELECT low-priority, to pomeni, da bi se izvajal samo takrat, ko bi bil server idle oz. bi ga pač lahko ostali queryji "izrinili" iz uporabe procesorja (ekvivalent recimo linux nice = 15).
Ne moti me, če bi se namesto 1 minuto pri 100% izvajal 30 minut pri 3%.

Pomembno je, da izvajanje tega SELECTA ne vpliva na uporabniško izkušnjo. Nekdo je že imel to željo, pa ni dobil odgovora do konca:

http://forums.mysql.com/read.php?115,24...

dbevfat ::

Repliciraj podatke na drug strežnik in tam izvajaj obdelave podatkov. Query ne more biti low priority v smislu hitrosti izvajanja, temveč razvrščanja, kdaj se zažene. Če ti zaženeš ta query, ko je strežnik povsem idle, potem se lahko zgodi, da ga nikoli ne boš mogel zagnati, ali pa da bo sekundo za tem spet aktiven, ampak zablokiran, ker boš laufal ta query.
nvr2fat

BadB0y ::

technolog je izjavil:

Torej...

Na spletni strani vsako uro poganjam en težak query, ki traja nekako eno minuto.



Pa kaj je streznik je tako bogi al kaj ? da ga tak query zabase. Meni se na serverju poganja query ki traja cca 55min in v tem casu se kista cisto ok odziva. Sploh ni opazit, da bi zadaj kaj teklo..


dbevfat ::

Mogoče ima probleme z lockingom, ne s hitrostjo.
nvr2fat

technolog ::

1. En strežnik je pogoj. Ne splača se za to minuto na vsako uro lavfat še dodaten 200W strežnik.

2. Ne gre za to da je strežnik bogi, samo userji občutijo, da enkrat na uro stvari delajo grozno počasi.

3. Ni problem locking, govorimo o SELECTIH in zgolj o njih.

Rad bi, da se query prilagaja glede na to, kok je frej procesorja. Nočem, da izriva pomembnejše queryje, ki prihajajo od uporabnikov.
Na tej tabeli iz katere selectam, ne delam nikoli updata, baza je ista dve leti, pa še pet let bo.

Zgodovina sprememb…

dbevfat ::

- lahko imaš replikacijo na istem strežniku
- lahko skopiraš datoteke fizično skopiraš, zalaufaš nov mysql proces z nizko prioriteto, poženeš query, ugasneš strežnik
- lahko exportaš podatke in jih obdeluješ kako drugače (sqlite, datotečna obdelava)
nvr2fat

Mavrik ::

Lahko optimiziraš query/bazo da se take grozote ne dogajajo.
The truth is rarely pure and never simple.

technolog ::

Hm, a je pr querijih

WHERE nekaj LIKE '%ena%dva%tri%štiri%'

kakšna korist od indexa na nekaj?

Mavrik ::

Ne, se pa zato namesto tega za te operacije uporabljajo full-text search metode. Sicer pri tem prednjačijo konkurenčni DBMSji, samo bi moral MySQL v 5.x tudi dobiti te sposobnosti, ki bi morale biti opazno hitrejše. Probaj :)
Recimo tale ima podoben problem. Rešitev je pač ne uporaba LIKE statementov, saj preprosto tako dolgi queryi ne bi smeli obstajati.
The truth is rarely pure and never simple.

Zgodovina sprememb…

  • spremenil: Mavrik ()

dbevfat ::

Indeks koristi samo, če nimaš % na začetku.
nvr2fat


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

mysql poizvedba na dve podatkovni bazi

Oddelek: Programiranje
131133 (1007) MAX34216
»

[php, mysql] sortiranje izpisa iz baze

Oddelek: Izdelava spletišč
262662 (2181) Binji
»

[SQL] časovno obdobje

Oddelek: Programiranje
71391 (1219) R33D3M33R
»

spet mysql - problemi z ... who knows what

Oddelek: Izdelava spletišč
5796 (772) pivmik
»

Kako do podatka v queryu iz VisualBasicScripta (VBA) v accessu?

Oddelek: Programiranje
112157 (2042) Fim

Več podobnih tem