Blogger Information
Blog 21
fans 0
comment 0
visits 21111
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
查询mysql数据库、表的大小
星辰大海
Original
1651 people have browsed it

一、关于mysql表数据大小

mysql存储数据文件一般使用表空间存储 ;
当mysql使用innodb存储引擎的时候,mysql使用表存储数据分为共享表空间和独享表空间两种方式 。

  • 共享表空间:Innodb的所有数据保存在一个单独的表空间里面,而这个表空间可以由很多个文件组成,一个表可以跨多个文件存在, 所以其大小限制不再是文件大小的限制,而是其自身的限制 , innodb官方显示表空间的最大限制为64TB ;

  • 独享表空间:每个表的数据以一个单独的文件来存放,这个时候的单表限制,又变成文件系统的大小限制了        
    在默认情况下,MySQL创建的MyISAM表允许的最大尺寸为4GB 。

二、关于show table stauts;中显示内容的解释

123.png

Data_length 表中数据的大小 
Index_length 表的索引的大小 
Data_free 表空间的大小 


data_Free :

  • 如果是共享表空间 data_free 是共享表空间的大小而非数据的大小。

  • 如果是独享表空间才是该表的剩余空间。 

  • 如果表是分区存储的,data_free 就是一个近似值而非精确值所以此时需要查询 ,查看INFORMATION_SCHEMA.PARTITIONS表 可以查看表具有哪几个分区、分区的方法、分区中数据的记录数等重要信息:select sum(data_free) from information_schema.partitions where table_schema = 'db_name' and table_name='tab_name'; 

三、查询数据大小

1. 查询所有数据库的大小 

    select concat(round(sum(data_length/1024/1024),2),'MB') as data from information_schema.tables; 
2. 查询指定库的大小

    select concat(round(sum(data_length/1024/1024),2),'MB') as data from information_schema.tables where table_schema='database_name'; 

3.  查询指定表的大小 
    select concat(round(sum(data_length/1024/1024),2),'MB') as data from information_schema.tables where table_schema='database_name' and table_name='table_name';

四、information_schema库

在mysql中有一个information_schema数据库,这个数据库中装的是mysql的元数据,包括数据库信息、数据库中表的信息等。所以要想查询数据库占用磁盘的空间大小可以通

  过对information_schema数据库进行操作。

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权限。


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post