mysql 查看数据库及表大小以及数据库扩容评估

本文为博主原创,未经允许不得转载:

  1.查看数据库数据存储的位置

show global variables like "%datadir%";

   2.查看数据库大小

    2.1 information_shema 每个数据库都有一个原数据库,记录和保存了当前 mysql 所有数据库及表的存储信息,包含列,索引,大小,字段等等:

      information_schema中的表主要有:

        schemata表:这个表里面主要是存储在mysql中的所有的数据库的信息

        tables表:这个表里存储了所有数据库中的表的信息,包括每个表有多少个列等信息。

        columns表:这个表存储了所有表中的表字段信息。

        statistics表:存储了表中索引的信息。

        user_privileges表:存储了用户的权限信息。

        schema_privileges表:存储了数据库权限。

        table_privileges表:存储了表的权限。

        column_privileges表:存储了列的权限信息。

        character_sets表:存储了mysql可以用的字符集的信息。

        collations表:提供各个字符集的对照信息。

        collation_character_set_applicability表:相当于collations表和character_sets表的前两个字段的一个对比,记录了字符集之间的对照信息。

        table_constraints表:这个表主要是用于记录表的描述存在约束的表和约束类型。

        key_column_usage表:记录具有约束的列。

        routines表:记录了存储过程和函数的信息,不包含自定义的过程或函数信息。

        views表:记录了视图信息,需要有show view权限。

        triggers表:存储了触发器的信息,需要有super权限

    2.2 通过 information_shema 查看数据库或表的大小

      a. 查询所有数据库容量大小:

select
table_schema as '数据库',sum(table_rows) as '记录数',
sum(truncate(data_length/1024/1024, 2)) as '数据容量(MB)',
sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)'
from information_schema.tables
group by table_schema
order by sum(data_length) desc, sum(index_length) desc;

    b. 查看所有数据库各表容量大小

select
table_schema as '数据库',table_name as '表名',table_rows as '记录数',
truncate(data_length/1024/1024, 2) as '数据容量(MB)',
truncate(index_length/1024/1024, 2) as '索引容量(MB)'
from information_schema.tables
order by data_length desc, index_length desc;

    c. 查看指定数据库容量大小

select
table_schema as '数据库',sum(table_rows) as '记录数',
sum(truncate(data_length/1024/1024, 2)) as '数据容量(MB)',
sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)'
from information_schema.tables
where table_schema='mysql';

    d.  查看指定数据库各表容量大小

select
table_schema as '数据库',table_name as '表名',table_rows as '记录数',
truncate(data_length/1024/1024, 2) as '数据容量(MB)',
truncate(index_length/1024/1024, 2) as '索引容量(MB)'
from information_schema.tables
where table_schema='mysql'
order by data_length desc, index_length desc;

  3.数据库扩容:

    当系统稳定,业务不断积累时,数据库保存的数据越来越多,这时候就需要对数据库进行扩容。  

    扩容的大小评估依据可以通过 以上 2 中的方式查询当前数据量的大小,以及未来业务发展需要保存多久,以及保存多少进行动态评估。  

      如下图,为本地数据量,当扩容评估时,可根据当前业务运行的时间段增长的数据存储量,进行评估,

        如果业务一年内的数据存储量是 10GB, 数据存储扩容时的需求为我要保存三年数据,则数据库至少需要扩容到 30GB 才够用。

    

原文地址:https://www.cnblogs.com/zjdxr-up/p/14333022.html