MySQL でデータベースとテーブルのデータ サイズを表示する

MySQL でデータベースとテーブルのデータ サイズを表示する

ここに画像の説明を挿入します

MySQL データベースを管理および保守する場合、データベースとテーブルのデータ サイズを理解することが非常に重要です。これは、データベースの増大を監視し、パフォーマンスを最適化し、ストレージのニーズを計画するのに役立ちます。このブログでは、SQL クエリを使用して MySQL データベースとテーブルのデータ サイズを表示する方法を紹介します。

MySQLデータベースの合計データサイズを確認する

まず、すべてのデータベースを含む MySQL データベース全体の合計データ サイズを表示する方法を学びます。以下は SQL クエリの例です。

-- 显示所有数据库的总计
SELECT
    '总和' AS `数据库`,
    '' AS `表名`,
    CONCAT(ROUND(SUM(table_rows) / 1000000, 2), 'M') AS `行数`,
    CONCAT(ROUND(SUM(data_length) / (1024 * 1024 * 1024), 2), 'GB') AS `数据大小`,
    CONCAT(ROUND(SUM(index_length) / (1024 * 1024 * 1024), 2), 'GB') AS `索引大小`,
    CONCAT(ROUND((SUM(data_length) + SUM(index_length)) / (1024 * 1024 * 1024), 2), 'GB') AS `总大小`
FROM
    information_schema.TABLES
WHERE
    table_schema NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys');

このクエリは、データとインデックスを含む、MySQL サーバー上のすべてのデータベースの合計データ サイズを計算します。合計は总和列の下の最初の行に表示されます。これは、MySQL サーバー全体のデータ使用状況を理解するのに役立ちます。

単一の MySQL データベースのデータ サイズを表示する

特定のデータベースのデータ サイズを確認したい場合は、次の SQL クエリを使用して、your_database_name確認したいデータベースの名前に置き換えます。

-- 显示单个数据库的数据大小
SELECT
    table_schema AS `数据库`,
    table_name AS `表名`,
    CONCAT(ROUND(table_rows / 1000000, 2), 'M') AS `行数`,
    CONCAT(ROUND(data_length / (1024 * 1024 * 1024), 2), 'GB') AS `数据大小`,
    CONCAT(ROUND(index_length / (1024 * 1024 * 1024), 2), 'GB') AS `索引大小`,
    CONCAT(ROUND((data_length + index_length) / (1024 * 1024 * 1024), 2), 'GB') AS `总大小`
FROM
    information_schema.TABLES
WHERE 
    table_schema NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys') 
    AND table_schema = 'your_database_name'
ORDER BY
    data_length + index_length DESC;

このクエリは、データとインデックスを含む、特定のデータベース内の各テーブルのデータ サイズを表示します。your_database_name表示したいデータベースの名前に置き換えるだけです。

すべてのデータベースのデータ サイズを表示する

-- 显示所有数据库的总计
SELECT
    '总和' AS `数据库`,
    '' AS `表名`,
    CONCAT(ROUND(SUM(table_rows) / 1000000, 2), 'M') AS `行数`,
    CONCAT(ROUND(SUM(data_length) / (1024 * 1024 * 1024), 2), 'GB') AS `数据大小`,
    CONCAT(ROUND(SUM(index_length) / (1024 * 1024 * 1024), 2), 'GB') AS `索引大小`,
    CONCAT(ROUND((SUM(data_length) + SUM(index_length)) / (1024 * 1024 * 1024), 2), 'GB') AS `总大小`
FROM
    information_schema.TABLES
WHERE
    table_schema NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys')
UNION
-- 显示每个表的数据大小
SELECT
    table_schema AS `数据库`,
    table_name AS `表名`,
    CONCAT(ROUND(table_rows / 1000000, 2), 'M') AS `行数`,
    CONCAT(ROUND(data_length / (1024 * 1024 * 1024), 2), 'GB') AS `表数据大小`,
    CONCAT(ROUND(index_length / (1024 * 1024 * 1024), 2), 'GB') AS `索引大小`,
    CONCAT(ROUND((data_length + index_length) / (1024 * 1024 * 1024), 2), 'GB') AS `表总大小`
FROM
    information_schema.TABLES
WHERE
    table_schema NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys')
ORDER BY
    `总大小` DESC; -- 修改ORDER BY子句

要約する

上記の SQL クエリを使用すると、MySQL データベースとテーブルのデータ サイズを簡単に表示できます。この情報は、データベース管理、パフォーマンスの最適化、ストレージ計画に非常に役立ちます。ニーズに応じて、これらのクエリを定期的に実行してデータベースの増大を監視し、適切なアクションを実行できます。このブログがお役に立てば幸いです!

おすすめ

転載: blog.csdn.net/weixin_45626288/article/details/132701455