MySQL基础学习理解一

1. 什么是数据?

1.1  DBMS 数据库管理系统

RDBMS  : Oracle ,MySQL ,PG,MSSQL

NoSQL  : MongoDB ,Redis ,ES

NEWSQL (分布式): TiDB,Spanner ,AliSQL ,OB ,PolarDB

1.2 MySQL 企业版本GA选择

5.6 : 5.6.34 5.6.36 5.6.38(2017913) 5.6.40

5.7 : 5.7.18 ,20(2017913) ,24 ,(上课版本:5726)

8.0 : 8014, 8015 ,8016

2. 管理员用户密码忘记了?

    2.1 /etc/init.d/mysqld stop    #关闭数据库

    2.2 mysqld_safe --skip-grant-tables --skip-networking &     #启动数据库到维护模式

    2.3   flush privileges;

            alter user root@'localhost' identified by '1';    #进入mysql,登录并修改密码

    2.4  在后台关闭 2.2的操作。

3. MySQL体系结构与管理

3.1 MySQL C/S结构介绍 ***

      两种连接方式:

      TCP/IP:mysql -uroot -poldboy123 -h 10.0.0.51 -P3306

      Socket:mysql -uroot -poldboy123 -S /tmp/mysql.sock

3.2  SQL语句引入

     结构化的查询语言

    DQL

    DDL

    DML

    DCL

3.3 连接层

(1) 提供连接协议

         Socket  本地连接

         TCPIP   外部连接

(2) 验证用户名(root@localhost)密码合法性,进行匹配专门的授权表。

(3) 派生一个专用连接线程(接收SQL,返回结果)

         mysql> show processlist;

3.4  SQL层(优化方面至关重要的)

(1)验证SQL语法和SQL_MODE

(2)验证语义

(3)验证权限

(4)解析器进行语句解析,生成执行计划(解析树)

(5)优化器(各种算法,基于执行代价),根据算法,找到代价最低的执行计划。

代价:CPU  IO  MEM

(6)执行器按照优化器选择执行计划,执行SQL语句,得出获取数据的方法。

(7)提供query cache(默认不开),一般不开,会用redis

(8)记录操作日志(binlog),默认没开

3.5  存储引擎层

    真正和磁盘打交道的一个层次

    根据SQL层提供的取数据的方法,拿到数据,返回给SQL,结构化成表,再又连接层线程返回给用户。

4. 逻辑结构

    库  ---> 表 ----》数据行(记录),字段(列),属性(列属性,列约束,列的数据类型等,表属性,权限)

    表=====>数据行+列+元数据

5. 物理结构(引入)

    5.1 宏观

    库,存储在操作系统的目录中

    表:

    user表: MyISAM

    user.frm    -----> 列的定义信息

    user.MYD -----> 数据行

    user.MYI    -----> 索引信息

    time_zone表:InnoDB

    time_zone.frm  ---->列的定义信息

    time_zone.ibd  ---->数据行和索引

    5.2 微观

    段,区,页

    一个表就是一个段,mysql分配空间时至少分配一个区

    每个区默认是1M(64 个 pages),MySQL最小的IO单元是PAGE(16K)  文件句柄,恢复rm的数据。

你可能感兴趣的:(MySQL基础学习理解一)