概述

information_schema 数据库跟 performance_schema 一样,都是 MySQL 自带的信息数据库。其中 performance_schema 用于性能分析,而 information_schema 用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类型、访问权限等。

information_schema 中的表实际上是视图,而不是基本表,因此,文件系统上没有与之相关的文件。

今天主要分享一些跟information_schema息息相关的一些统计命令。


1、没有使用索引的表统计

SELECTt.TABLE_SCHEMA,t.TABLE_NAME,t.TABLE_ROWS FROMinformation_schema.TABLES AS tLEFT JOIN ( SELECT DISTINCT table_schema, table_name FROM information_schema.`KEY_COLUMN_USAGE` ) AS kt  ON kt.table_schema = t.table_schema AND kt.table_name = t.table_name WHEREt.table_schema NOT IN ( 'mysql', 'information_schema', 'performance_schema', 'test' ) AND kt.table_name IS NULL;

2、查看存储过程和函数

select routine_name,ROUTINE_SCHEMA,ROUTINE_TYPE from information_schema.routines;

3、查看使用myisam的表

SELECTtable_schema,table_name FROMinformation_schema.TABLES WHEREENGINE = 'MyISAM' AND table_schema NOT IN ( 'information_schema', 'performance_schema', 'mysql' )

4、查看没有使用主键的表统计

SELECTt.table_schema,t.table_name,t.ENGINE,IF( ISNULL( c.constraint_name ), 'NOPK', '' ) AS nopk,IF( s.index_type = 'FULLTEXT', 'FULLTEXT', '' ) AS ftidx,IF( s.index_type = 'SPATIAL', 'SPATIAL', '' ) AS gisidx FROMinformation_schema.TABLES AS tLEFT JOIN information_schema.key_column_usage AS c ON ( t.table_schema = c.constraint_schema AND t.table_name = c.table_name AND c.constraint_name = 'PRIMARY' )LEFT JOIN information_schema.statistics AS s ON ( t.table_schema = s.table_schema AND t.table_name = s.table_name AND s.index_type IN ( 'FULLTEXT', 'SPATIAL' ) ) WHEREt.table_schema NOT IN ( 'information_schema', 'performance_schema', 'mysql' ) AND t.table_type = 'BASE TABLE' AND c.constraint_name IS NULL ORDER BYt.table_schema,t.table_name;

5、行数据前10统计的表

SELECTtable_schema,table_name,table_rows,data_length,index_length,CONCAT( ROUND( ( data_length + index_length ) / ( 1024 * 1024 ), 2 ), 'M' ) AS 'Total',CONCAT( ROUND( DATA_FREE / ( 1024 * 1024 ), 2 ), 'M' ) FROMinformation_schema.TABLES WHEREtable_schema NOT IN ( 'information_schema', 'mysql', 'performance_schema', 'test' ) ORDER BYtable_rows DESC LIMIT 10;

6、查看主外键约束

SELECTC.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 FROMINFORMATION_SCHEMA.KEY_COLUMN_USAGE CJOIN INFORMATION_SCHEMA.TABLES T ON T.TABLE_NAME = C.TABLE_NAMEJOIN 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 WHEREC.REFERENCED_TABLE_NAME IS NOT NULL;

7、查看触发器

select TRIGGER_SCHEMA,TRIGGER_NAME,DEFINER,ACTION_STATEMENT from information_schema.TRIGGERS 

8、查看视图表

select table_schema,table_name,definer,VIEW_DEFINITION,COLLATION_CONNECTION from information_schema.views where table_schema not in ('sys')group by table_name,table_schema,VIEW_DEFINITION,VIEW_DEFINITION,COLLATION_CONNECTION

说明:

  • sql1语句收集没有任何索引的表(包括主键),这种表是非常危险的,应该避免出现
  • sql2语句收集存储过程和函数,有利于线上的规范
  • sql3 语句收集myisam表引擎的表,这种表会引起大量的表级锁,应该避免出现
  • sql4 语句收集没有主键的表,这种表会引起性能问题,应该避免出现
  • sql5 语句收集大表前10,大表对于mysql的性能影响很关键,应该尽量减少大表的出现
  • sql6 语句收集主外键约束的表,拥有主外键约束的表可以影响手动DML操作,DBA应该注意
  • sql7 语句收集触发器的表,用户触发器的表是无法应用pt工具的,DBA应该注意
  • sql8 视图语句收集的表,通过对 views 表的查询可以查看数据库中所有视图的详细信息。

后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

如果你觉得这篇文章对你有帮助, 请小小打赏下~

mysql多字段数据统计_超详细的mysql元数据sql统计--information_schema相关推荐

  1. mysql 查询和修改组合_## 超详细MySQL常用语句,增删查改

    ## MySQL常用语句,增删查改,安装配置mysql服务 ***#新手博客,应届生,谢谢支持哟 记得点赞关注哟*** ***-----sql常见命令:--------*** 安装服务:mysqld ...

  2. mysql安装check requirements出错_超详细的MySQL8.0.17版本安装教程

    下载MySQL MySQL的官网地址:https://www.mysql.com/. 如下图所示: 然后点击DOWNLOADS ==> Community,选择MySQL Community S ...

  3. 清空缓存的命令_超详细的mysql数据库查询缓存原理解析、涉及命令、流程分析等...

    概述 mysql查询缓存在数据库优化可以起到很大的作用,今天主要针对这一块做一个总结,下面一起来看看吧~ 一.缓存条件,原理 MySQL Query Cache是用来缓存我们所执行的SELECT语句以 ...

  4. 字符集_超详细的MySQL数据库字符集总结,值得收藏

    概述 MySQL支持多种字符集(character set)提供用户存储数据,同时允许用不同排序规则(collation)做比较.下面基于MySQL5.7介绍一下字符集相关变量的使用. 一.字符集.字 ...

  5. mysql序列号生成_超详细的mysql数据库GTID介绍—概念、优缺点、原理、生命周期等

    概述 这几天就简单介绍一下GTID好了~这篇是概念篇.. 从MySQL 5.6.5 开始新增了一种基于 GTID 的复制方式.通过 GTID 保证了每个在主库上提交的事务在集群中有一个唯一的ID.这种 ...

  6. mysql数据库查询源码_超简单php mysql数据库查询类

    本文章为你免费提供一款漂亮的超简单php mysql数据库查询类哦 */ class Config{ private $host; //主机名称:一般是localhost private $root; ...

  7. iframe关闭时触发事件_超详细的mysql数据库事件--定时任务介绍及日常管理

    概述 由于最近在做某些日志表的清理工作,会用到定时任务,所以这里也简单介绍一下mysql如何用事件来实现定时任务. 后面会介绍两个日志表清理实现方案,一种是传统的定时delete,另一种会稍微复杂点, ...

  8. mysql 崩溃恢复_超详细的MySQL数据库InnoDB崩溃恢复机制总结

    概述 数据库系统与文件系统大的区别在于数据库能保证操作的原子性,一个操作要么不做要么都做,即使在数据库宕机的情况下,也不会出现操作一半的情况,这个就需要数据库的日志和一套完善的崩溃恢复机制来保证.下面 ...

  9. mysql数据库字符集_超详细的MySQL数据库字符集总结,值得收藏

    MySQL支持多种字符集(character set)提供用户存储数据,同时允许用不同排序规则(collation)做比较.下面基于MySQL5.7介绍一下字符集相关变量的使用. 一.字符集.字符序的 ...

最新文章

  1. 对javscript中Object.defineProperty的理解
  2. sourceinsight无法跳转函数_使用SourceInsight的三大理由,最后一点是关键!
  3. 万字长文让你看够幂级数
  4. 源码解读_Go Map源码解读之Map迭代
  5. 【Qt】水平和垂直布局
  6. 钉钉调岗申请单怎么写 钉钉申请调岗的教程
  7. 【转】QT中使用MYSQL中文乱码解决方法
  8. python itertools combination_Python itertools.combinations 和 itertools.permutations 等价代码实现...
  9. CC2530串口通信
  10. 从0开始,设计研发一个全功能通用大数据系统
  11. POJ 3257 Cow Roller Coaster 二维背包
  12. plc程序加密解密方法解读
  13. 判断曲线方向是逆时针还是顺时针
  14. Open SQL LEFT与RIGHT函数
  15. SEO个人整理全套学习资料
  16. 企业经营核心要素框架
  17. [Oracle 11g r2(11.2.0.4.0)]集群守护进程gpnp介绍
  18. 力扣1006笨阶乘问题
  19. linux基础(四):shell简单命令;文件系统命令,系统操作命令,文本操作命令;文本处理命令
  20. 基于北向资金指数择时策略验证与思考

热门文章

  1. LeetCode简单题之三角形的最大周长
  2. Redis缓存穿透击穿雪崩
  3. 薄膜封装,等离子体技术,原子层沉积,化学气相沉积
  4. 毫米波雷达分类和技术方案
  5. Java方法详细介绍
  6. Django 上传图片和Admin站点5.2
  7. [JavaScript] JavaScript 数组挖掘,不只是讲数组哟
  8. Android 判断某个服务是否正在运行
  9. Mainfest merger failed
  10. 关于char(M)和varchar(N)的区别