/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MySQL's begrænsninger?
Fra : Morten Trab


Dato : 05-10-03 11:09

I forbindelse med et nyt site (www.smsnyheder.com) har vi i udviklingsfasen
diskuteret lidt om MySQL kan håndtere alle de database kald, samt den mængde
data der kommer med tiden...

Her i starten kan MySQL SAGTENS følge med, men med tiden forventes der mange
kald og store mængder data...

Hvor kommer MySQL's begrænsninger, og er der i det hele taget sådanne??

Og i så fald at der er begrænsninger vi kan risikere at rende panden imod,
hvor skal vi så hen mht. database der kan håndtere det, samt køre på Linux??

--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.

Web: http://www.blackchart.dk



 
 
Morten Guldager (05-10-2003)
Kommentar
Fra : Morten Guldager


Dato : 05-10-03 11:32

Sun, 05 Oct 2003 at 10:08 GMT Morten Trab wrote
> I forbindelse med et nyt site (www.smsnyheder.com) har vi i udviklingsfasen
> diskuteret lidt om MySQL kan håndtere alle de database kald, samt den mængde
> data der kommer med tiden...
>
> Her i starten kan MySQL SAGTENS følge med, men med tiden forventes der mange
> kald og store mængder data...

Ganske normal udvikling. Fornuftigt at bekymre sig på forhånd.

> Hvor kommer MySQL's begrænsninger, og er der i det hele taget sådanne??

Hvis I bruger transaktioner er Mysql ikke super hurtig. Hvis I bruger MyISAM
filer (tabeller) skal i passe på ved inserts da mysql gerne måser hele tabellen
mens den opdaterer sine index'er.

Min erfaring med MySQL er at hvis man kan undvære transaktioner er det kun
dårligt applikationsdesign der kan kvæle den.

Tabeller unden fornuftige index'er, enorme mængder data der skal sorteres til
ingen verdens nytte o.s.v.

Stil som krav til udviklerene at der skal argumenteres for hver sql som explain
mener koster mere end et par læste rækker.

Da MySQL ikke (i en produktions-version) kan køre med subselects vil man ofte
komme til at kode disse i applikationen. Det bør man i sin analyse beregne som
en enkelt sql, som her er det altså summen af rækker rapporteret med explain
der skal trigge de rynkede øjenbryn.

MySQL har ikke view's. Det kan jeg godt lide, da man så med ro i sjælen kan
tillade sig at lave kolonner med redundant information. Disse redundante
kolonner er database-design-mæssigt noget hø, men de kan speede en bikses
select gevaldigt op.

Ulempen er naturligvis at det fylder mere på disken og tager en lille smule
længere at skrive data. Og så naturligvis at man skal kode det er producere
det redundante data.

Men disk og cpu-tid er som oftests forsvindende billigt i forhold til det
en enkelt søgning på et disksystem koster.

> Og i så fald at der er begrænsninger vi kan risikere at rende panden imod,
> hvor skal vi så hen mht. database der kan håndtere det, samt køre på Linux??

Måske noget med den maksimale tabelstørelse. Gamle Linux'er synes ikke om
filer stører end 2G. Dette arves så af MySQL som ikke gør super fornuftigt
hvis datamængden overskrider denne grænse.

I kan måske preloade jeres "site" med syntetiske bruger-data, for så at teste
performance.

Man kan også få MySQL til at logge SQL'er der tager længere end en grænse i
selv sætter. Hvis I fylder en hulens masse realistiske data i databasen, og
så sætter grænsen til 1 sekund vil i måske fange nogle smuttere fra
explain-øvelsen.

Hvis I virkelig skal kunen skalere som gale kan det anbefales at afskille
selects og updates+inserts+deletes til at bruge hver deres database-handle.
Det vil vise sig nyttigt hvis i sidenhen beslutter at splitte
database-serveren op på flere maskiner via replikering.

Replikering er dog kun nyttigt som performance-booster hvis I har markant
flere læsninger end skrivninger.

Replikering var forøvrigt forbavsende let at få til at virke. (synes jeg)


/Morten

Morten Trab (05-10-2003)
Kommentar
Fra : Morten Trab


Dato : 05-10-03 11:41

"Morten Guldager" <spamtrap@mogul.dk> skrev i en meddelelse
news:slrnbnvspk.3k4.spamtrap@linuxine.mogul.dk...

[snip - en hel masse god læsestof]

Mange tak for det hurtige svar, der er jo lidt at tage til eftertanke i den
vidre udvikling..

Jeg vil tage dette med til den vidre evaluering, som nok sker imorgen, så de
andre i gruppen har lidt at kigge på...

--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.

Web: http://www.blackchart.dk



Lars Dybdahl (05-10-2003)
Kommentar
Fra : Lars Dybdahl


Dato : 05-10-03 13:22

Morten Guldager wrote:
> Hvis I bruger transaktioner er Mysql ikke super hurtig. Hvis I bruger
....

> Det vil vise sig nyttigt hvis i sidenhen beslutter at splitte
> database-serveren op på flere maskiner via replikering.
....

Jeg er enig med Morten Guldager, dog vil jeg lige pege på
http://firebird.sf.net/ som et godt alternativ til MySQL. Den er
understøttet stort set over det hele, både native php, odbc, osv. Den kan
enten administreres med IBConsole eller gratis-udgaven af
http://www.ibexpert.com/.

Firebird er efter min mening nemmere at benytte end f.eks. MySQL, bl.a.
fordi en database er lig en fil, og fordi disse filer gerne må kopieres fra
maskine til maskine, da deres filformat er standardiseret. Man skal
selvflg. kun kopiere filen, når den ikke er i brug af serveren.

Firebird er interessant, hvis I ønsker at bruge transaktioner. Det kan
hurtigt blive relevant, hvis I får rigtig mange brugere på systemet, og der
begynder at komme fare for, at en bruger "træder en anden over tæerne" i en
opdatering.

Transaktionerne i Firebird har den geniale fordel, at de gerne må være åbne
i rigtig lang tid, uden at det ødelægger serverens performance. Så kan man
f.eks. trække en kompiliceret statistik fra serveren mens den er i drift,
og man kan være sikker på, at driften ikke får indflydelse på statistikken
ved at alle data er uændret sålænge en transaktion ikke er committed eller
rolled back.

Firebird er videreudviklingen af Interbase, der bl.a. har været brugt enormt
meget af de danske banker, New York Stock Exchange, de amerikanske 911
centraler (nødhjælp) osv. På et tidspunkt for ca. 5-7 år siden var det den
næstmest udbredte database i Danmark efter Oracle, målt i antal solgte
licenser. Firebird er gratis, da den er Open Source.

Jeg bruger Firebird i stedet for MySQL, når det er teknisk muligt til mine
webløsninger, og det kører bare.

Mht. performance, så så jeg på et tidspunkt en sammenligning mellem bl.a.
Firebird og MySQL 3.23 - dvs. en transaktionsbaseret database mod en
ikke-transaktionsbaseret database. Resultatet var, at:

- MySQL var en lille smule hurtigere ved lav belastning.
- Firebird var hurtigst ved høj belastning, dvs. mange samtidige brugere.
- FIrebird kunne tage flere samtidige brugere.

Forskellen var dog meget lille, men skal man bruge transaktioner, er
Firebird langt foran.

Lars.

--
Freelance programmør


Morten Guldager (06-10-2003)
Kommentar
Fra : Morten Guldager


Dato : 06-10-03 09:04

Sun, 05 Oct 2003 at 12:22 GMT Lars Dybdahl wrote
>
> Jeg er enig med Morten Guldager, dog vil jeg lige pege på
> http://firebird.sf.net/ som et godt alternativ til MySQL.

Hmm, jeg klikkede lidt rundt på sitet, men kunne ikke finde en
manual til den seneste version.

Nogen der kan guide mig?



/Morten

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste