Permalänk
Medlem

Optimera en MySql databas?

I phpmyadmin finns det en funktion som heter optimize. Detta bör man köra ofta och det gör jag.

Finns det något sätt i win32 att göra detta automatiskt (schemalagt) typ 1 gång varje morgon eller liknande så man slipper göra det manuelt?

Visa signatur

Är man inte bra så måste man se bra ut!

Permalänk
Medlem

Jag antar att 'mysql', alltså interfacet till MySQL finns i win32-versionen, så den kan du använda ihop med någon bat-fil och schemalagda aktiviter kanske?

Visa signatur

"..make the move over to a rackmount case, because rackmount cases get you chicks.."
-- Routermonkey

Permalänk
Medlem

Ska se vad ajg kan finna...

Visa signatur

Är man inte bra så måste man se bra ut!

Permalänk
Medlem

Glöm inte att köra en analyze också som kontrollerar att fördelningen av index för en tabell är korrekt.

Permalänk
Hedersmedlem

Från manualen:

"OPTIMIZE TABLE should be used if you have deleted a large part of a table or if you have made many changes to a table with variable-length rows (tables that have VARCHAR, BLOB, or TEXT columns). Deleted records are maintained in a linked list and subsequent INSERT operations reuse old record positions. You can use OPTIMIZE TABLE to reclaim the unused space and to defragment the datafile.

For the moment, OPTIMIZE TABLE works only on MyISAM and BDB tables. For BDB tables, OPTIMIZE TABLE is currently mapped to ANALYZE TABLE."

Prestandavinsten av en optimize är väldigt liten om du inte just raderat stora mängder data från tabellen. Vill du optimera tabellen/tabellerna för prestanda är en analyze att föredra (som Apachez föreslog ovan). En analyze ser till att tabeller joinas ihop i rätt ordning.

Som svar på din fråga så kan du t.ex. schemalägga "myisamchk -a".

Permalänk
Medlem

-a ger analyze eller?

Visa signatur

Är man inte bra så måste man se bra ut!

Permalänk
Medlem

Måste man fylla i vilken databas som ska analyseras eller kan man köra alla som finns?

Visa signatur

Är man inte bra så måste man se bra ut!

Permalänk
Medlem

Själv så har jag lagt till en 'mysql_query("OPTIMIZE TABLE" . $table)' i miina scripts som tar bort rows ur databasen i admin-sektionen av min site så den automatiskt körs efter alla operationer är klara.

Har en variabel i min config-fil; $run_optimize = 1|0; //på|av.

Visa signatur

¤Hakuna Matata¤
# Ibland försvinner 'j', 'å', 'ä' och 'ö'...
Signatur redigerad av GAPa. I textstorlek tre får man bara ha en rad.

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av tear
Måste man fylla i vilken databas som ska analyseras eller kan man köra alla som finns?

Nej, du anger vilka filer den ska agera på.

Se nedanstående och efterföljande sidor:

http://www.mysql.com/doc/en/Table_maintenance.html