Jump to content
php.lv forumi

Par 1 000 000 teksta gabalu glabaashanu


Toms

Recommended Posts

qued:

nu tie 5k bija tāpat vien kā piemērs domāti :)

bet nu jā. vajag vēl pacensties tos pašus 5k dabūt onlainā.

 

pietam domājot par kešošanu no fs kaut kur nonākam pie tā paša mysql :D

neinu manuprāt var izdomāt kaut ko dikti viltīgi lai slodzīti vienmērīgi sadalītu, bet ar php risinājumiem būs par īsu man liekas.

Link to comment
Share on other sites

  • Replies 62
  • Created
  • Last Reply

Top Posters In This Topic

divas DB taa, ka vienu DB velaak vares uz cita PC uzlikt bez probleemaam, ja vajadzees.. (aatrumam).

 

Bet uz viena PC divas DB shitaadas, aatrums nemainaas (divas DB pret vienu DB)? Nekur shito nevar atrast..

Link to comment
Share on other sites

hnmc

te kaut kas ieminējās, ka draugiem.lv neesot rdbvs. Būtu jauki, ja cilvēks padalītos, kas tad šiem ir.

Toms

Man šķiet, ka nav būtiskas atšķirības ātrumā atkarībā no tabulu sadalīšanas vienā vai divās db uz viena pc. Bet tas ir tikai "šķiet", praksē neesmu pārbaudījis.

Link to comment
Share on other sites

nez.. neesmu ar draugiem.lv saistīts (reģistrāciju neskaita :P ), bet nu man pašam būtu interesanti kādi risinājumi tur tiek izmantoti slodzes sadalīšanai un nenormālā datu daudzuma uzglabāšanai :)

gaidam zinoša cilvēka komentāru :)

Link to comment
Share on other sites

njaa draugiem.lv visiem interesee.. vinji jau noteikti nedaliisies..

 

bet uz diviem PC taas DB tac buutu aatraakas, ne? Mosh bilzhu galeriju uz viena PC, paareejo uz otra likt?

 

Man interesee vai no tiem diviem PC buutu jeega? un ja jaa, tad cik ljoti liela?

Link to comment
Share on other sites

Nuja, kaa buutu ar aatrumu, mosh tomeer labaak ir atstaat visas vienaa datubaazee?

 

14696[/snapback]

protams ka labaak visas ir atstaat vienaa db ;)

DB mainja ARI IRA pieprasijums kas jaapstraadaa - taatad aiznjem laiku...

 

bet

 

vislabaak (pie lieliem) apjomiem ir DB glabaat (vismaz) uz atseviskja datu neseeja...(katra tabula tomeer izmantos atseviskju Fizisko ieriici (diska galvinja tachu ir viena ;) ) - un no sii viedoklja aatrums pat pieaugs - protams nerunaasim par to ka MYSQL fiziski jauzliek uz atseviskja diska...

Edited by Grey_Wolf
Link to comment
Share on other sites

Zaļais vilks

A kas traucē turēt vienlaicīgi atvērtas divas db un prasīt te no vienas, te otras?

14711[/snapback]

 

Ja uz viena diska? - nu taas tachu jebkuraa gadijumaa buus VIENA FIZISKA IEKAARTA KURA IZPILDA TIKAI VIENU!!! DARBIIBU VIENAA NOTEIKTAA LAIKA SPRIIDI :angry:

(un atverot 2 baazes vienlaiciigi tikai nevajadziigi tiks nnoslogota op atminja...

 

TOMS: protams vislabaak ir tureet uz atseviskjaam masiinaam - aatrums tikai pieaugs - ja nebremzees konekcija :)

Link to comment
Share on other sites

/me domāt, ka pietiek spriest, laiks darīt, resp. norādījumi:

 

* pēc iespējas datubāzes/tabulas nosymlinkot vismaz uz dāžādām partīcijām/HDD

* sadalīt tabulas pēc pirmiem username trim burtiem

ā) tabulās uID=>username [users_aaa,users_aab utt]

bē) tabulās uID=>letterID [lett_aaa,lett_aab utt]

cē) tabulās letterID=>letterBody, pēc letterID/10^x pakāpē [body_0_500000,body_500001_1000000 utt]

* uzreiz pēc username noskaidrošanas nomainīt arī session.save_path uz noteiktu caur pirmiem burtiem [/tmp/s_aaa/, /tmp/s_aab/ utt]

 

tālāk:

pie login noskaidrot userID no noglabāt to sessijā

no att. letter tabulas nolasīt letterID=>letterTitle ORDER BY datestamp DESC LIMIT 0,n un ieglabāt to sessijā, kā arī ieglabāt tajā laiku, kad pēdējo reizi itka izdarīts šis pieprasījums un neļaut atkārtot to agrāk par x sekundēm (resp. var refrešot inbox lapu, bet netiks pildīts mysql pieprasījums)

 

izvad'it headerus no sessijas, šai lapai uzlikt papildus meta/header uz kešošanu uz lietotāja datora + uz servera arī varētu likt http proxy

 

rādīt tikai vienu vēstuli reizē [sELECT letterBody FROM body_{x}_{x+50000} WHERE lID={kau kas starp x un x+50000}], ja nepieciešama meklēšana vai kaut kas tml pa letter tekstiem, sagrupēt letterBody ierakstu ID ar asort un veidot UNION tipa pieprasījumu:

(SELECT fk_lID FROM body_0_50000 WHERE letterBody LIKE '%smth%' AND ID IN(1000,30023,40505))

UNION

(SELECT fk_lID FROM body_50001_100000 WHERE letterBody LIKE '%smth%' AND ID IN (61345,79456))

 

u get the idea

 

atsevišķā tabulā glabāt tabulu nosaukumu un ierakstu skaitu tajā, pēdējo optimizācijas laiku, e.g.

tabula | skaits | datestamp | skaits pie pēdējās optimizācijas | pēdējo reiz mainīts

users_aaa | 10 | [divas nedēļas atpakaļ] | 0 | šodien

body_0_50000 | 41 347 | [vakar] | 10 000 | šodien

 

kur pie jaunās vēstules/user parādīšanas taisīt UPDATE SET skaits=skaits+1 un laiku pa laikam [naktīs?] veikt visbiežāk pieprasīto/mainīgo tabulu ā) ALTER TABLE ORDER BY [tas lauks, pēc kur tiek biežāk atlsaīti dati] bē) OPTIMIZE TABLE

 

domāju, šeit lauciņu tweakošanai ir pietiekoši - laiks mēģināt

Link to comment
Share on other sites

  • 1 month later...

×
×
  • Create New...