mysql从入门到放弃之数据库体系结构与管理


前言

第一篇文章中主要学习了mysql二进制的基本安装及数据库初始化等操作,本篇文章主要了解mysql的体系结构和管理,例如: mysql的实例组成、逻辑存储结构、物理存储结构等方面展开学习


提示:以下是本篇文章正文内容,下面案例可供参考

一、体系结构

1、mysql c/s结构介绍

在这里插入图片描述

从上图可知,mysql有两种连接方法
	第一种:
		TCP/IP : mysql -uroot -p -h IP地址 -P 端口
	第二种: 如果你看了我第一篇文章,就大概了解了socket连接方法的配置
		Socket:  mysql -uroot -p -S /data/mysql3306/data/run/mysql.sock

2、mysql实例组成

	mysqld守护进程 + master thread + 干活的thread + 预分配内存

3、mysqld程序运行原理

3.1、mysqld守护进程结构

mysqld守护进程结构

3.2、 引入sql语句结构化的查询语言

     DQL  数据查询语言
     DDL  数据定义语言
     DML  数据操作语言
     DCL  数据控制语言

3.3、探索一条SQL语句的执行过程

名称 作用
应用程序层 通过TCP/IP或者socket连接数据库
连接层 1、提供连接协议TCP/IP或者socket 2、验证用户名、密码、端口、地址合法性 3、开启专用连接线程,show processlist可以查看到线程(接受sql语句、返回执行结构) 4、将语句交给下一层
SQL层 1、接受sql语句 2、语法检查和sql_mode 3、语义检查(属于哪种查询语言)、权限检查 4、解析语句,生成多种执行计划树 5、通过优化器算法进行评估(cpu、io、内存、执行时间) 6、优化器选择最优的执行方法 7、语句执行器,真正执行sql语句 8、提供查询缓存(默认不开启) 9、日志记录(默认未开启)审计日志、通用日志、binlog日志
存储引擎层 磁盘、内存、网络,1、根据sql执行结果,去磁盘上找对应的数据。找到磁盘上16进制的数据,再次返回到sql层,结构化成表的方式,再由连接层线程展现处理

二、mysql逻辑存储结构

在这里插入图片描述

--->                类似 linux目录
 表         --->                类似 linux文件       
    列(字段)
    行(记录)
    表属性 (元数据)
    列属性

三、mysql物理存储结构

在这里插入图片描述

库  
	使用文件系统的目录来表示  (在数据库的数据目录下创建一个目录,然后可以再数据库中使用show databases查到)即数据目录下的目录名就是库名,如下图所示
表
    InnoDB (默认存储引擎)
       time_zone.frm  存储的表结构
       time_zone.ibd  存储的数据记录和索引
       ibdata1        数据字典信息
    MyISAM
       user.frm  存储的表结构(列、列属性)
       user.MYD  存储的数据记录
       user.MYI  存储索引
如下图所示

在这里插入图片描述

在这里插入图片描述

3.1、innodb存储引擎的段、区、页之间的关系

页:最小的存储单元,默认16k
区:64个连续的页,共1M
段:一个表就是一个段,包含一个或多个区

一般情况下(非分区表)
   一个表就是一个段、一个段由多个区构成、一个区再由(16k)* 64个连续的页 总计1M大小

四、mysql基础管理

4.1、用户管理

用户的作用?
	登录mysql、管理mysql对象(库表)
用户的定义
	用户名@'白名单'
例如:
	mysql> select user,host from mysql.user;
			+---------------+-----------+
			| user          | host      |
			+---------------+-----------+
			| test          | %         |
			| mysql.session | localhost |
			| mysql.sys     | localhost |
			| root          | localhost |
			+---------------+-----------+
用户的操作
	mysql> create user test@'192.168.0.%' identified by '123';  创建用户并设置密码
    mysql> select user,host from mysql.user;                   查看用户
    mysql> grant all on *.* to test@'%' identified by '123';    创建用户并授权、设置密码(仅限于mysql8.0之前的版本)
    mysql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值