如何用sql统计数据库表的大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用sql统计数据库表的大小相关的知识,希望对你有一定的参考价值。

查看mysql数据库大小的四种办法,分别有以下四种:
第一种:进去指定schema 数据库(存放了其他的数据库的信息)
use information_schema
第二种:查询所有数据的大小
select concat(round(sum(DATA_LENGTH/1024/1024),2),\'MB\') as data from TABLES(http://www.6ddd.com)
第三种:查看指定数据库的大小,比如说:数据库apoyl
select concat(round(sum(DATA_LENGTH/1024/1024),2),\'MB\') as data from TABLES where table_schema=\'apoyl\';
第四种:查看指定数据库的表的大小,比如说:数据库apoyl 中apoyl_test表
select concat(round(sum(DATA_LENGTH/1024/1024),2),\'MB\') as data from TABLES where table_schema=\'apoyl\' and table_name=\'apoyl_test\';
参考技术A 表统计信息是数据库基于成本的优化器最重要的参考信息;统计信息不准确,优化器可能给出不够优化的执行计划或者是错误的执行计划。对统计信息的计算分为非持久化统计信息(实时计算)与持久化统计信息。
非持久化统计信息
统计信息没有保存在磁盘上,而是频繁的实时计算统计信息;
每次对表的访问都会重新计算其统计信息;
假设针对一张大表的频繁查询,那么每次都要重新计算统计信息,很耗费资源。

持久化统计信息
把一张表在某一时刻的统计信息值保存在磁盘上;
避免每次查询时重新计算;
如果表更新不是很频繁,或者没有达到 MySQL 必须重新计算统计信息的临界值,可直接从磁盘上获取;
即使 MySQL 服务重启,也可以快速的获取统计信息值;
统计信息的持久化可以针对全局设置也可以针对单表设置。
接下来,详细说 MySQL 统计信息如何计算,何时计算,效果评估等问题。在 MySQL Server 层来控制是否自动计算统计信息的分布,并且来决策是持久化还是非持久化。

以上是关于如何用sql统计数据库表的大小的主要内容,如果未能解决你的问题,请参考以下文章

如何用一条SQL语句对比两个表的数据是不是一致

用sql统计数据库表的大小

sql server 如何用sql语句实现单个表的备份和还原。

如何用SQL语句求oracle 数据库所有表的行数?

SQL Server:统计数据库中每张表的大小

如何用SQL语句将数据库中的表的某一时间型字段的默认值设置为当前日期