:: 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!
:: Qozido ::
Die Bilderverwaltung mit Logbuch für
Taucher und Schnorchler.
|
|
Tabellen in einer MySQL-Datenbank analysieren |
Beispielaufgabe
Tabellen in einer MySQL-Datenbank analysieren.
Beschreibung
Die Funktion mysqlAnalyzeTables() analysiert in einer Datenbank alle Tabellen und liefert den Zustand.
Als Rückgabewert liefert die Funktion ein Array mit folgenden Werten für jede analysierte Tabelle.
- Table: Der Tabellenname in der Form <Datenbankname>.<Tabellenname>
- Op: Die Art der Aufgabe - hier immer analyze
- Msg_type: Den Typ der Meldung - status, error, info oder warning
- Msg_text: Die zurückgelieferte Meldung
Folgendes ist bei dieser Funktion zu beachten:
- Der MySQL-Befehl ANALYZE TABLE funktioniert nur bei MyISAM-, BDB- und InnoDB-Tabellen.
- Die Tabellen werden während der Laufzeit von ANALYZE TABLE mit einer Lesesperre versehen, daher ist es ratsam diese Funktion zu Zeiten aufzurufen, in der nicht viele Zugriffe auf die Tabelle stattfinden.
<?PHP
function mysqlAnalyzeTables( $database ) {
$sql = "SHOW TABLES FROM " . $database;
$result = @mysql_query( $sql );
$data = array();
$x = 0;
while( ( $row = @mysql_fetch_array( $result, MYSQL_NUM ) ) == true ){
$sql = "ANALYZE TABLE " . $database . '.' . $row[0];
$analyze = @mysql_query( $sql );
$rowFetch = @mysql_fetch_array( $analyze, MYSQL_ASSOC );
$data[$x]['Table'] = $rowFetch["Table"];
$data[$x]['Op'] = $rowFetch["Op"];
$data[$x]['Msg_type'] = $rowFetch["Msg_type"];
$data[$x]['Msg_text'] = $rowFetch["Msg_text"];
$x++;
}
return $data;
}
?>
|
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_r( mysqlAnalyzeTables( $database ) );
?>
|
Ausgabebeispiel: Browseransicht
Array
(
[0] => Array
(
[Table] => mysql.columns_priv
[Op] => analyze
[Msg_type] => status
[Msg_text] => Table is already up to date
)
[1] => Array
(
[Table] => mysql.db
[Op] => analyze
[Msg_type] => status
[Msg_text] => OK
)
[2] => Array
(
[Table] => mysql.event
[Op] => analyze
[Msg_type] => status
[Msg_text] => Table is already up to date
)
[3] => Array
(
[Table] => mysql.func
[Op] => analyze
[Msg_type] => status
[Msg_text] => Table is already up to date
)
[4] => Array
(
[Table] => mysql.general_log
[Op] => analyze
[Msg_type] => note
[Msg_text] => The storage engine for the table doesn't support analyze
)
[5] => Array
(
[Table] => mysql.help_category
[Op] => analyze
[Msg_type] => status
[Msg_text] => OK
)
[6] => Array
(
[Table] => mysql.help_keyword
[Op] => analyze
[Msg_type] => status
[Msg_text] => OK
)
[7] => Array
(
[Table] => mysql.help_relation
[Op] => analyze
[Msg_type] => status
[Msg_text] => OK
)
[8] => Array
(
[Table] => mysql.help_topic
[Op] => analyze
[Msg_type] => status
[Msg_text] => Table is already up to date
)
[9] => Array
(
[Table] => mysql.host
[Op] => analyze
[Msg_type] => status
[Msg_text] => Table is already up to date
)
[10] => Array
(
[Table] => mysql.ndb_binlog_index
[Op] => analyze
[Msg_type] => status
[Msg_text] => Table is already up to date
)
[11] => Array
(
[Table] => mysql.plugin
[Op] => analyze
[Msg_type] => status
[Msg_text] => Table is already up to date
)
[12] => Array
(
[Table] => mysql.proc
[Op] => analyze
[Msg_type] => status
[Msg_text] => Table is already up to date
)
[13] => Array
(
[Table] => mysql.procs_priv
[Op] => analyze
[Msg_type] => status
[Msg_text] => Table is already up to date
)
[14] => Array
(
[Table] => mysql.servers
[Op] => analyze
[Msg_type] => status
[Msg_text] => Table is already up to date
)
[15] => Array
(
[Table] => mysql.slow_log
[Op] => analyze
[Msg_type] => note
[Msg_text] => The storage engine for the table doesn't support analyze
)
[16] => Array
(
[Table] => mysql.tables_priv
[Op] => analyze
[Msg_type] => status
[Msg_text] => Table is already up to date
)
[17] => Array
(
[Table] => mysql.time_zone
[Op] => analyze
[Msg_type] => status
[Msg_text] => Table is already up to date
)
[18] => Array
(
[Table] => mysql.time_zone_leap_second
[Op] => analyze
[Msg_type] => status
[Msg_text] => Table is already up to date
)
[19] => Array
(
[Table] => mysql.time_zone_name
[Op] => analyze
[Msg_type] => status
[Msg_text] => Table is already up to date
)
[20] => Array
(
[Table] => mysql.time_zone_transition
[Op] => analyze
[Msg_type] => status
[Msg_text] => Table is already up to date
)
[21] => Array
(
[Table] => mysql.time_zone_transition_type
[Op] => analyze
[Msg_type] => status
[Msg_text] => Table is already up to date
)
[22] => Array
(
[Table] => mysql.user
[Op] => analyze
[Msg_type] => status
[Msg_text] => OK
)
)
|
|
|
|
|
|
|