Avatar billede kgp43 Nybegynder
23. februar 2004 - 13:02 Der er 14 kommentarer og
2 løsninger

Database trafik/belastning

Hejsa,

Jeg har et spørgsmål vedr opsætning af database.
Som det er nu, har jeg en tabel for hver type produkt. Jeg går udfra at dette genere mindre trafik, da mine produkter er delt ud over flere tabeller.

Hvormeget mere trafik vil min database generere, hvis alle produkterne i stedet for lagde i den samme tabel? Og hvad indflydelse har det på belastningen af db'en?
Avatar billede trer Nybegynder
23. februar 2004 - 13:15 #1
Du kan ikke gøre det op på den vis.

Umiddelbart vil det SÆNKE belastningen hvis du samler dine produkter i en og samme tabel.

Det vil nemlig betyde at dine udtræk og dine joins bliver simplere - specielt hvis udtræk dækker mere end et produkt.

At splitte op i et utal af små tabeller er sjældent en fordel - at samle alt i en og samme tabel er heller ikke en fordel. Database design er meget langt at finde en balance gang i forhold til hvor meget man skal normalisere data.
Avatar billede kgp43 Nybegynder
23. februar 2004 - 13:29 #2
Grunden til at jeg ville samle mine produkter i een tabel, er for at gøre en søgning (på alle produkter) nemmere.

Tror bare jeg lader det ligge.
Avatar billede kgp43 Nybegynder
23. februar 2004 - 13:30 #3
Btw. Mine udtræk vil ikke blive mere simple, af at benytte een tabel - kun ved en total søgning.
Avatar billede arne_v Ekspert
23. februar 2004 - 13:40 #4
Selvom du ikke forsimpler dine queries så vil det stadig være en fordel.

Hvis du har flere brugere som selecter data for forskellige produkter, så
vil brug af en tabel gøre udnyttelsen af memory cache mere effektiv og dermed
spare IO og øge performance.
Avatar billede kgp43 Nybegynder
23. februar 2004 - 13:53 #5
ahhh... det er jo en fordel :)

damn, der skal arbejdes i aften :P
Takker for svarene.

Arne_v; Kan du ikke lige lave et svar, så i begge kan få point :)
Avatar billede trer Nybegynder
23. februar 2004 - 13:54 #6
arne_v> fint input. Min viden om MySQL er ikke så detaljeret at jeg turde komme ind på den slags.
Avatar billede arne_v Ekspert
23. februar 2004 - 13:55 #7
svar
Avatar billede arne_v Ekspert
23. februar 2004 - 13:58 #8
trer>

Jeg er heller ikke super kyndig udi MySQL internals.

Men p.g.a. den måde MySQL gemmer (MyISAM) tabeller med 1 fil per tabel, så
må det nødvendigvis være sådan.
Avatar billede trer Nybegynder
23. februar 2004 - 14:05 #9
kqp43> et lille tip, du burde kunne samle dine produkter ret nemt med

insert into sampletprodukt
select * from produkt1
union all
select * from produkt2
union all
select * from produkt3
etc...

Så er der kun det kedelige arbejde med at skrive queries om ...
Avatar billede arne_v Ekspert
23. februar 2004 - 14:23 #10
Forudsat at det er MySQL 4.x ...
Avatar billede kgp43 Nybegynder
23. februar 2004 - 14:42 #11
trer; forstår ikke rigtigt.
Hvad betyder union? (ikke noget jeg før har brugt)
Avatar billede arne_v Ekspert
23. februar 2004 - 14:59 #12
union ligger output fra forskellige SELECT statement "ovenover hinanden".

SELECT * FROM A giver
1 a
2 b

SELECT * FROM B giver
3 c
4 d

(SELECT * FROM A) UNION (SELECT * FROM B) giver
1 a
2 b
3 c
4 d
Avatar billede kgp43 Nybegynder
23. februar 2004 - 15:31 #13
åhhh... I stedet for at lave 3-4 forskellige queries (for at få forskellige data ud fra forskellige tabeller), så kan man nøjes med at lave én query (ved brug af union). Kræver det ikke at kollonerne har forskellige navne i alle tabellerne?
Avatar billede arne_v Ekspert
23. februar 2004 - 15:36 #14
Nej.
Avatar billede trer Nybegynder
23. februar 2004 - 15:42 #15
Du skal blot være opmærksom på forskellen i UNION og UNION ALL.  Med UNION har du en implicit DISTINCT med, dvs at

tabel A
1 a
2 b
3 c

tabel b
1 a
2 d
3 e

giver en UNION 5 rækker ud (dubletten 1 a forsvinder) mens UNION ALL giver 6 rækker ud.
Avatar billede kgp43 Nybegynder
24. februar 2004 - 09:52 #16
Tror ikke det er noget jeg har brugfor lige nu.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester