博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL数据库默认数据库
阅读量:4172 次
发布时间:2019-05-26

本文共 6176 字,大约阅读时间需要 20 分钟。

MySQL数据库默认数据库

概述

MySQL 在整体架构上分为 Server 层和存储引擎层。

其中 Server 层,包括连接器、查询缓存、分析器、优化器、执行器等,存储过程、触发器、视图和内置函数都在这层实现。数据引擎层负责数据的存储和提取,如 InnoDB、MyISAM、Memory 等引擎。在客户端连接到 Server 层后,Server 会调用数据引擎提供的接口,进行数据的变更。

单点(Single),适合小规模应用,复制(Replication),适合中小规模应用,集群(Cluster),适合大规模应用。

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| sys                |

+--------------------+

4 rows in set (0.00 sec)

 

一 mysql核心数据库

mysql:是mysql 核心的数据库,类似于sqlserver中的master库, oracle中的system部分功能。主要负责存储数据库的用户\权限等

mysql自己需要使用的控制和管理信息-不能修改

mysql> show tables;

1.1 成本模型

engine_ cost: IO

server_ cost: cpu

 

1.2 权限相关的表:

columns_ priv -- 列级别权限

db--库级别权限

user--用户帐号,全局权限

host--现在不用了,废弃的

tables_ priv --表级权限

procs_.priv--存储过程与函数相关的权限

proxies_ priv --代理用户的权限

1.3 其他表

event--事件与任务调度

func--函数

gtid_ executed -- gtid, mysql启动阶段会读这个表来获取gtid里面的变量值

help  --帮助有关系的表

innodb_ index_ .stats | -- innodb索引统计信息

innodb_ table_ stats   | -- innodb表统计信息

ndb_ binlog_ index  |--ndb集群的二进制日志索引信息

plugin            | --插件表

1.4 如何读懂系统表内容

查看官方文档

二 Mysql默认数据库 SYS

Sys库所有的数据源来自:performance_schema。目标是把performance_schema的把复杂度降低,让DBA能更好的阅读这个库里的内容。让DBA更快的了解DB的运行情况,解决性能瓶颈都提供了巨大帮助。

Sys库下有两种表

字母开头: 适合人阅读,显示是格式化的数

x$开头 : 适合工具采集数据,原始类数据

 

sys_开头是库里的配置表:sys_config用于sys schema库的配置

 

variable 配置选项名称

 value     配置选项值

 set_time 该行配置修改的时间

 set_by     该行配置信息修改者,如果从被安装没有修改过,那么这个数据应该为NULL

2.1 视图大概分类:

host : 以IP分组相关的统计信息

innodb : innodb buffer 相关信息

io : 数据内不同维度展的IO相关的信息

memory : 以IP,连接,用户,分配的类型分组及总的占用显示内存的使用

metrics : DB的内部的统计值

processlist : 线程相关的信息(包含内部线程及用户连接)

ps_ : 没有工具统计的一些变量(没看出来存在的价值)

schema : 表结构相关的信息,例如: 自增,索引, 表里的每个字段类型,等待的锁等等

session : 用户连接相关的信息

statement : 基于语句的统计信息(重点)

statements_ : 出错的语句,进行全表扫描, 运行时间超长,排序相等(重点)

user_ : 和host_开头的相似,只是以用户分组统计

wait :  等待事件,比较专业,难看懂。

waits : 以IP,用户分组统计出来的一些延迟事件,有一定的参考价值。

Sys库能做什么,那么我们先来看看以下的问题,对于数据库,你有没有以下的疑问?

 

2.2 SYS常用实例

列的含义可以去查,官方手册。

2.2.1. 谁使用了最多的资源? 基于IP或是用户?

select * from host_summary limit 1;

select * from io_global_by_file_by_bytes limit 1;

select * from user_summary limit 1;

select * from memory_global_total;

2.2.2. 大部分连接来自哪里及发送的SQL情况?

查看当前连接情况

select host,current_connections ,statements from host_summary;

 

查看当前正在执行的SQL:

select conn_id, user, current_statement ,last_statement from session;

 

 

2.2.3. 机器执行多的SQL语句是什么样?

Select  *  from statement_analysis order by  exec_count desc limit 10;

 

2.2.4. 哪张表的I0最多?哪张表访问次数最多

Select  * from io_global_by_file_by_bytes limit 10;

Select *  from statement_analysis order by exec_count desc limit 10;

 

2.2.5. 哪些语句延迟比较严重?

Select  * from statement_analysis order by avg_latency desc

 limit 10;

 

2.2.6. 哪些SQL语句使用了磁盘临时表

select db, query,tmp_tables, tmp_disk_tables from statement_analysis

where tmp_tables>0  or tmp_disk_tables>0  order by (tmp_tables+tmp_disk_tables) desc limit 20;

 

2.2.7. 哪张表占用了最多的buffer pool

select * from innodb_buffer_stats_by_table order by pages desc limit 10;

2.2.8. 每个库占用多少Buffer pool

select * from innodb_buffer_stats_by_schema;

2.2.9. 每个连接分配多少内存?

select b. user, current_count_used , current_allocated, current_avg_alloc , current_max_alloc, total_allocated , current_statement

from  memory_by_thread_by_current_bytes a,session b where a.thread_id=b.thd_id;

 

2.2.10. MySQL内部现在有多个线程在运行?

select user , COUNT(*) from processlist group by  user;

 

select  * from processlist;

 

三 MySQL默认数据库performance_schema

sys<performance_schema:收集数据库服务器性能参数,得到数据库的运行统计信息,可以更好的利用这些信息分析问题。这个数据库的信息相当复杂,所以ORACLE公司官方把performance_schema简化到sys数据库,用于大家更简单的分析问题

mysql 5.5增加的,需要使用的时候需要设置参数performance_schema=on。

mysql 5.6以后默认打开。

 

这些表分几类:

1 setup 配置表,配置监控选项

2)当前enents表,记录当前的哪些线程正在做一些什么事情

3)各种事件的历史记录表。

4)各种事件的统计表

5)杂项表

3.1 performance常用实例

3.1.1 那个SQL执行的次数最多

select SCHEMA_NAME,DIGEST_TEXT,COUNT_STAR,SUM_ROWS_SENT,SUM_ROWS_EXAMINED,FIRST_SEEN,LAST_SEEN from

 events_statements_summary_by_digest order by CoUNT_STAR desc limit 1;

 

DIGEST_TEXT  SQL语句,COUNT_STAR次数,FIRST_SEEN开始时间,LAST_SEEN结束时间

3.1.2哪个SQL平均响应时间最多AVG_TIMER_WAIT:

select SCHEMA_NAME,DIGEST_TEXT,COUNT_STAR,AVG_TIMER_WAIT,SUM_ROWS_SENT,SUM_ROWS_EXAMINED,FIRST_SEEN,LAST_SEEN  from events_statements_summmary_by_digest order by AVG_TIMER_WAIT desc limit 1;

3.1.3哪个SQL扫描的行数最多:

 

select SCHEMA_NAME,DIGEST_TEXT,COUNT_STAR,AVG_TIMER_WAIT,SUM_ROws_SENT,SUM_ROWS_EXAMINED,FIRST_SEEN,LAST_SEEN

 from events_statements_summary_by_digest order by SUM_ROWS_EXAMINED desc limit 1;

 

3.1.4 那个SQL扫描排序和返回结果集最多

都是使用events_statements_summary_by_digest

select SCHEMA_NAME,DIGEST_TEXT,COUNT_STAR,AVG_TIMER_WAIT,SUM_ROws_SENT,SUM_ROWS_EXAMINED,FIRST_SEEN,LAST_SEEN

 from events_statements_summary_by_digest order by SUM_ROWS_EXAMINED desc limit 1;

    改变红字即可

SUM_ROWS_SENT 返回结果集

SUM_SORT_ROWS 排序最多

3.1.5 那个索引没有被使用

select OBJECT_SCHEMA,OBJECT_NAME,INDEX_NAME from table_io_waits_summary_by_index_usage

 where INDEX_NAME is not null and COUNT_STAR = 0 and OBJECT_SCHEMA <>'mysql' order by OBJECT_SCHEMA,OBJECT_NAME;

3.1.2哪个等待事件消耗的时间最多:

select EVENT_NAME,COUNT_STAR,SUM_TIMER_WAIT,AVG_TIMER_WAIT from

events_waits_summary_global_by_event_name where event_name != 'idle' order by SUM_TIMER_WAIT

 desc limit 1;

四 mysql默认数据库之INFORMATION_SCHEMA

提供数据库的元数据

比如数据库的数据名,表名,列信息,访问权限,索引,视图,存储过程,函数等信息。就是数据字典

查询这张表再什么数据库中

select * from tables where table_name='itpux11'

查询数据库中有什么表

select COUNT(*) tables,table_schema from information_schema.TABLES where table_schema = 'itpuxdb' group by table_schema;

五 MySQL常用命令

1 查看数据库的版本

show variables like 'version';

2 列出所有的数据库

show databases;

3 查看服务器状态

 status;

mysql> status;

--------------

mysql  Ver 14.14 Distrib 5.7.20, for linux-glibc2.12 (x86_64) using  EditLine wrapper

 

Connection id:           9

Current database:    information_schema

Current user:             root@localhost

SSL:                  Not in use

Current pager:          stdout

Using outfile:             ''

Using delimiter: ;

Server version:         5.7.20-log MySQL Community Server (GPL)

Protocol version:     10

Connection:         Localhost via UNIX socket

Server characterset:       utf8

Db     characterset:    utf8

Client characterset: utf8

Conn.  characterset:     utf8

UNIX socket:       /tmp/mysql.sock

Uptime:                 4 hours 45 min 24 sec

 

4 查看数据库存储引擎

show engines;

 

5 查看数据库存储引擎插件

show plugins;

 

6 查看数据库状态统计

show status;

 

7 查看数据库参数

show variables;

 

8 查看复制容灾

show master status;

show slave status;

 

9 查看单机还是集群

show variables like '%cluster%'

 

10 查看数据库线程

show processlist;

 

11更多

show databases;

show table;

show index;

use mysql;

切换数据库

转载地址:http://qxbai.baihongyu.com/

你可能感兴趣的文章
深入了解php底层机制
查看>>
XHProf-php轻量级的性能分析工具
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
Jackson Tree Model Example
查看>>
常用js收集
查看>>
如何防止sql注入
查看>>
springmvc传值
查看>>
在Eclipse中查看Android源码
查看>>
[转]C语言printf
查看>>
对话周鸿袆:从程序员创业谈起
查看>>
Mysql中下划线问题
查看>>
Xcode 11 报错,提示libstdc++.6 缺失,解决方案
查看>>
vue项目打包后无法运行报错空白页面
查看>>
1136 . 欧拉函数
查看>>
面试题:强制类型转换
查看>>
Decorator模式
查看>>
Template模式
查看>>
Observer模式
查看>>
高性能服务器设计
查看>>
图文介绍openLDAP在windows上的安装配置
查看>>