首页 > 数据库 >MySQL统计一个数据库中所有表的数据量

MySQL统计一个数据库中所有表的数据量

时间:2023-01-09 16:34:27浏览次数:54  
标签:tables rows 数据库 InnoDB 数据量 MySQL table

mysql统计一个数据库里所有表的数据量,最近在做统计想查找一个数据库里基本所有的表数据量,数据量少的通过select count再加起来也是可以的,不过表的数据有点多,不可能一个一个地查

在mysql里是可以查询information_schema.tables这张表的

SELECT table_rows,table_name FROM information_schema.tables  
WHERE TABLE_SCHEMA = '数据库名称' 
and table_name not in ('不查询的表名称') 
ORDER BY table_rows DESC;

要统计总数据量的,加上sum函数就可以

SELECT sum(table_rows) FROM information_schema.tables  
WHERE TABLE_SCHEMA = '数据库名称' 
and table_name not in ('不查询的表名称') 
ORDER BY table_rows DESC;

不过可能统计出来的会有误差

官网的解释:https://dev.mysql.com/doc/refman/8.0/en/information-schema-tables-table.html

TABLE_ROWS
The number of rows. Some storage engines, such as MyISAM, store the exact count. For other storage engines, such as InnoDB, this value is an approximation, 
and may vary from the actual value by as much as 40% to 50%. In such cases, use SELECT COUNT(*) to obtain an accurate count. TABLE_ROWS is NULL for INFORMATION_SCHEMA tables. For InnoDB tables, the row count is only a rough estimate used in SQL optimization. (This is also true if the InnoDB table is partitioned.)

对于MyISAM才是正确的统计数据,但是对于InnoDB引擎的,可能与实际值相差 40% 到 50%,所以只是一个大概的统计

所以针对这种情况,要更改存储引擎,肯定是不太合适,因为InnoDB是默认的存储引擎,能支持事务外健,并发情况性能也比较好

标签:tables,rows,数据库,InnoDB,数据量,MySQL,table
From: https://www.cnblogs.com/sx66/p/17037408.html

相关文章

  • 设计器demo示例数据库连接不上
    首先看下示例的 demo数据库是否启动。启动后可以看下左侧的控制台是否有错误,如果启动后链接还有问题,那么将设计器关闭,然后看下系统进程是否有重新连接。......
  • MySQL22 - SQL性能分析
    SQL性能分析SQL执行频率通过SHOW[SESSION|GLOBAL]STATUS命令可以提供服务器状态信息,通过以下指令可以查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频......
  • MySQL21 - 索引
    索引什么是索引索引相当于一本书的目录,为了缩小扫描范围而存在、提高查询效率的一种数据结构一张表的一个字段可以添加索引,多个字段也可以联合起来添加索引在任何数据......
  • MySQL入门之查询操作
    单表查询SELECT[DISTINCT]*|<字段名1,字段名2,字段名3,...> FROM<表名> [WHERE<条件查询表达式1>] [GROUPBY<字段名>[HAVING<条件表达式2>]] [ORDERBY<字段......
  • mysql性能优化explain了解
    总结索引的设计原则:1.**最适合**索引的列是出现在**WHERE子句**和连接子句中的列。2.索引列的基数越大(取值多、重复值少),索引的效果就越好。3.使用**前缀索引**可以......
  • MySQL入门之表和数据的操作
    数据表的操作创建数据表时,要先use数据库名;来确定要操作的数据库。创建数据表CREATE[TEMPORARY]TABLE[IFNOTEXISTS]表名(字段名字段类型[字段属性]...)[表选项]......
  • 从实战出发,聊聊缓存数据库一致性
    在云服务中,缓存是极其重要的一点。所谓缓存,其实是一个高速数据存储层。当缓存存在后,日后再次请求该数据就会直接访问缓存,提升数据访问的速度。但是缓存存储的数据通常是短......
  • MySQL 同步多张表到目标库
    vi/etc/my.cnf#目标库[mysql]host=172.16.1.10user=rootpassword=xxxxxxxx#源数据库[mysqldump]host=127.0.0.1user=rootpassword=xxxxxxxxssl-mode=DISABLED=====......
  • mysql安装与配置
    下载mysql进入msql官网downloads点击此链接点击链接点击绿框,选择版本下载第一个配置文件在mysql的安装目录下创建my.ini将下面的代码输入进去[mysql]default......
  • python ssh链接Mysql数据库
    fromsshtunnelimportSSHTunnelForwarderimporttime,datetime,pymysql,json,requestsdefssh_mysql(sql,method):#SSH信息ssh_ip=''ssh_port=22......