zoukankan      html  css  js  c++  java
  • MySQL--查询表统计信息

    可以用show table status 来查看表的信息,如:

    show table status like '%waybill5%' G
    但使用information_schema.`TABLES`更方便查看。
     
    查看数据库级别的使用情况
    SELECT 
    TABLE_SCHEMA AS database_name,
    SUM(ROUND((DATA_LENGTH+INDEX_LENGTH+DATA_FREE)/1024.0/1024, 2)) AS Total_MB
    FROM information_schema.`TABLES` AS T1
    WHERE T1.`TABLE_SCHEMA` NOT IN('performance_schema','mysql','information_schema')
    GROUP BY T1.`TABLE_SCHEMA`
    ORDER BY SUM(ROUND((DATA_LENGTH+INDEX_LENGTH+DATA_FREE)/1024.0/1024, 2)) DESC
    LIMIT 10;
    查看非InnoDB引擎表
    ## 查看非InnoDB引擎表
    SELECT 
    TABLE_SCHEMA AS database_name,
    TABLE_NAME AS table_name,
    TABLE_ROWS AS table_rows,
    ENGINE AS table_engine,
    ROUND((DATA_LENGTH)/1024.0/1024, 2) AS Data_MB,
    ROUND((INDEX_LENGTH)/1024.0/1024, 2) AS Index_MB,
    ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2) AS Total_MB,
    ROUND((DATA_FREE)/1024.0/1024, 2) AS Free_MB
    FROM information_schema.`TABLES` AS T1
    WHERE T1.`TABLE_SCHEMA` NOT IN('performance_schema','mysql','information_schema','sys')
    AND T1.`ENGINE` NOT IN ('innodb');

    ==============================================================

    查看数据表较大的表

    ## 查看数据表量较大的表
    SELECT 
    TABLE_SCHEMA AS database_name,
    TABLE_NAME AS table_name,
    TABLE_ROWS AS table_rows,
    ENGINE AS table_engine,
    ROUND((DATA_LENGTH)/1024.0/1024, 2) AS Data_MB,
    ROUND((INDEX_LENGTH)/1024.0/1024, 2) AS Index_MB,
    ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2) AS Total_MB,
    ROUND((DATA_FREE)/1024.0/1024, 2) AS Free_MB
    FROM information_schema.`TABLES` AS T1
    WHERE T1.`TABLE_SCHEMA` NOT IN('performance_schema','mysql','information_schema')
    ORDER BY T1.`TABLE_ROWS` DESC
    LIMIT 10;
    
    ## 查看数据表空间较大的表
    SELECT 
    TABLE_SCHEMA AS database_name,
    TABLE_NAME AS table_name,
    TABLE_ROWS AS table_rows,
    ENGINE AS table_engine,
    ROUND((DATA_LENGTH)/1024.0/1024, 2) AS Data_MB,
    ROUND((INDEX_LENGTH)/1024.0/1024, 2) AS Index_MB,
    ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2) AS Total_MB,
    ROUND((DATA_FREE)/1024.0/1024, 2) AS Free_MB
    FROM information_schema.`TABLES` AS T1
    WHERE T1.`TABLE_SCHEMA` NOT IN('performance_schema','mysql','information_schema')
    ORDER BY
    ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2)
    DESC LIMIT 10;

    ==============================================================

    查看碎片较多的表

    ## 查看碎片较多的表
    SELECT 
    TABLE_SCHEMA AS database_name,
    TABLE_NAME AS table_name,
    TABLE_ROWS AS table_rows,
    ENGINE AS table_engine,
    ROUND((DATA_LENGTH)/1024.0/1024, 2) AS Data_MB,
    ROUND((INDEX_LENGTH)/1024.0/1024, 2) AS Index_MB,
    ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2) AS Total_MB,
    ROUND((DATA_FREE)/1024.0/1024, 2) AS Free_MB,
    ROUND(ROUND((DATA_FREE)/1024.0/1024, 2) /ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2)*100,2)AS Free_Percent
    FROM information_schema.`TABLES` AS T1
    WHERE T1.`TABLE_SCHEMA` NOT IN('performance_schema','mysql','information_schema')
    AND ROUND(ROUND((DATA_FREE)/1024.0/1024, 2) /ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2)*100,2) >10
    AND ROUND((DATA_FREE)/1024.0/1024, 2)>100
    ORDER BY ROUND(ROUND((DATA_FREE)/1024.0/1024, 2) /ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2)*100,2) DESC
    LIMIT 10;

    ==============================================================

    查看表当前自增值

    ## 查看表自增值
    SELECT 
    T2.TABLE_SCHEMA,
    T2.TABLE_NAME, 
    T1.COLUMN_NAME,
    T1.COLUMN_TYPE,
    T2.AUTO_INCREMENT
    FROM information_schema.columns AS T1
    INNER JOIN information_schema.tables AS T2
    ON T1.TABLE_SCHEMA=T2.TABLE_SCHEMA
    AND T1.TABLE_NAME=T2.TABLE_NAME
    WHERE T1.EXTRA='auto_increment'
    AND T1.DATA_TYPE NOT LIKE '%bigint%'
    ORDER BY T2.AUTO_INCREMENT DESC
    LIMIT 100;

    ==============================================================

    查看无主键表

    ## 查看无主键表
    SELECT
    TABLE_SCHEMA AS database_name,
    TABLE_NAME AS table_name,
    TABLE_ROWS AS table_rows,
    ENGINE AS table_engine,
    ROUND((DATA_LENGTH)/1024.0/1024, 2) AS Data_MB,
    ROUND((INDEX_LENGTH)/1024.0/1024, 2) AS Index_MB,
    ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2) AS Total_MB,
    ROUND((DATA_FREE)/1024.0/1024, 2) AS Free_MB
    FROM information_schema.tables
    WHERE (table_schema, table_name) NOT IN (
    SELECT DISTINCT table_schema, table_name
    FROM information_schema.columns
    WHERE COLUMN_KEY = 'PRI'
    )
    AND table_schema NOT IN ('sys', 'mysql', 'information_schema', 'performance_schema');
  • 相关阅读:
    Charles 环境安装
    postman的安装指南
    python-web自动化-三种等待方式(元素定位不到一)
    如何查找MySQL中查询慢的SQL语句
    1023 组个最小数
    linux学习笔记01
    P6461 [COCI2006-2007#5] TRIK
    P1181 数列分段Section I
    P4414 [COCI2006-2007#2] ABC
    如何安装oracle
  • 原文地址:https://www.cnblogs.com/gaogao67/p/10390706.html
Copyright © 2011-2022 走看看