01.初识MySQL

database

MySQL理论

1. 数据库

  1. 数据:

    • 数据就是一种符号,记录人类认为有价值的东西,例如图片、视频、文字、表格等
    • 从计算机角度来看,就是二进制、16进制的文件

  2. 数据库的分类:

    1. RDBMS:关系型数据库管理系统

      • 二维表结构,有清楚的行列结构,提供丰富的查询功能,高一致性,性能较差
      • 适用数据安全要求较高的场景

    2. NOSQL:无结构化存储

      • key volume键值存储或jeon格式,性能较高
      • 适用于性能要求较高,安全性要求不是太高的场景,可配合RDBMS使用

    3. NewSQL:新式的关系型数据库管理系统,就是RDBMS+NOSQL的组合

2. 数据库产品

RDBMS

NOSQL

NEWSQL

MySQL(Oracle)

Redis

PinCAP产品: TiDB

Oracle

MongoDB

Ali使用:PolarDB + OB

MSSQL

Memcached

Tencent使用:TDSQL

PG

ES

3. MySQL版本选用

  1. mysql社区版本类型

    • MR|RC:测试开发版
    • GA:稳定发布版

  2. MySQL:尽量使用双数版

    • 5.6.34 - 5.6.42

      • 5.6.36:2017-3.18 GA

    • 5.7.20 - 5.7.26

      • 5.7.20:2017-9-13 GA

  3. 产品线

    1. MySQL:

      • E:企业版
      • C:社区版
      • 5.0 5.1 5.5 5.6 5.7 8.0 9.0

    2. mariadb:

      • 5.0 5.1 5.5 10.x

    3. percona:和MySQL很相似

      • 5.0 5.1 5.5 5.6 5.7 8.0

4. Oracle MySQL 5.7.26版本二进制部署

系统的准备

#1. 网络配置

ip,hostname,iptables,Selinux

#2. 规划目录

上传软件至:/usr/local

tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

ln -s mysql-5.7.26-linux-glibc2.12-x86_64/ mysql57

mkdir -p /data/mysql/data_3306 #数据路径

mkdir -p /data/mysql/binlog_3306 #binlog日志路径日志章节说明.

#3. 用户创建

useradd mysql -s /sbin/nologin -M

#4. 授权

chown -R mysql.mysql /usr/local/mysql57 /data

#5. 环境变量

vim /etc/profile

添加:

echo "export PATH=/usr/local/mysql57/bin:$PATH" >> /etc/profile

source /etc/profile

mysql -V

#6. 卸载残留 安装依赖

yum remove -y mariadb-libs

yum install -y libaio-devel

#7. 初始化数据库

mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57 --datadir=/data/mysql/data_3306

#8. 配置文件

cat > /etc/my.cnf <<EOF

[mysqld]

user=mysql

port=3306

basedir=/usr/local/mysql57

datadir=/data/mysql/data_3306

server_id=6

socket=/tmp/mysql.sock

[mysql]

socket=/tmp/mysql.sock

EOF

#9. 加入系统管理

cp /usr/local/mysql57/support-files/mysql.server /etc/init.d/mysqld

chkconfig --add mysqld

5. MySQL体系结构

5.1 SQL种类:

  1. DDL:数据定义
  2. DCL:数据控制
  3. DML:数据操作
  4. DQL:数据查询

5.2 MySQL工作模型

  1. CS结构,客户端服务端模型

    1. 服务端程序:mysqld
    2. 客户端程序:

      • mysql
      • mysqldump
      • mysqladmin

  2. 实例:

    • MySQL运行结构

      • mysqld --调用--> master thread --调用--> worker threads

    • MySQL内存区域

      • MySQL启动后会分配一个固定的专用内存区域

    实例 = mysqld + master thread + worker threads + 内存区域

    数据库管理系统 = 实例 + 数据

5.3 MySQL程序模型

  1. 连接层

    • TCP/IP 或 socket 连接方式
    • 验证用户账号密码
    • 连接线程,接收SQL语句,返回执行结果

  2. SQL层

    • 语法检查
    • 权限检测
    • 语义检查,识别SQL语句的类型
    • 解析器预处理,分析执行SQL语句的各种执行方式,生成解析树(执行计划)
    • 优化器,基于执行计划,挑选最小代价的方式
    • 执行器,基于优化器的选择执行SQL语句,发送给引擎进行操作

  3. 存储引擎层

    • 根据SQL层执行结果,落实到磁盘中

5.4 MySQL逻辑结构

  1. 库(database|schema):

    • 库名称
    • 库属性

  2. 表(table)

    • 表名称
    • 表属性
    • 字段(列)
    • 数据行(记录)

5.5 MySQL物理结构

  1. 库:磁盘上的一个目录
  2. 表:使用多个文件存储表的信息

    1. MyISAM引擎:

      • .frm:表结构
      • .MYD:数据行
      • .MYI:索引

    2. InnoDB引擎:

      • frm:表结构
      • ibd:数据行 + 索引

5.6 MySQL的段区页

  1. 段:一个表就是一个段,我们进行数据分配时,MySQL会在表段中至少分配一个区,也就是1M空间
  2. 区:连续的64个默认大小的页构成一个区
  3. 页:MySQL默认最小IO单元为页(默认16k,可调整),由连续的4个OSblock组成
  4. OSblock,xfs格式默认4k,也就是磁盘上连续的8个扇区
  5. 扇区:每个扇区512字节大小

以上是 01.初识MySQL 的全部内容, 来源链接: utcz.com/z/531812.html

回到顶部