mysql查询当前连接的schema_mysql information_schema 常用命令

information_schema 是MySql 信息数据库。

其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。

有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。

关于information_schema 的讲解网上很多资料  也很全面   这里我们介绍下最常用的相关信息查询:

1.SCHEMATA

SELECT *FROM information_schema.SCHEMATA s; -- 数据库信息,主要了解mysql中有哪些数据库。

4fc1378241c38641fc8ca5ff86d71da6.png

2.TABLES

SELECT *FROM information_schema.TABLES t WHERE t.TABLE_SCHEMA = '数据库名'; --数据库中表信息

ef35ab5ea8c5ad7d8f51735ccbecde28.png

这个表能干嘛呢?简洁:表明,表中行数,表存数据大小。

SELECT TABLE_NAME ,TABLE_ROWS ,DATA_LENGTH+INDEX_LENGTH ,concat(round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2), 'MB') asdata

FROM information_schema.tables WHERE TABLE_SCHEMA='库名' ORDER BY DATA_LENGTH+INDEX_LENGTH desc;

b5643554cee2b2d277192fd07ea5ff06.png

3.STATISTICS  提供了关于表索引的信息。是show index from schemaname.tablename的结果取之此表

SELECT s.INDEX_NAME,s.COLUMN_NAME,s.INDEX_TYPE,s.CARDINALITY FROM information_schema.STATISTICS s WHERE s.TABLE_NAME = '表名' AND s.TABLE_SCHEMA = '库名';

7e9da9e21d15cc843c77ff3289b65df4.png

关键在于这列:CARDINALITY  这个干嘛用的呢?

表示所以中不重复记录的预估值,需要注意的是Cardinality是一个预估值,而不是一个准确值基本上用户也不可能得到一个准确的值,在实际应用中,Cardinality/n_row_in_table应尽可能的接近1,如果非常小,那用户需要考虑是否还有必要创建这个索引。故在访问高选择性属性的字段并从表中取出很少一部分数据时,对于字段添加B+树索引是非常有必要的。

建立索引的前提是高选择性。这对数据库来说才具有实际意义,那么数据库是怎样统计Cardinality的信息呢?因为MySQL数据库中有各种不同的存储引擎,而每种存储引擎对于B+树索引的实现又各不相同。所以对Cardinality统计时放在存储引擎层进行的

在生成环境中,索引的更新操作可能非常频繁。如果每次索引在发生操作时就对其进行Cardinality统计,那么将会对数据库带来很大的负担。另外需要考虑的是,如果一张表的数据非常大,如一张表有50G的数据,那么统计一次Cardinality信息所需要的时间可能非常长。这样的环境下,是不能接受的。因此,数据库对于Cardinality信息的统计都是通过采样的方法完成

索引的建立对数据库的影响非常之大,不信你可以跑个千万级的数据表试试,一个索引,2,3,4 相差的不是一点点  简直是指数倍的增长,合理的使用索引可以提高性能,滥用就是降低性能的表现。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值