空き領域/使用率を確認
Oracle
SELECT df.tablespace_name,
ROUND(SUM(df.bytes)/1024/1024) AS total_mb,
ROUND(NVL(fs.free, 0)/1024/1024) AS free_mb,
ROUND((1 - NVL(fs.free,0)/SUM(df.bytes)) * 100, 1) AS pct_used
FROM dba_data_files df
LEFT JOIN (SELECT tablespace_name, SUM(bytes) free
FROM dba_free_space GROUP BY tablespace_name) fs
ON df.tablespace_name = fs.tablespace_name
GROUP BY df.tablespace_name, fs.free;AUTOEXTEND が有効なファイルでは実際の上限は maxbytes。MAXSIZE は dba_data_files.maxbytes で確認する。
PostgreSQL
-- Datafile usage is at the OS level (df -h). Tablespace sizes from inside the DB:
SELECT spcname, pg_size_pretty(pg_tablespace_size(spcname))
FROM pg_tablespace;PostgreSQL はディスクの空き領域を OS に依存する。重要なしきい値には OS の監視(df)が不可欠。
MySQL
SELECT table_schema,
ROUND(SUM(data_free)/1024/1024, 1) AS reclaimable_mb
FROM information_schema.tables
GROUP BY table_schema;data_free はテーブル内の再利用可能な(断片化した)領域。ディスクの空き領域は OS レベルの話。
SQL Server
SELECT name AS file_name,
size/128.0 AS size_mb,
size/128.0 - CAST(FILEPROPERTY(name,'SpaceUsed') AS int)/128.0 AS free_mb
FROM sys.database_files;SpaceUsed はページ単位。128 で割ると MB になる(8 KB ページ)。
MongoDB
var s = db.stats();
({ fsTotalGB: +(s.fsTotalSize/1073741824).toFixed(1),
fsUsedGB: +(s.fsUsedSize/1073741824).toFixed(1) })WiredTiger では fsTotalSize / fsUsedSize が OS レベルのディスクの合計サイズと使用サイズを示す。
Redis
INFO memory
CONFIG GET maxmemory
# Usage = used_memory / maxmemorymaxmemory が 0 の場合は上限なしで、RAM が埋まると OS の OOM killer が介入する。eviction の動作は maxmemory-policy で決まる。