MySQL
MySQL Reference Manual: SHOW TABLE STATUS Syntax
<?php // MySQL database size // by rad // Settings: $db = "mydb"; // database name $user = "rad"; // username $pass = "mypassword"; // password $server = "localhost"; $db_con = mysql_connect($server, $user, $pass); $db_size = 0; $db_query = mysql_query("SHOW TABLE STATUS FROM $db"); while ($row = mysql_fetch_array($db_query)) { $db_size += $row['Data_length'] + $row['Index_length']; } // $db_size contain database size in bytes echo "$db: $db_size B (~".round(($db_size/1024), 1)." KiB; ~".round($db_size/1048576, 2)." MiB)"; ?>
PostgreSQL
PostgreSQL Documentation: Determining Disk Usage
PostgreSQL Documentation: Database Object Size Functions
SELECT pg_database_size('nazwa_bazy');
Powyższe zapytanie SQL wykorzystane w prostym skrypcie PHP. Tym razem, dla odmiany, obiektowo z wykorzystaniem PHP Data Objects (PDO):
<?php // PostgreSQL database size // by rad // Settings: $db = "mydb"; // database name $user = "rad"; // username $pass = "mypassword"; // password $server = "localhost"; $dbh = new PDO("pgsql:dbname=$db;host=$server;user=$user;password=$pass"); $db_query = $dbh->query("SELECT pg_database_size('$db')"); $db_size = $db_query->fetch(PDO::FETCH_OBJ)->pg_database_size; // $db_size contain database size in bytes echo "$db: $db_size B"; ?>
Stosując niewielkie modyfikacje w powyższych skryptach, można uzyskać tylko wielkość poszczególnych tabel lub np. indeksów.