Avatar billede hugopedersen Nybegynder
15. oktober 2008 - 09:17 Der er 10 kommentarer og
2 løsninger

MyISAM eller InnoDB

Jeg ved godt det er et omdiskuteret emne, men alligevel.

Jeg er ved at lave en form for datawarehouse på en MySQL 5 (64 bit) men jeg synes at performance er noget dårlig på serveren når databasen er InnoDB typen.
Jeg bruger mange queries der opretter/opdaterer data og jeg har en mistanke om at det kan være transactionloggen der er skyld i performance nedgang i performance.
Avatar billede erikjacobsen Ekspert
15. oktober 2008 - 09:33 #1
Hvis du bruger transaktioner, så skal du jo ikke bruge MyIsam. Opdatering af transaktionsloggen koster selvfølgelig, men man får muligheden for transaktioner til gengæld. Du bruger indexer på tabellerne korrekt?
Avatar billede hugopedersen Nybegynder
15. oktober 2008 - 09:37 #2
Ja det er jo et godt spørgsmål om jeg bruger index korrekt :-)
Jeg har index på de felter jeg søger mest på og de felter der bruges af queries til joins, så jeg mener ikke der et meget at hente der.

Og jeg bruger ikke transaktioner.
Avatar billede erikjacobsen Ekspert
15. oktober 2008 - 09:43 #3
"en form for datawarehouse" lyder seriøst ;)  Så jeg undrer mig over at du ikke skulle have behov for transaktioner. At sætte rigtige indexer på er både en kunst og en videnskab - kig på EXPLAIN kommandoen i MySql. Det tager lidt mere end 5 minutter at lære at bruge den, men tiden er tjent godt hjem.
Avatar billede hugopedersen Nybegynder
15. oktober 2008 - 09:50 #4
Jeg samler data op fra en masse Paradox filer som jeg gemmer på en MySQL server - den del er i orden og kører i et Delphi program jeg har lavet til formålet.
(samling af data ~ datawarehouse)

Alle disse data skal jeg så kunne bruge til nogle udtræk af omsætningstal som jeg laver som rapporter i en M$ Access db der connecter via ODBC
Avatar billede fsconsult.dk Nybegynder
15. oktober 2008 - 10:15 #5
Mht index, er det en god ide at aktivere MySQL's logning af langsomme forespørgsler, og bruge dem som udgangspunkt for at oprette indexes (sammen med explain), fremfor at kaste en masse tilfældige index på (udover de indlysende på primær/fremmednøgler)
Avatar billede hugopedersen Nybegynder
15. oktober 2008 - 10:17 #6
Kan du fortælle mig hvordan jeg aktiverer den logning?
Avatar billede fsconsult.dk Nybegynder
15. oktober 2008 - 10:28 #7
i din my.cnf (typisk /etc/mysql på linux), skal du udkommentere/tilpasse flg. linier:

# hvor skal logfilen placeres
log_slow_queries        = /var/log/mysql/mysql-slow.log

# hvad er grænsen for hvad en langsom query er
long_query_time = 1

# evt. udkommenter denne, som vil logge samtlige queries som ikke benytter et eller andet index
#log-queries-not-using-indexes


du kan evt bruge mysqldumpslow kommandoen til at vise indholdet af logfilen (den sammenskriver varianter af samme queries
Avatar billede arne_v Ekspert
15. oktober 2008 - 15:25 #8
Kun et par bemaerkninger:

1)  log og EXPLAIN til at finde problemet lyder som en god strategi

2)  hvis det er muligt at skifte fra ODBC til et andet database API, saa kunne
    det muligvis forbedre performance

3)  jeg er ikke overrasket over at der ikke bruge transaktioner i en DWH database,
    transaktioner er absolut noedvendige i en OLTP database, men en DWH datase er
    ofte en natlig ETL process og saa query only
Avatar billede hugopedersen Nybegynder
15. oktober 2008 - 15:29 #9
Jeg kender ikke anden mulighed end ODBC hvis Access og MySQL skal snakke sammen. Og jeg kender slet ikke andre værktøjer der har samme gode rapportmuligheder som Access (og så har jeg altid brugt Access og er efter bedste overbevisning ret god til det :-) )

Jeg synes både arne_v og erik skal smide et svar. Så kan i deles om point for jeres input.
Avatar billede erikjacobsen Ekspert
15. oktober 2008 - 15:33 #10
Ingen point til mig, tak.
Avatar billede arne_v Ekspert
16. oktober 2008 - 01:49 #11
Du kunne prøve en ADO provider til MySQL f.eks.:
  http://sourceforge.net/projects/myoledb/

Nogen gange performer ADO bedre end ODBC.

Men måske ligger problemet i Access - det er jo high-end.

Andre kendte rapport tools er Crystal Reports og Business Objects. Men prisen på dem er prisen på Access i anden eller tredie !

Og et svar.
Avatar billede hugopedersen Nybegynder
16. oktober 2008 - 06:47 #12
myoledb findes så vidt jeg kan finde frem til kun til 32bit Windows og jeg sidder med en monstermaskine med XP 64 på, så det vil nok ikke gå godt.

Crystal Reports brugte jeg for mange år siden til VB inden jeg fandt en genvej til at lave rapporterne i Access og så kalde dem fra mit VB program. Det var lidt dirty programmering men det virkede. Jeg syntes nemlig at Crystal Reports i daværende udgave var noget skrammel - men det er vel 15 år siden så det er vel blevet bedre.
Business Objects kender jeg ikke.
Det jeg godt kan lide ved Access er at det er nemt/hurtigt at designe en rapport og så kan man ellers programmere sig ud af næsten alle tænkelige brugerdumheder. Og når man skal lave noget der skal bruges af andre, er det et must :-)
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