» »

mysql "hitrost"

mysql "hitrost"

Veron ::

s samim php + mysql zadevam se ne ukvarjam glih veliko časa, ampak sedaj imam eno malo večjo zadevo za izdelat, pa se mi poraja vprašanje hitrosti, ko je v sistemu recimo (relativno) "ogromno" podatkov.

torej recimo da baza vsebuje nekje od 1000-3000 novih vpisov v enem letu, torej recimo v roku 5let bi bilo v bazi (mišljeno ista tabela) 10.000-15.000 vpisov.

zanima me, kako se zadeva obnaša, predvsem hitrost, ko ima tako število podatkov v eni tabeli (druga bo imela podobno, vendar malo manj). Če je to preveč podatkov v tabeli, da zna hitro upočasniti sistem, kakšna je najboljša rešitev? da za vsaj dogodek (ob kreiranju dogodek) se tudi ustvari nova tabela? ali raje kreiram novo tabelo glede na leto (08-09,09-10,...)?

1 dogodek ima recimo nekje od 50-150 (odvisno od dogodka) vpisov. V glavnem rabil kak dober nasvet, kako zadevo postavit, da bo še vedno ali z leti ali v primeru zelo hitre rasti (uporabe aplikacije) zadeva še vedno delovala dokaj hitro?

pa še vprašanje, pozna kdo kako dobro knjigo o objektnem programiranju v php? ker tele zadeve okoli dedovanja, objektov mi niso najbolj jasne,... eknjiga ali navadna (bom skoču v knjižnico)

MrBrdo ::

Za velike tabele je pomembno kako indekse postaviš (mislim da je nekako tako, več ko imaš indeksov počasnejše je dodajanje in večja je baza, ampak je hitrejše branje), potem za iskanje pa imaš še razne posebne aplikacije npr. ThinkingSphinx... Drugače mislim da je PostgreSQL hitrejši od MySQL, to je tako ne-expertno mnenje, lahko še malo raziščeš. Potem če imaš zelo veliko bazo in rabiš zelo hitro se postavi več strežnikov, ponavadi je en master, ki se uporablja za pisanje, ostali pa so neke vrste mirrorji iz katerih se samo bere (tu se predpostavlja da gre za tako aplikacijo kjer je veliko manj pisanj kot branj).

PHP je najslabši jezik na katerem se lahko učiš osnove objektnega programiranja... S tem da enemu jeziku samo dodaš razrede in cel std. lib. pustiš še vedno strukturni še nisi naredil pravega objektnega jezika, ki PHP za moje pojme definitivno ni. Moje mnenje.

V glavnem kar se tvojega MySQL problema tiče ti predlagam da si prebereš kaj o indexih in mogoče tudi pogledaš kakšen PostgreSQL.
Dinamično kreiranje nove tabele (glede na leto) - ne tega počet, it's just wrong :)
MrBrdo

Zgodovina sprememb…

  • spremenilo: MrBrdo ()

Veron ::

hm, kar se tiče PostgreSQL, sm omejen na MySQL, tukaj ne morem spreminjat zadev. Bom pa vsekakor pogledal za indexiranjem, kak nasvet, kako iskat (ključne besede) bi še prav pršle, da ne tavam preveč po temi :-) Ker do sedaj nisem imel opravka z večjimi količinami podatko v bazi.

edit: aya kot si omenil, tukaj bo veliko več branja kot pisanja

Zgodovina sprememb…

  • spremenil: Veron ()

techfreak :) ::

Če boš delal z bazo je najbolje pogledati v smeri ORMja. Za PHP bi naj bil Doctrine zelo popularen.

Indeksi so verjetno najbolj pomembna stvar pri bazah in morajo biti pravilno postavljeni.

Indeksi morajo biti na vseh poljih po katerih se išče.

MrBrdo: ThinkingSphinx je knjižnica ki poveže Sphinx z ActiveRecord. Program, ki omogoča full-text iskanje je pa Sphinx za katerega obstajajo tudi knjižnice za PHP.

Sphinx pa potrebuješ samo takrat, ko iščeš med tekstom.

AndrejS ::

To ni nič vpisov, kaj maš ti v bazi. To bi še access baza delala normalno. Tako da brez skrbi.

Veron ::

Torej predlagate, da se zadeve lotim kar klasično, ena tabela pa še poštimam indexe (že nekaj našel na to temo, zanimivo branje) in bi moralo delat ok? Gre sicer za neko spletno aplikacijo, ki bo predvsem obremenjena v zimski sezoni.

Koliko poizvedb hkrati pa lahko sprejme mysql? (pričakuje se naval ob določenih terminih)

Packač ::

Veron je izjavil:

Torej predlagate, da se zadeve lotim kar klasično, ena tabela pa še poštimam indexe (že nekaj našel na to temo, zanimivo branje) in bi moralo delat ok? Gre sicer za neko spletno aplikacijo, ki bo predvsem obremenjena v zimski sezoni.

Koliko poizvedb hkrati pa lahko sprejme mysql? (pričakuje se naval ob določenih terminih)


To je pa preveč odvisno od samih poizvedb, hardwarea, seveda indeksov, ... za konkreten odgovor.

V glavnem poskrbi za ustrezno keširanje (cache).

levaky ::

Pri meni na strani(phpBB forum) se v malo bolj zasedenih urah izvrši okoli 40 querijev/sekundo in ni videti, da bi strežnik kaj hudo basalo(load average je okoli 0.2).

Je pa baza velika cca 200MB, od tega je v tabeli z objavami okoli 90 000 zapisov, tako da tvojih 15000 nebi smelo delati nobenih problemov.

Matej

DeeJay ::

Za tolko malo podatkov kot jih boš imel ti sploh ni problema.
Osebno laufam internetno stran z 9,6 miljoni pesmi v eni mysql tabeli in okoli 40.000 obiskovalcev na dan. In dela brez problemov... sam indexe pravilno postavi na vsa polja kjer boš delal SORT BY ali WHERE poizvedbe.

Tabela: track
Vrstice: 9,603,274

SELECT * FROM `track` WHERE `artist` =946
(1,612 skupaj, Poizvedba je potrebovala 0.1855 s)

SELECT t1.name AS title, t2.name AS artist FROM track t1, artist t2 WHERE t1.artist = t2.id AND t2.id =123
2,185 skupaj, Poizvedba je potrebovala 0.1662 s

to je samo za primer. Če pa imaš dosti iskanja po kakih textovnih poljih potem pa ti predlagam uporabo Sphinx Full Text indexerja (http://www.sphinxsearch.com)

Veron ::

tekstovnega iskanja je minimalno, pa še to bo zelo malo poizvedt, ker bo sami na admin strani na voljo. Bom zadeva potem zaenkrat postavil kot je bilo prvotno mišljeno in si dobro prebral zadeve okoli indexiranja. če pozna kdo kak dobr člank na temo indexov, bi se priporočal.


Vredno ogleda ...

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

MySQL ali kaj drugega?

Oddelek: Programiranje
102341 (1659)          
»

Nova različica podatkovne baze PostgreSQL 9.5 prinaša obilico novosti (strani: 1 2 )

Oddelek: Novice / Ostala programska oprema
5717891 (14757) McAjvar
»

MemSQL

Oddelek: Programiranje
131796 (1552) vorantz
»

Delphi ali c++?

Oddelek: Programiranje
363063 (2620) mspiller
»

[PHP + mysql] Kako vstaviti več vrstic naenkrat ?

Oddelek: Programiranje
131493 (1300) Ziga Dolhar

Več podobnih tem