Teil von  SELFPHP   Teil von  Code Snippets / MySQL / Datenbank Wartung
  +++ SELFPHP CronJob-Service :: Jetzt auch als Professional-Version verfügbar! +++



:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP? In über 120.000 Beiträgen finden Sie sicher die passende Antwort!  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

:: Qozido ::

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.   

 
 
Tabellen mit Überhang in einer MySQL-Datenbank ermitteln und optimieren





Beispielaufgabe

Tabellen mit Überhang in einer MySQL-Datenbank ermitteln und optimieren.



Beschreibung

Die Funktion mysqlOptimizeTables() ermittelt in einer Datenbank die Tabellen, die einen Überhang haben. Ein Überhang kann entstehen, wenn viele Daten geändert oder z.B. gelöscht werden. Dieser Überhang ist nicht genutzter Speicher und wird sich stetig bei Änderungen vergrößern. Daher ist es ratsam von Zeit zu Zeit eine Tabelle zu optimieren, um diesen Speicher wieder freizugeben.

Sind alle Tabellen mit Überhang ermittelt, optimiert die Funktion jede der zu optimierenden Tabellen. Als Rückgabewert liefert die Funktion ein Array mit folgenden Werten für jede optimierte Tabelle.
  • Table: Der Tabellenname in der Form <Datenbankname>.<Tabellenname>
  • Op: Die Art der Aufgabe - hier immer optimize
  • Msg_type: Den Typ der Meldung - status, error, info oder warning
  • Msg_text: Die zurückgelieferte Meldung
  • optimized_bytes: Die Anzahl der Bytes mit Überhang

Folgendes ist bei dieser Funktion zu beachten:
  • Der MySQL-Befehl OPTIMIZE TABLE funktioniert nur bei MyISAM-, BDB- und InnoDB-Tabellen.
  • Die Tabellen werden während der Laufzeit von OPTIMIZE TABLE gesperrt, daher ist es ratsam diese Funktion zu Zeiten aufzurufen, in der nicht viele Zugriffe auf die Tabelle stattfinden.
  • Je nach Beanspruchung der Tabelle ist es ausreichend, eine Tabelle im Wochen- oder Monatsintervall zu optimieren.




<?PHP 

function mysqlOptimizeTables$database ) {
    
    
$sql "SHOW TABLE STATUS FROM " $database;
    
    
$result = @mysql_query$sql );
    
    
$dataFree = array();
    
    
$x 0;
    
    while( ( 
$row = @mysql_fetch_array$resultMYSQL_ASSOC ) ) == true ){
        
        if ( 
$row["Data_free"] > ) {
            
            
$sql "OPTIMIZE TABLE " $database '.' $row["Name"];
            
            
$optimize = @mysql_query$sql );
            
            
$rowFetch = @mysql_fetch_array$optimizeMYSQL_ASSOC );
            
            
$dataFree[$x]['Table'] = $rowFetch["Table"];
            
$dataFree[$x]['Op'] = $rowFetch["Op"];
            
$dataFree[$x]['Msg_type'] = $rowFetch["Msg_type"];
            
$dataFree[$x]['Msg_text'] = $rowFetch["Msg_text"];
            
            
$dataFree[$x]['optimized_bytes'] = $row["Data_free"];
            
            
$x++;
            
        }
                
    }
    
    return 
$dataFree;
    
}

?>



Anwendungsbeispiel

<?PHP

$conn 
= @mysql_connect("localhost""mysql_user""mysql_password");

if (!
$conn) {
    echo 
"Fehlende Verbindung zur DB: " mysql_error();
    exit;
}

// Datenbankname
$database 'selfphp-testdb';

print_rmysqlOptimizeTables$database ) );

?>



Ausgabebeispiel: Browseransicht

Array
(
    [0] => Array
        (
            [Table] => db240757364.ox_campaigns
            [Op] => optimize
            [Msg_type] => status
            [Msg_text] => OK
            [optimized_bytes] => 20
        )

    [1] => Array
        (
            [Table] => db240757364.ox_data_raw_ad_click
            [Op] => optimize
            [Msg_type] => status
            [Msg_text] => OK
            [optimized_bytes] => 75772
        )

    [2] => Array
        (
            [Table] => db240757364.ox_data_raw_ad_impression
            [Op] => optimize
            [Msg_type] => status
            [Msg_text] => OK
            [optimized_bytes] => 230221852
        )

    [3] => Array
        (
            [Table] => db240757364.ox_data_summary_ad_zone_assoc
            [Op] => optimize
            [Msg_type] => status
            [Msg_text] => OK
            [optimized_bytes] => 4359900
        )

    [4] => Array
        (
            [Table] => db240757364.ox_preference
            [Op] => optimize
            [Msg_type] => status
            [Msg_text] => OK
            [optimized_bytes] => 1088
        )

    [5] => Array
        (
            [Table] => db240757364.ox_session
            [Op] => optimize
            [Msg_type] => status
            [Msg_text] => OK
            [optimized_bytes] => 5792
        )

    [6] => Array
        (
            [Table] => db240757364.ox_zones
            [Op] => optimize
            [Msg_type] => status
            [Msg_text] => OK
            [optimized_bytes] => 184
        )

)






 




:: Premium-Partner ::

Webhosting/Serverlösungen


Premium-Partner MECO Systemhaus GmbH & Co. KG
Premium-Partner PSW GROUP GmbH & Co. KG
Premium-Partner BPI-Systeme
Premium-Partner Pixel X
Premium-Partner
 

:: SELFPHP Sponsoren ::


Microsoft Deutschland GmbH
twosteps.net - ...Premium-Webhosting
Sedo - Bei uns wird PHP großgeschrieben
hostfactory.ch - OptimaNet Schweiz AG
ZEND - The PHP Company
Kaspersky Labs
HighText iBusiness
SELFPHP Sponsoren
 

Qozido


© 2001-2009 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt