How to get the size of a MySQL database using PHP

Last updated on March 31st, 2022 at 10:26 am

This is a simple tutorial that shows how to get the size of the MySQL database using php. This works in all latest PHP versions. We are using mysqli_connect function.

The query we are running to find the size of the database is SHOW TABLE STATUS
We are getting the size from Data_length and Index_length columns from the tables inside the database and adding them up.

All you have to do is update these lines in the main script.

1] Credentials to connect to database

$objConnect = mysqli_connect("localhost","","") or die("Error Connecting to Database,
<hr>Known issues:Database may be down or need to contact admin");

2] Name of the database you would like to check the size

$dbname = '';

Complete code

<?php
//connect to DB
$objConnect = mysqli_connect("localhost","root","") or die("Error Connecting to Database,
<hr>Known issues:Database may be down or need to contact admin");
$dbname = 'mytestdatabase';
 function getdbsize( $data ) {
        // bytes
        if( $data < 1024 ) {
           return $data . " bytes";
        }
        // kilobytes
        else if( $data <1024000 ) {
            return round( ( $data / 1024 ), 2 ) . "KB";
        }
        // megabytes

        else {
            return round( ( $data / 1024000 ), 2 ) . " MB";
        }
    }
    mysqli_select_db($objConnect,$dbname);
    $result = mysqli_query($objConnect,"SHOW TABLE STATUS");
    $dbsize = 0;
    while( $row = mysqli_fetch_array($result ) ) {
        $dbsize += $row[ "Data_length" ] + $row[ "Index_length" ];
		}
echo "The size of the database is ".getdbsize($dbsize)."<p>This is a size of a sample database we have";
?>

In the demo we have a small database that we are using to show you the size. It is the same size that phpmyadmin report for the database we are connecting see the screenshot below

Demo

Click to rate this tutorial!
[Total: 1 Average: 4]

Leave a Reply

Your email address will not be published. Required fields are marked *