MySQL 元数据

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL 元数据

元数据???

所谓元数据,就是表示数据的数据,这些数据五花八门,总之,只要不是我们存储到数据库里的数据,大多都可以理解为元数据。

描述数据库的任何数据—作为数据库内容的对立面—是元数据。

因此,列名、数据库名、用户名、版本名以及从SHOW语句得到的结果中的大部分字符串是元数据。还包括INFORMATION_SCHEMA数据库中的表中的内容,因为定义的那些表存储关于数据库对象的信息。

获取元数据的语句

help show;
show databases;              # 查询所有库名
show tables;                 # 查询当前库的所有表名  
show tables from world;      # 查询world库下的所有表名
show create database world;       # 查询world建库语句
show create table city;           # 当前库下的city表建表语句
show create table world.city;     # world库下的建表语句   
show privileges;                  # 数据库中所有权限
show engines;                     # 数据库中支持的存储引擎
show grants for root@'localhost'  # 查询某个用户权限
show charset;                           # 查询数据库字符集支持
show collation;                         # 查询所有校对规则的支持
show variables like '%trx%'             # 查询数据库参数 
show status like 'com_%'                # 查询数据库的状态
show processlist;                       # 查询所有会话信息
show engine innodb status               # 查询innodb引擎相关的状态
show binary logs                        # 查询二进制日志文件信息
show binlog events in 'xxx'             # 查看二进制日志事件
show master status ;                    # 当前正在使用的二进制日志信息
show slave status\G                     # 查看主从状态相关信息
show slave hosts;                       # 查看从库主机信息

通过系统表查询元数据

mysql
# 权限表:
  user
  db
# 统计信息表 :
  innodb_index_stats
  innodb_table_stats
IS(information_schema)
对象属性:
tables  
columns
PS 
性能有关
SYS
性能有关

IS中的 tables 和 columns 的应用

数据库资产统计
use information_schema;
desc tables;
-- table_schema   表所在的库
-- table_name     表名
-- engine         存储引擎
-- table_rows     表行数
-- avg_row_length 平均行长度
-- index_length   索引长度
-- data_free      碎片的大小
例子1 :每个业务库表的个数和名称
select  table_schema,count(*),group_concat(table_name)
from information_schema.tables
where table_schema not in ('mysql','information_schema','performance_schema','sys')
group by table_schema;
+--------------+----------+------------------------------+
| table_schema | count(*) | group_concat(table_name)     |
+--------------+----------+------------------------------+
| younggirl    |        1 | student                      |
| oldli        |        2 | student,stu                  |
| school       |        4 | sc,course,teacher,student    |
| world        |        3 | countrylanguage,country,city |
+--------------+----------+------------------------------+
4 rows in set (0.01 sec)
例子2:统计每个库的数据量 
select  table_schema,SUM(table_rows*avg_row_length+index_length) as total_B
from information_schema.tables
where table_schema not in ('mysql','information_schema','performance_schema','sys')
group by table_schema;
+--------------+----------+
| table_schema | total_KB |
+--------------+----------+
| oldzhang     |  16.0000 |
| oldli        |   0.0000 |
| school       |  63.9795 |
| world        | 779.7744 |
+--------------+----------+
4 rows in set (0.01 sec)
例子3: 查询业务表中,所有不是InnoDB引擎的表 
select  table_schema,table_name
from information_schema.tables
where 
table_schema not in ('mysql','information_schema','performance_schema','sys')
and engine!='innodb';
+--------------+------------+
| table_schema | table_name |
+--------------+------------+
| oldli        | test       |
+--------------+------------+
1 row in set (0.00 sec)
命令拼接,完成批量工作
alter table oldboy.t1 engine=innodb;
select  concat("alter table ",table_schema,".",table_name," engine=innodb;")
from information_schema.tables
where 
table_schema not in ('mysql','information_schema','performance_schema','sys')
and engine!='innodb' 
+----------------------------------------------------------------------+
| concat("alter table ",table_schema,".",table_name," engine=innodb;") |
+----------------------------------------------------------------------+
| alter table oldli.test engine=innodb;                               |
+----------------------------------------------------------------------+
# 在原命令下添加into把数据导出 (工作中禁用source)
select  concat("alter table ",table_schema,".",table_name," engine=innodb;")
from information_schema.tables
where 
table_schema not in ('mysql','information_schema','performance_schema','sys')
and engine!='innodb' into outfile '/tmp/alter.sql';
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
SQL 存储 关系型数据库
MySQL数据库——锁-表级锁(表锁、元数据锁、意向锁)
MySQL数据库——锁-表级锁(表锁、元数据锁、意向锁)
214 0
|
6月前
|
SQL 关系型数据库 MySQL
Flink CDC引起的Mysql元数据锁
记一次Flink CDC引起的Mysql元数据锁事故,总结经验教训。后续在编写Flink CDC任务时,要处理好异常,避免产生长时间的元数据锁。同时出现生产问题时要及时排查,不能抱有侥幸心理。
|
6月前
|
关系型数据库 MySQL PHP
MySQL基础知识之【元数据】
MySQL基础知识之【元数据】
81 1
|
关系型数据库 MySQL PHP
软件开发入门教程网 Search之MySQL 元数据
软件开发入门教程网 Search之MySQL 元数据
|
关系型数据库 MySQL PHP
软件开发入门教程网 Search之MySQL 元数据
在MySQL的命令提示符中,我们可以很容易的获取以上服务器信息。 但如果使用Perl或PHP等脚本语言,你就需要调用特定的接口函数来获取。 接下来我们会详细介绍。
|
SQL 存储 分布式计算
大数据组件-Hive部署基于MySQL作为元数据存储
大数据组件-Hive部署基于MySQL作为元数据存储
大数据组件-Hive部署基于MySQL作为元数据存储
|
SQL 分布式计算 关系型数据库
Hive:基本架构、将mysql作为元数据库
Hive:基本架构、将mysql作为元数据库
452 0
Hive:基本架构、将mysql作为元数据库
|
SQL 关系型数据库 MySQL
hive2.2.0安装与配置(元数据保存在mysql中)
Hive有3中运行模式,今天主要来介绍一下把元数据保存在mysql中的配置方法.mysql的详细安装步骤 (1)内嵌模式 将元数据保存在本地内嵌的 Derby 数据库中,这是使用 Hive 最简单的方式。但是这种方式缺点也比较明显,因为一个内嵌的 Derby 数据库每次只能访问一个数据文件,这也就意味着它不支持多会话连接。