进入information_schema 数据库(存放了其他的数据库的信息)
mysql> use information_schema
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
第一种情况:查询所有数据库的总大小,方法如下:
mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES;
+-----------+
| data |
+-----------+
| 3052.76MB |
+-----------+
1 row in set (0.02 sec)
第二种情况:查看指定数据库的大小,比如说:数据库test,方法如下:
mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES where table_schema='test';
+----------+
| data |
+----------+
| 142.84MB |
+----------+
1 row in set (0.00 sec)
第三种:查看指定数据库的表的大小,比如说:数据库test中f_apply表,方法如下:
mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES where table_schema='ixinnuo_financial' and table_name='f_apply';
+--------+
| data |
+--------+
| 0.08MB |
+--------+
1 row in set (0.00 sec)
查指定库中表数据量信息
select table_name,table_rows from tables where TABLE_SCHEMA = 'wordpress' order by table_rows desc;
从information_schema拿出来的统计信息不准确
使用如下shell,可准确统计指定库的所有表的行数
#!/bin/bash
#
# name: count_rows_mysql.sh
#
# author: sSWans_3885999
#
# description: count up rows of all talbes in specific database from mysql, order by rows desc.
#
USERNAME="xxx"
PASSWORD="xxx"
HOSTNAME="xxx"
DATABASE="xxx"
mysql -h${HOSTNAME} -u$USERNAME -p"$PASSWORD" -NBe "show tables;" $DATABASE | while read -a row ; do
tablename=${row[0]}
rows=`mysql -h${HOSTNAME} -u$USERNAME -p"$PASSWORD" -NBe "select count(*) from $DATABASE.$tablename"`
printf "%-50s %-20s\n" $tablename $rows >> dbrows
sort -nrk 2 dbrows > dbrows_sorted
done