【转帖】查看mysql库大小,表大小,索引大小

查看,mysql,大小,索引 · 浏览次数 : 0

小编点评

**数据库表占用空间分析** **信息表 (TABLES)** | 字段名 | 数据类型 | 描述 | |---|---|---| | TABLE_SCHEMA | VARCHAR(60) | 数据库名 | | TABLE_NAME | VARCHAR(60) | 表名 | | ENGINE | VARCHAR(30) | 存储引擎 | | TABLES_ROWS | INT | 表记录行数 | | DATA_LENGTH | INT | 数据大小 | | INDEX_LENGTH | INT |索引大小 | **分析方法** 1. **查询表记录数**:`SELECT TABLES_ROWS FROM TABLES` 2. **计算数据大小**:`SELECT DATA_LENGTH FROM TABLES` 3. **计算索引大小**:`SELECT INDEX_LENGTH FROM TABLES` 4. **计算数据和索引大小之和**:`SELECT DATA_LENGTH + INDEX_LENGTH FROM TABLES` **示例** ```sql SELECT TABLE_SCHEMA, TABLE_NAME, ENGINE, TABLES_ROWS, DATA_LENGTH, INDEX_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'a_yuser'; ``` **结果** | 表名 | 表记录数 | 数据大小 | 索引大小 | 数据大小 + 索引大小 | |---|---|---|---|---| | a_yuser | 1073607 | 0.0259M | 0.0171G | 0.0431G | **注意** * `DATA_LENGTH` 和 `INDEX_LENGTH` 是以字节为单位的。 * `TABLES_ROWS` 是一个整数,表示表中记录的数量。 * `Total` 是 `DATA_LENGTH` 和 `INDEX_LENGTH` 的总和。

正文

https://www.cnblogs.com/lukcyjane/p/3849354.html

 

说明:

通过MySQL的 information_schema 数据库,可查询数据库中每个表占用的空间、表记录的行数;该库中有一个 TABLES 表,这个表主要字段分别是:

TABLE_SCHEMA : 数据库名
TABLE_NAME:表名
ENGINE:所使用的存储引擎
TABLES_ROWS:记录数
DATA_LENGTH:数据大小
INDEX_LENGTH:索引大小

其他字段请参考MySQL的手册,查看一个表占用空间的大小,那就相当于是 数据大小 + 索引大小 。

 
查看所有库的大小
复制代码
mysql> use information_schema;
Database changed
mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data  from TABLES;
+----------+
| data     |
+----------+
| 104.21MB |
+----------+
1 row in set (0.11 sec)
复制代码

查看指定库的大小

复制代码
mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data  from TABLES where table_schema='jishi';
+---------+
| data    |
+---------+
| 26.17MB |
+---------+
1 row in set (0.01 sec)
复制代码
查看指定库的指定表的大小
复制代码
mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data  from TABLES where table_schema='jishi' and table_name='a_ya';
+--------+
| data   |
+--------+
| 0.02MB |
+--------+
1 row in set (0.00 sec)
复制代码

查看指定库的索引大小

复制代码
mysql> SELECT CONCAT(ROUND(SUM(index_length)/(1024*1024), 2), ' MB') AS 'Total Index Size' FROM TABLES  WHERE table_schema = 'jishi'; 
+------------------+
| Total Index Size |
+------------------+
| 0.94 MB          |
+------------------+
1 row in set (0.01 sec)
复制代码

查看指定库的指定表的索引大小

复制代码
mysql> SELECT CONCAT(ROUND(SUM(index_length)/(1024*1024), 2), ' MB') AS 'Total Index Size' FROM TABLES  WHERE table_schema = 'test' and table_name='a_yuser'; 
+------------------+
| Total Index Size |
+------------------+
| 21.84 MB         |
+------------------+
1 row in set (0.00 sec)
mysql> show create table test.a_yuser\G;
*************************** 1. row ***************************
       Table: a_yuser
Create Table: CREATE TABLE `a_yuser` (
  `email` varchar(60) NOT NULL DEFAULT '',
  `user_name` varchar(60) NOT NULL DEFAULT '',
  KEY `cc` (`email`(5)),
  KEY `ccb` (`user_name`(5)),
  KEY `ccbc` (`email`(5),`user_name`(5))
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
 
ERROR: 
No query specified
 
mysql> select count(*) from test.a_yuser;
+----------+
| count(*) |
+----------+
|  1073607 |
+----------+
1 row in set (0.00 sec)
复制代码
查看一个库中的情况
复制代码
mysql>  SELECT CONCAT(table_schema,'.',table_name) AS 'Table Name', CONCAT(ROUND(table_rows/1000000,4),'M') AS 'Number of Rows', CONCAT(ROUND(data_length/(1024*1024*1024),4),'G') AS 'Data Size', CONCAT(ROUND(index_length/(1024*1024*1024),4),'G') AS 'Index Size', CONCAT(ROUND((data_length+index_length)/(1024*1024*1024),4),'G') AS'Total'FROM information_schema.TABLES WHERE table_schema LIKE 'test';
+---------------+----------------+-----------+------------+---------+
| Table Name    | Number of Rows | Data Size | Index Size | Total   |
+---------------+----------------+-----------+------------+---------+
| test.a_br     | 0.4625M        | 0.0259G   | 0.0171G    | 0.0431G |
| test.a_skuclr | 0.7099M        | 0.0660G   | 0.0259G    | 0.0919G |
| test.a_yuser  | 1.0736M        | 0.0497G   | 0.0213G    | 0.0710G |
| test.test     | 0.0000M        | 0.0000G   | 0.0000G    | 0.0000G |
+---------------+----------------+-----------+------------+---------+
4 rows in set (0.13 sec)
复制代码

参考网址:
http://www.oschina.net/question/12_3673
http://blog.sina.com.cn/s/blog_4c197d420101fbl9.html
好记性不如烂笔头,把遇到的问题及其解决方法记录下来。

与【转帖】查看mysql库大小,表大小,索引大小相似的内容:

【转帖】查看mysql库大小,表大小,索引大小

https://www.cnblogs.com/lukcyjane/p/3849354.html 说明: 通过MySQL的 information_schema 数据库,可查询数据库中每个表占用的空间、表记录的行数;该库中有一个 TABLES 表,这个表主要字段分别是: TABLE_SCHEMA :

[转帖]查看mysql分区名和各分区数据量

– 查看mysql分区名和各分区数据量 SELECT table_name, partition_name, table_rows FROM information_schema.PARTITIONS WHERE table_name=‘test2_partition’; 附加2位前辈博客,讲解分区

[转帖]如何查看数据库索引的利用率?

数据库性能调优,不止是加索引,索引建多了,会导致索引数据过去庞大,也会严重影响性能。了解索引的利用率可以帮助我们更好处理垃圾索引。 1、mysql查看索引利用率: SELECT t.TABLE_SCHEMA, t.TABLE_NAME, INDEX_NAME, CARDINALITY, TABLE_

[转帖]Mysql向表中循环插入数据

如何查看MySQL的当前存储引擎 看你的mysql现在已提供什么存储引擎: mysql> show engines; 看你的mysql当前默认的存储引擎: mysql> show variables like '%storage_engine%'; 创建表 create table per2 (id

[转帖]CentOS8安装MySQL8详细教程,爬坑必备

https://www.ab62.cn/article/23022.html 安装环境 CentOS:8.5.2111MySQL:8.0.30 MySQL Community Server 安装过程 下载MySQL Yum Repository 官网查看MySQL的yum仓库列表,地址https:/

[转帖]MYSQL--表分区、查看分区

https://www.cnblogs.com/pejsidney/p/10074980.html 一、 mysql分区简介 数据库分区 数据库分区是一种物理数据库设计技术。虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减sql语句的响应时间,同时对于应用

[转帖]Mysql 常用命令行,持续补充

https://www.cnblogs.com/wzj1223/p/13152446.html 1.常用命令行 # 登录Mysql mysql -uroot -proot # 查看所有数据库 show databases; # 选择数据库 use fids; # 查看当前数据库所有表; show t

[转帖]MySQL索引优化分析之性能分析(Explain执行计划)

一、MySQL常见瓶颈 二、性能分析工具Explain(执行计划 ) 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。查看官网说明: 使用: Explain + SQL语句 作用: 三、各字段解释 3.1、

[转帖]如何查询mysql的字符集

https://www.yisu.com/zixun/686696.html 今天给大家介绍一下如何查询mysql的字符集。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。 方法:1、“show charset”语句,查看

[转帖]深入理解mysql-第十二章 mysql查询优化-Explain 详解(下)

我们前面两章详解了Explain的各个属性,我们看到的都是mysql已经生成的执行计划,那这个执行计划的是如何生成的?我们能看到一些过程指标数据吗?实际mysql贴心为我们提供了执行计划的各项成本评估指标的以及优化器生成执行计划的整个过程的方法。 一、查看执行计划计算的成本数据 我们上边介绍的EXP