Avatar billede lsolesen Nybegynder
27. november 2006 - 22:06 Der er 7 kommentarer og
1 løsning

Optimering af database

Jeg har en mysql-database, som jeg gerne vil optimere så godt som muligt.

Jeg kender ANALYZE og OPTIMIZE og bruger dem jævnligt. Jeg kigger så på Runtime Information i PHPMYADMIN og finder følgende værdier.

Slow_queries 3 M
Handler_read_rnd 4 M
Handler_read_rnd_next 3,04 G
Created_tmp_disk_tables 21 k
Select_full_join 4 k
Sort_merge_passes 2
Opened_tables 32 k
Table_locks_waited 76

Jeg har så tilføjet nogle INDEX til visse rækker i nogle tabeller, men jeg synes at jeg famler lidt i blinde.

Mysql-databasen ligger på en ekstern server, og jeg kan desværre ikke få lov til at tilgå fx Slow Queries Log. Er der nogen der kan give nogle pointers til, hvordan jeg kan forbedre min database?

Tabellerne kan findes her:

http://www.legestue.net/sql.txt

--
Lars Olesen
Avatar billede arne_v Ekspert
28. november 2006 - 04:51 #1
du skal sammenholde tabel struktur med de hyppigst brugte queries
Avatar billede lsolesen Nybegynder
28. november 2006 - 19:10 #2
arne v -> det er naturligvis rigtig, omend svaret er noget kortfattet :)
Avatar billede arne_v Ekspert
28. november 2006 - 19:21 #3
he he

hvis du poster nogle af dine hyppigst brugte queries, saa vi kan sammenholde
dem med din tabel struktur, kan vi sikkert vaere lidt mere konkret med
hensyn til indexes
Avatar billede arne_v Ekspert
28. november 2006 - 19:26 #4
Ellers skal der som hoved regel index paa:

felter som indgaar i join betingelser og som ikke er primaer noegler

felter som bruges til udvaelgelse af raekker via = og LIKE (dog undtaget LIKE hvis
vaerdien starter med %)
Avatar billede lsolesen Nybegynder
28. november 2006 - 22:11 #5
Jeg har lavet en liste af nogle hyppige sql-sætninger nederst i http://www.legestue.net/sql.txt.

Alternativt skriver jeg alle sql-sætninger ud på vores developer-site. Du kan logge direkte ind på devel.intraface.dk/signup/.

Jeg ved at der er et par sql, hvor vi bruger *, men dem er vi ved at have styr på. Vi er mere interesseret i de andre sql-sætninger.

Håber det kan klargøre tingene lidt.
Avatar billede lsolesen Nybegynder
29. november 2006 - 01:21 #6
Især denne query er lidt problematisk. Hvordan kan jeg optimere den?

SELECT id, DATE_SUB(NOW(), INTERVAL 1 HOUR) AS now, date_sent FROM email WHERE DATE_SUB(NOW(), INTERVAL 1 HOUR) < date_sent;
Avatar billede lsolesen Nybegynder
14. december 2008 - 12:06 #7
Smid lige nogle svar.
Avatar billede arne_v Ekspert
20. december 2008 - 05:25 #8
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