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');
  • 相关阅读:
    【PyQt5-Qt Designer】对话框系列
    【PyQt5-Qt Designer】界面布局
    【PyQt5-Qt Designer】PyQt5+eric6 安装和配置
    【PyQt5-Qt Designer】QMessageBox 弹出框总结
    【PyQt5-Qt Designer】鼠标+键盘事件
    【PyQt5-Qt Designer】猜数字(小项目)
    【PyQt5-Qt Designer】浅谈关闭窗口
    【PyQt5-Qt Designer】窗口操作
    【python基础】利用pandas处理Excel数据
    【python基础】os.path模块常用方法详解
  • 原文地址:https://www.cnblogs.com/gaogao67/p/10390706.html
Copyright © 2011-2022 走看看