1、查看数据库中不为 InnoDB 引擎的表
 
SELECT TABLE_SCHEMA, TABLE_NAME, ENGINE
  FROM information_schema.TABLES
 WHERE TABLE_SCHEMA NOT IN
      ('sys', 'mysql', 'performance_schema', 'information_schema', 'test')
   AND ENGINE != 'InnoDB';
 
   
2、查看数据库中表的大小及数据量
 
SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_ROWS,
       CONCAT(round((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2), 'MB') as data
  FROM information_schema.TABLES
 WHERE TABLE_SCHEMA NOT IN 
       ('sys', 'mysql', 'performance_schema', 'information_schema', 'test')
 ORDER BY DATA_LENGTH + INDEX_LENGTH DESC;
 
 
3、查找数据库中无显式主键索引的表
 
SELECT t.TABLE_SCHEMA, t.TABLE_NAME
  FROM information_schema.TABLES t
 WHERE (t.TABLE_SCHEMA, t.TABLE_NAME) NOT IN
       (SELECT DISTINCT TABLE_SCHEMA, TABLE_NAME
          FROM information_schema.COLUMNS
         WHERE COLUMN_KEY = 'PRI')
   AND t.TABLE_SCHEMA NOT IN
       ('sys', 'mysql', 'performance_schema', 'information_schema', 'test');
 
    
4、查找数据库中主键为联合主键的表
 
SELECT TABLE_SCHEMA, TABLE_NAME,
       GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX SEPARATOR ',') cols,
       MAX(SEQ_IN_INDEX) len
  FROM information_schema.STATISTICS
 WHERE INDEX_NAME = 'PRIMARY'
   AND TABLE_SCHEMA NOT IN
       ('sys', 'mysql', 'performance_schema', 'information_schema', 'test')
 GROUP BY TABLE_SCHEMA, TABLE_NAME
HAVING len > 1;
 
 
5、查找数据库中不为自增主键的表
 
SELECT TABLE_SCHEMA, TABLE_NAME
  FROM information_schema.TABLES
 WHERE TABLE_SCHEMA NOT IN ('sys', 'mysql', 'performance_schema', 'information_schema', 'test')
   AND (TABLE_SCHEMA,TABLE_NAME) NOT IN 
       (SELECT TABLE_SCHEMA, TABLE_NAME
          FROM information_schema.COLUMNS
         WHERE TABLE_SCHEMA NOT IN ('sys', 'mysql', 'performance_schema', 'information_schema', 'test')
           AND IS_NULLABLE = 'NO'
           AND COLUMN_TYPE LIKE '%int%'
           AND COLUMN_KEY = 'PRI'
           AND EXTRA = 'auto_increment');
 
     
6、查看数据库中存在外键约束的表
 
SELECT c.TABLE_SCHEMA,
       c.REFERENCED_TABLE_NAME,
       c.REFERENCED_COLUMN_NAME,
       c.TABLE_NAME,
       c.COLUMN_NAME,
       c.CONSTRAINT_NAME,
       t.TABLE_COMMENT,
       r.UPDATE_RULE,
       r.DELETE_RULE
  FROM information_schema.KEY_COLUMN_USAGE c
  JOIN information_schema.TABLES t
    ON t.TABLE_NAME = c.TABLE_NAME
  JOIN information_schema.REFERENTIAL_CONSTRAINTS r
    ON r.TABLE_NAME = c.TABLE_NAME
   AND r.CONSTRAINT_NAME = c.CONSTRAINT_NAME
   AND r.REFERENCED_TABLE_NAME = c.REFERENCED_TABLE_NAME
 WHERE c.REFERENCED_TABLE_NAME IS NOT NULL;
 
 
7、查找数据库中低区分度索引(区分度小于0.1)
 
SELECT p.TABLE_SCHEMA, p.TABLE_NAME, c.INDEX_NAME, c.car, p.car total
  FROM (SELECT TABLE_SCHEMA, TABLE_NAME, INDEX_NAME, MAX(CARDINALITY) car
          FROM information_schema.STATISTICS
         WHERE INDEX_NAME != 'PRIMARY'
           AND TABLE_SCHEMA NOT IN ('sys', 'mysql', 'performance_schema', 'information_schema', 'test')
         GROUP BY TABLE_SCHEMA, TABLE_NAME, INDEX_NAME) c
 INNER JOIN (SELECT TABLE_SCHEMA, TABLE_NAME, MAX(CARDINALITY) car
               from information_schema.STATISTICS
              WHERE INDEX_NAME = 'PRIMARY'
                AND TABLE_SCHEMA NOT IN ('sys', 'mysql', 'performance_schema', 'information_schema', 'test')
              GROUP BY TABLE_SCHEMA, TABLE_NAME) p
    ON c.TABLE_NAME = p.TABLE_NAME
   AND c.TABLE_SCHEMA = p.TABLE_SCHEMA
 WHERE p.car > 0
   AND c.car / p.car < 0.1;
 
   
8、查找数据库中重复索引前缀的索引
 
 SELECT a.TABLE_SCHEMA, a.TABLE_NAME, a.INDEX_NAME, a.cols, b.INDEX_NAME, b.cols
  FROM (SELECT TABLE_SCHEMA, TABLE_NAME, INDEX_NAME,
               CONCAT('| ', GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX SEPARATOR ' | '), ' |') AS cols
          FROM information_schema.STATISTICS
         WHERE TABLE_SCHEMA NOT IN ('sys', 'mysql', 'performance_schema', 'information_schema', 'test')
           AND INDEX_NAME != 'PRIMARY'
         GROUP BY TABLE_SCHEMA, TABLE_NAME, INDEX_NAME) a
 INNER JOIN (SELECT TABLE_SCHEMA, TABLE_NAME, INDEX_NAME,
                    CONCAT('| ', GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX SEPARATOR ' | '), ' |') AS cols
               FROM information_schema.STATISTICS
              WHERE TABLE_SCHEMA NOT IN ('sys', 'mysql', 'performance_schema', 'information_schema', 'test')
                AND INDEX_NAME != 'PRIMARY'
              GROUP BY TABLE_SCHEMA, TABLE_NAME, INDEX_NAME) b
    ON a.TABLE_NAME = b.TABLE_NAME
   AND a.TABLE_SCHEMA = b.TABLE_SCHEMA
   AND a.cols LIKE CONCAT(b.cols, '%')
   AND a.INDEX_NAME != b.INDEX_NAME;
 
   
9、查找数据库中包索引重复包含主键列的索引
 
SELECT a.*, b.pk
  FROM (SELECT TABLE_SCHEMA, TABLE_NAME, INDEX_NAME,
               CONCAT('| ', GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX SEPARATOR ' | '), ' |') cols
          FROM information_schema.STATISTICS
         WHERE INDEX_NAME != 'PRIMARY'
           AND TABLE_SCHEMA NOT IN ('sys', 'mysql', 'performance_schema', 'information_schema', 'test')
         GROUP BY TABLE_SCHEMA, TABLE_NAME, INDEX_NAME) a
 INNER JOIN (SELECT TABLE_SCHEMA, TABLE_NAME,
                    CONCAT('| ', GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX SEPARATOR ' | '), ' |') pk
               FROM information_schema.STATISTICS
              WHERE INDEX_NAME = 'PRIMARY'
                AND TABLE_SCHEMA NOT IN ('sys', 'mysql', 'performance_schema', 'information_schema', 'test')
              GROUP BY TABLE_SCHEMA, TABLE_NAME) b
    ON a.TABLE_NAME = b.TABLE_NAME
   AND a.TABLE_SCHEMA = b.TABLE_SCHEMA
   AND a.cols LIKE CONCAT('%', b.pk, '%');
 
   
10、查找数据库中没有被使用的索引
 
SELECT a.OBJECT_SCHEMA, a.OBJECT_NAME, a.INDEX_NAME, b.TABLE_ROWS
  FROM performance_schema.TABLE_IO_WAITS_SUMMARY_BY_INDEX_USAGE a
 INNER JOIN information_schema.TABLES b
    ON a.OBJECT_SCHEMA = b.TABLE_SCHEMA
   AND a.OBJECT_NAME = b.TABLE_SCHEMA
 WHERE a.INDEX_NAME IS NOT NULL
   AND a.INDEX_NAME != 'PRIMARY'
   AND a.COUNT_STAR = 0
   AND OBJECT_SCHEMA NOT IN
       ('sys', 'mysql', 'performance_schema', 'information_schema')
 ORDER BY OBJECT_SCHEMA, OBJECT_NAME;
  
  
11、查看数据库中的锁请求信息
 
SELECT r.TRX_ISOLATION_LEVEL,
       r.TRX_ID WAITING_TRX_ID,
       r.TRX_MYSQL_THREAD_ID WAITING_TRX_THREAD,
       r.TRX_STATE WAITING_TRX_STATE,
       lr.LOCK_MODE WAITING_TRX_LOCK_MODE,
       lr.LOCK_TYPE WAITING_TRX_LOCK_TYPE,
       lr.LOCK_TABLE WAITING_TRX_LOCK_TABLE,
       lr.LOCK_INDEX WAITING_TRX_LOCK_INDEX,
       r.TRX_QUERY WAITING_TRX_QUERY,
       b.TRX_ID BLOCKING_TRX_ID,
       b.TRX_MYSQL_THREAD_ID BLOCKING_TRX_THREAD,
       b.TRX_STATE BLOCKING_TRX_STATE,
       lb.LOCK_MODE BLOCKING_TRX_LOCK_MODE,
       lb.LOCK_TYPE BLOCKING_TRX_LOCK_TYPE,
       lb.LOCK_TABLE BLOCKING_TRX_LOCK_TABLE,
       lb.LOCK_INDEX BLOCKING_TRX_LOCK_INDEX,
       b.TRX_QUERY BLOCKING_QUERY
  FROM information_schema.INNODB_LOCK_WAITS w
 INNER JOIN INFORMATION_SCHEMA.INNODB_TRX b
    ON b.TRX_ID = W.BLOCKING_TRX_ID
 INNER JOIN information_schema.INNODB_TRX R
    ON r.TRX_ID = W.REQUESTING_TRX_ID
 INNER JOIN information_schema.INNODB_LOCKS lb
    ON lb.LOCK_TRX_ID = W.BLOCKING_TRX_ID
 INNER JOIN information_schema.INNODB_LOCKS lr
    ON lr.LOCK_TRX_ID = W.REQUESTING_TRX_ID;

常用有效检测数据库运行状态SQL脚本的更多相关文章

  1. 完整备份和差异备份数据库的SQL脚本

    工作中需要创建SQL Job对数据库进行定期备份,现把脚本记录如下. 1. 完整备份: -- FULL declare @filename varchar(1024), @file_dev varch ...

  2. Mysql数据库导出sql脚本

    1. 运行环境Centos mysqldump -h localhost -u root -p etv > ./etv.sql etv 是要导出的数据库名 > 设置导出的路径和文件名

  3. MSSQL生成整个数据库的SQL脚本的工具 scptxfr.exe

    scptxfr.exe的路径要正确declare @cMd varchar(1000)set @cmd = 'master.dbo.xp_cmdshell ' + '''c:\"Micros ...

  4. [SQL SERVER] - 还原数据库备份(SQL脚本),抛出 "System.OutOfMemoryException" 异常之解决

    背景 在 Microsoft SQL Server 2016 的查询窗体中,直接还原备份数据库的 SQL 脚本(99MB),抛出 Cannot execute script 异常: 原因 相关资料说: ...

  5. 数据库备份及SQL脚本导入

    数据库备份及SQL脚本导入 数据导出 su - oracle exp 数据库用户名/数据库密码@ORCL file=20190905.dmp full=y SQL脚本导入 首先导入前查看Oracle用 ...

  6. 如何执行一个mysql的sql脚本文件

    sql脚本是包含一到多个sql命令的sql语句,我们可以将这些sql脚本放在一个文本文件中(我们称之为“sql脚本文件”),然后通过相关的命令执行这个sql脚本文件.基本步骤如下:一.创建包含sql命 ...

  7. mysql执行sql脚本

    最近用mysql执行sql脚本,遇到一些问题,顺便记录一下笔记. 首先,先开启mysql服务,创建一个空数据库(脚本里没有创建数据库) 执行脚本有两个方法 1.未连接数据库:在Windows下使用cm ...

  8. mysql执行sql脚本文件

    mysql执行sql脚本文件 方法一:使用cmd命令执行(windows下,unix或Linux在的其控制台下) [MySQL的bin目录]\mysql –u用户名 –p密码 –D数据库<[sq ...

  9. 使用命令执行 sql 脚本文件

    使用命令执行 sql 脚本文件 方法: 在 Windows 下使用 cmd 命令执行(或 Unix 或 Linux 控制台下)[Mysql的bin目录]\mysql –u用户名 –p密码 –D数据库名 ...

随机推荐

  1. Android学习笔记进阶十二之裁截图片

    package xiaosi.cut; import java.io.File; import android.app.Activity; import android.content.Intent; ...

  2. Elasticsearch之es学习工作中遇到的坑(陆续更新)

    1:es集群脑裂问题(不要用外网ip,节点角色不要混用) 原因1:阿里云服务器,外网有时候不稳定. 解决方案:单独采购服务器,内网安装 原因2:master和node节点没有分开 解决方案: 分角色: ...

  3. JS错误记录 - To-do List

    var data = (localStorage.getItem('todolist'))? JSON.parse(localStorage.getItem('todolist')) : { todo ...

  4. 不是IT圈人的IT创业优劣势!

    不是IT圈人的IT创业优势: 1)更尊重市场导向而非技术   2)更关注产品细节而非技术  3)更关注企业平衡而非技术 不是IT圈人的IT创业劣势: 1)因营销而放弃技术规划   2)因需求而丧失技术 ...

  5. 【程序猿笔试面试复习】之中的一个 网络与通信篇(一) 几大网络模型:OSI、TCP/IP、B/S与C/S、MVC结构

    9.1网络模型 9.1.1. OSI七层模型 OSI(Open System Interconnection,开放系统互联)七层网络模型称为开放式网络互联參考模型.其为国际标准组织指定的一个指导信息互 ...

  6. android.mk-编译文件学习(转载)

    工作了那么久,都是使用大神们写的脚本机械的编译,对于android.mk根本没去了解过.今天趁着这个机会,在网上搜索了下.虽然依然不是很名白,留做记录,以后真用到了,再深入研究 转载自 http:// ...

  7. Spring MVC基础了解

    参考网址:https://www.yiibai.com/spring_mvc/springmvc_overview.html Spring框架相关 Spring Security 一个灵活强大的身份验 ...

  8. "C:\Program Files\Internet Explorer\iexplore.exe" -extoff 无加载项启动IE 浏览器打开时全屏模式

    "C:\Program Files\Internet Explorer\iexplore.exe" -extoff 无加载项启动IE浏览器打开时全屏模式

  9. DE1-SOC调试linux应用程序

    参考http://www.alterawiki.com/wiki/SoCEDSGettingStarted#Getting_Started_with_Linux_Application_Debuggi ...

  10. SpringBoot 使用yml配置 mybatis+pagehelper+druid+freemarker实例

    SpringBoot 使用yml配置 mybatis+pagehelper+druid+freemarker实例 这是一个简单的SpringBoot整合实例 这里是项目的结构目录 首先是pom.xml ...