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的数据。