Avatar billede trophymanager Nybegynder
26. juni 2006 - 15:03 Der er 11 kommentarer og
2 løsninger

Mange tables i mysql

Er der nogen ulemper forbundet med at have mange tables i mysql? Vi taler rigtig mange. 10.000+ måske.
Avatar billede arne_v Ekspert
26. juni 2006 - 15:15 #1
Nej - ikke af teknisk karakter.

Men der er stor sandsynelighed for at saa mange tabeller skyldes et forkert
database design.
Avatar billede trophymanager Nybegynder
26. juni 2006 - 17:26 #2
Det kan måske være rigtig nok.

Bruger mysql.

Det drejer sig om et fodboldspil jeg arbejder på. (surprise).

Hvis vi fx tager databasen med al data omkring stillingerne.

Problemet er at der til tider vil være enormt stor trafik = mange queries med select i fra brugerne der ser stillingen. Men samtidig er et javaprogram i gang med at opdatere fordi der bliver spillet kampe.

Når der opdateres låses tabellen og brugerne vil derfor opleve et unødigt delay på deres query. Samtidig vil javaprogrammet brugere mere tid på at finde den række der skal opdateres hvis der er 200.000 rækker i tabellen fremfor hvis der bare er 18 fx.
Avatar billede arne_v Ekspert
26. juni 2006 - 17:37 #3
INSERT hastighed boer ikke afhaenge af antal raekker

UPDATE hastighed vil kun afhaenge meget af antal raekker hvis der mangler
de rigtige index - med de rigtige index saa boer af mange raekker vaere minimal
Avatar billede arne_v Ekspert
26. juni 2006 - 17:38 #4
med hensyn til samtidige queries og updates, saa burde det ogsaa vaere til at haandtere,
men vi skal vide om du bruger MyISAM eller InnoDB tabeller og hvis det er
InnoDB tabeller - hvilket transaction isolation level du koerer med
Avatar billede trophymanager Nybegynder
26. juni 2006 - 17:44 #5
Hep.

Jeg bruger MyIsam.
Avatar billede trophymanager Nybegynder
26. juni 2006 - 18:02 #6
Og hundrededele af sekunder mht. hastigheden af opdateringen vil have stor betydning :)
Avatar billede sebastian_1993 Nybegynder
26. juni 2006 - 19:20 #7
Du har intet gjort galt det er simpelthen bare en skidt server den køre på.
Avatar billede trophymanager Nybegynder
26. juni 2006 - 22:04 #8
Nu har jeg absolut ingen problemer med hastigheden. Jeg ville bare høre om der var nogen ulemper for at bruge så mange tables. Det ville forhindre at processen der opdaterede skulle lave en lock på en kæmpe datatabel.
Avatar billede arne_v Ekspert
27. juni 2006 - 01:08 #9
For MyISAM er der ikke problemer med at blande SELECT og INSERT.

Der kan være problemer med at blande SELECT og UPDATE. Hvis enten
SELECT eller UPDATE kører meget længe.

En opslitning i flere tabeller er set i den slags tilfælde.

Men medmindre du er rigtig skrap til det, så er der stor sandsynlighed for
at slut resultatet ved en sådan opsplitning er dårligere performance.

Og i de tilfælde vil et skift til InnoDB også være en potentiel løsning.
Avatar billede hjochums Nybegynder
27. juni 2006 - 20:00 #10
Hvis der er 10.000+ tabeller kan der være problemer med at åbne og lukke tablerne hele tiden (Da tables_open cache nok ikke kan være så høj :)). Da hver tabel er 1 eller 2 filer på filsystemet, kan det give problemer med antal åbne filer samtidig.

Så jeg ville nok også prøve med innoDB, hvor der "kun" låses for den række der opdateres i.
Avatar billede trophymanager Nybegynder
28. juni 2006 - 22:55 #11
ah tak for den ekstra information hjochums. Det var lige det jeg søgte efter.

Hvis arne og dig smider et svar.
Avatar billede hjochums Nybegynder
28. juni 2006 - 23:00 #12
Cool. :)
Avatar billede arne_v Ekspert
28. juni 2006 - 23:32 #13
ok
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