Kom ihåg mig?
Home Menu

Menu


Optimize mysql databas?

Ämnesverktyg Visningsalternativ
Oläst 2006-11-30, 06:41 #1
Farang Farang är inte uppkopplad
Medlem
 
Reg.datum: Mar 2005
Inlägg: 105
Farang Farang är inte uppkopplad
Medlem
 
Reg.datum: Mar 2005
Inlägg: 105
Om man har ett antal konton/domäner på en burk. Varje konto har en mysql databas samt ett antal tabeller.

Om man skulle vilja köra optimize på allt (alla konton/domäner), alltså inte välja enskild databas samt tabell. Går det att göra så?
Farang är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-11-30, 09:53 #2
PeterM PeterM är inte uppkopplad
Medlem
 
Reg.datum: Dec 2004
Inlägg: 56
PeterM PeterM är inte uppkopplad
Medlem
 
Reg.datum: Dec 2004
Inlägg: 56
Går att göra med valfritt scriptspråk som kan prata med MySQL-servern. Nånting sånt här borde fungera i PHP. Inte testkört, men eventuella fel borde vara enkla att rätta till. Används vanliga mysql-extension istället för mysqli så behöver man bara kasta bort i'na från funktionsnamnen och plocka bort $mysqli från argumenten.

Kod:
<?php
// se till att bli klar om scriptet kallas från en webläsare
set_time_limit(0);
ignore_user_abort(1);

// anslut till mysql
$mysqli = mysqli_connect('host', 'användare', 'lösen');

// databaser som ej ska röras
$databases_skip = array('mysql', 'information_schema', 'test');

// hämta alla databaser
$databases = array();
$q = mysqli_query($mysqli, "SHOW DATABASES");
while ($row = mysqli_fetch_row($q)) {
 if (!in_array($row[0], $databases_skip)) {
  $databases[] = $row[0];
 }
}

// för varje databas...
foreach ($databases as $database) {
 // ... hämtas alla tabeller...
 $q = mysqli_query($mysqli, "SHOW TABLES IN " . mysqli_real_escape_string($mysqli, $database));
 while ($row = mysqli_fetch_row($q)) {
  // ... som sedan optimeras
  mysqli_query($mysqli, "OPTIMIZE TABLE " . mysqli_real_escape_string($mysqli, $row[0]));
 }
}
?>
PeterM är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-11-30, 12:51 #3
PeterM PeterM är inte uppkopplad
Medlem
 
Reg.datum: Dec 2004
Inlägg: 56
PeterM PeterM är inte uppkopplad
Medlem
 
Reg.datum: Dec 2004
Inlägg: 56
Bugfix.

mysqli_query($mysqli, "OPTIMIZE TABLE " . mysqli_real_escape_string($mysqli, $row[0]));
ändras till
mysqli_query($mysqli, "OPTIMIZE TABLE " . mysqli_real_escape_string($mysqli, $database) . "." . mysqli_real_escape_string($mysqli, $row[0]));
PeterM är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-11-30, 19:45 #4
Farang Farang är inte uppkopplad
Medlem
 
Reg.datum: Mar 2005
Inlägg: 105
Farang Farang är inte uppkopplad
Medlem
 
Reg.datum: Mar 2005
Inlägg: 105
Tackar för hjälpen. Har dock inte haft tid att prova det. Ska titta på det i helgen.
Farang är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 16:20.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017