• 003-mysql查询表的数据大小、索引大小


    在需要备份数据库里面的数据时,我们需要知道数据库占用了多少磁盘大小,可以通过一些sql语句查询到整个数据库的容量,也可以单独查看表所占容量。

    1、查看数据库表 数据大小,索引大小

    select 
    concat(round(SUM(DATA_LENGTH / 1024 / 1024), 2), 'MB') AS DATA_SIZE, 
    concat(round(SUM(INDEX_LENGTH / 1024 / 1024), 2), 'MB') AS INDEX_SIZE, 
    concat(round(SUM(DATA_FREE / 1024 / 1024), 2), 'MB') AS DATA_FREE
    from information_schema.tables 
    where table_schema='库名';

    2、查询数据库所有表数据,所有的数据大小

    select concat(round(sum(DATA_LENGTH/1024/1024),2),'M') from information_schema.tables; -- 查询所有的数据大小

    3、查询某个表的结构大小,行数

    SELECT
        TABLE_NAME 表名,
        CONCAT(ROUND((DATA_LENGTH + INDEX_LENGTH)/1024/1024,2),'M') 表占用空间大小,
        TABLE_ROWS 数据行数
    FROM
    information_schema.TABLES
    WHERE
    TABLE_SCHEMA = 'copyright_pre' and TABLE_NAME='test_table_idx'
    ORDER BY TABLE_ROWS desc

     不过需要注意的是,对于InnoDB表,table_rows行计数仅是大概估计值。

    如果想要准确查询条数

    select concat(
        'select "',
        TABLE_name, 
        '", count(*) from ', 
        TABLE_SCHEMA, 
        '.',
        TABLE_name,
        ' union all' 
    )  as a  from information_schema.tables 
    where TABLE_SCHEMA='数据库名';

    将得到的sql 语句进行拼接查询即可,注意最后一个的union all

     select * from (

    select "表名" tname, 总数 trows from 表名 union all --将第一行的 字段起一个别名 tname trows

    ......
    ) a order by trows desc 增加排序

     
  • 相关阅读:
    合并区间
    编译与运行
    传递信息
    划分字母区间
    无重叠区间
    用最少数量的箭引爆气球
    根据身高重建队列
    二叉树展开为链表
    动态添加按钮
    基础知识
  • 原文地址:https://www.cnblogs.com/bjlhx/p/7339356.html
Copyright © 2020-2023  润新知