Calculate full database size

Calculates the total size of a MySQL database in KB/MB or GB...

function CalcFullDatabaseSize($database, $db) {
 
    $tables = mysql_list_tables($database, $db);
    if (!$tables) { return -1; }
 
    $table_count = mysql_num_rows($tables);
    $size = 0;
 
    for ($i=0; $i < $table_count; $i++) {
        $tname = mysql_tablename($tables, $i);
        $r = mysql_query("SHOW TABLE STATUS FROM ".$database." LIKE '".$tname."'");
        $data = mysql_fetch_array($r);
        $size += ($data['Index_length'] + $data['Data_length']);
    };
 
    $units = array(' B', ' KB', ' MB', ' GB', ' TB');
    for ($i = 0; $size > 1024; $i++) { $size /= 1024; }
    return round($size, 2).$units[$i];
}
Snippet Details



/*
** Example:
*/
 
// open mysql connection:
$handle = mysql_connect('localhost', 'user', 'password'); 
 
if (!$handle) { die('Connection failed!'); }
 
// get the size of all tables in this database:
print CalcFullDatabaseSize('customer1234', $handle);
// --> returns something like: 484.2 KB
 
// close connection:
mysql_close($handle);

Sorry folks, comments have been deactivated for now due to the large amount of spam.

Please try to post your questions or problems on a related programming board, a suitable mailing list, a programming chat-room,
or use a QA website like stackoverflow because I'm usually too busy to answer any mails related
to my code snippets. Therefore please just mail me if you found a serious bug... Thank you!


Older comments:

Artyom July 09, 2010 at 11:50
Thanks.