mysql分类 && 构成 && 单位

关系型数据库和非关系型数据库特点对比

关系型数据库

1.二维表

2.Oracle传统企业,MySQL互联网企业

3.数据存取是通过SQL(Structured Query Language结构化查询语言)

4.最大特点数据安全性方面强(ACID)

非关系型数据库

1.不是否定关系型数据库,而是做关系型数据库的补充。

2.想做老大,先学会做老二

Oracle典型版本

大版本 经典版本号
7 7.3.4
8i(internet) 8.1.7
9i 9.2.0.8
10g(grid) 10.2.0.4
11g 11.2.0.3、11.2.0.4
12c(cloud) None
18c None

MySQL客户端与服务器模型

img

C/S结构的服务

client server

MySQL客户端:

1.mysql

2.mysqldump

3.mysqladmin

第三方:

navicat

sqlyog

phpmyadmin

MySQL的连接方式

1.TCP/IP

mysql -uroot -p123 -h10.0.0.52

2.Socket

mysql -uroot -p123 -S /tmp/mysql.sock

问题:

命令 类型
mysql -uroot -p123 socket
mysql -uroot -p123 -h127.0.0.1 TCP
mysql -uroot -p123 -hlocalhost socket
mysql -uroot -p123 -h127.0.0.1 -S /tmp/mysql.sock TCP

总结:

1.-h不一定都是tcp连接

2.MySQL默认使用socket连接

3.-S只允许本地连接,无法远程连接

4.tcp连接需要建立3次握手,所以MySQL默认使用socket(速度快)

MySQL服务器构成

什么是实例?

一个进程+多个线程+与分配的内存结构

UTOOLS1574846828070.png
UTOOLS1574846837575.png
UTOOLS1574846847769.png

MySQL的程序结构mysqld

img

连接层

1.验证用户的合法性(用户名,密码,主机域)

2.提供了两种连接方式(TCP/IP Socket)

3.建立一个与SQL层连接的线程

SQL层

1.接收连接层传来的SQL语句

2.检测语法

3.检测语义(DDL,DML,DQL,DCL),检测是show还是select?还是update?还是insert?

4.解析器,解析整条SQL语句,生成多种执行计划

5.优化器,选择解析器生成的多种执行计划中,效率最高的一种

6.执行器,将优化器,优化的最优的一种执行方式,执行

  • 和存储引擎层建立连接(提供一个线程)
  • 接收存储引擎层传来的结构化成表的数据

7.写缓存

8.记录日志(binlog)

存储引擎层

1.接收SQL层传来的SQL语句

2.与磁盘交互,读取数据并结构化成表,返回给SQL层

3.建立一个与SQL层连接的线程

MySQL的结构

1.逻辑结构

数据库管理员,操作的对象

  • 表:(真实数据+元数据)

  • 元数据:列+其他属性(大小,行数...)

  • 列:列名+(数据类型+约束(非空,默认值,主键,非负...))

2.物理结构

MySQL的物理结构,是最底层的数据文件

MySQL Linux
show databases; ls -l /
show tables; ls
use db cd /
drop database rm -fr
drop table rm -f
create database mkdir
## 库名,表名,一律小写
create database ZLS;
create database zls;
insert into ZLS.ZLS1 values(1);
insert into zls.zls1 values(1);

MySQL单位

  • 段:是由多个区组成的,一张表就是一个段

  • 区:是由64个页组成的,一个区:1M=1024K

  • 页(块):16k为一页

分区表:是由一个区构成一个段也就是一个表的表.

只要我有,从搭建数据库开始到现在,所有的binlog日志,那么我可以将MySQL的数据恢复到任意时刻.

你可能感兴趣的:(mysql分类 && 构成 && 单位)