15. oktober 2008 - 09:17Der 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.
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
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?
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.
"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.
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
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)
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
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.
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 :-)
Synes godt om
Ny brugerNybegynder
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.