MySQL第一讲

逻辑架构

逻辑架构图

在这里插入图片描述

连接器 Connectors

驱动 JDBC ODBC Python PHP .NET

管理和控制工具 Management Services & Utilities

备份、恢复、安全、集群,主要是DBA用的

连接池 Connection Pool

管理连接,不能无限制连

连接认证…

SQL接口 SQL Interface

分发各种SQL语句,DML DDL

解析器 Parser

词法解析和语法解析

词法解析 → 通过空格进行分割,形成语法树

语法分析 → 符合SQL语法 SQL92 MYSQL有自己的语法,比如limit

查询优化 Optimizer

索引 可建立多个索引,实际使用时只用一个,使用最优的,通过explain分析后得到最优

多表关联 小表驱动大表

WHERE条件 左→右 注:过滤力度最大的先执行,放在左边

Oracle 右→左,过滤力度大的放右边

查询缓存 Cache & Buffer

把查询结果缓存

Map

key:SQL语句的hash值

value:查询结果

注:1、where a=1 and b=2 跟 where b=2 and a=1 是不一样的

​ 2、只要做过新增、修改、删除,缓存会清掉

​ 3、MySQL8.0后不再用

存储引擎 Pluggable Storage Engines

存储引擎是针对表来指定的,5.5后的MySQL默认存储引擎是InnoDB

简单介绍:

存储引擎说明
MyISAM较高的插入、查询速度。不支持事务,不支持行锁。
InnoDB支持事务、行级锁定、外键、崩溃修复、并发控制,比MyISAM处理速度稍慢。
Memory内存存储引擎,极高的插入、更新、查询效率。不持久化,数据会丢失。不能建立太大的表。
Archive压缩存储,适合存储大量的、独立的历史数据,只能插入和查询。
CSV基于CSV格式文件存储数据,用作跨平台的数据交换。
Merge将多表联合成一个表,适用于超大规模数据存储。
xtraDB这是个第三方自定义的存储引擎,Percona公司出品,Percona Server为 MySQL 数据库服务器进行了改进,在功能和性能上较 MySQL 有着很显著的提升。该版本提升了在高负载情况下的 InnoDB 的性能、为 DBA 提供一些非常有用的性能诊断工具。
InnoDB和MyISAM区别
InnoDBMyISAM
存储文件.frm 表定义文件
.ibd 数据文件和索引文件
.frm 表定义文件
.myd 数据文件
.myi 索引文件
表锁、行锁表锁
事务支持不支持
COUNT扫表不扫表(加where条件也扫表)
索引结构B+ TreeB+ Tree
外键支持不支持

执行流程

在这里插入图片描述

物理结构

  • 通过文件系统存储数据和索引。
  • 从物理结构上,分为日志文件和数据、索引文件。
  • 以上两种文件都在/var/lib/mysql目录下。
  • 日志文件采用顺序IO存储(记录速度快、只能追加,浪费空间)、数据文件采用随机IO存储(省空间、相对慢)。

日志文件

在 /etc/my.cnf 中进行配置。

通过命令 show variables like ‘log_%’ 查看日志开启情况。

错误日志 errorlog

默认开启,无法关闭

二进制日志 binlog

默认开启,主要记录增删改操作,描述了数据变更的顺序,DML语句,事务提交才会记录,DDL语句会直接记录。重启一次服务就会生成一个新的binlog日志。

涉及备份、恢复、主从。

通用查询日志 general query log

记录所有,一般不能开启,尤其生产环境

慢查询日志 slow query log

调优用的,定位执行慢的select,默认关闭

重做日志 redo log

ib_logfile0、ib_logfile1 涉及持久化

回滚日志 undo log
中继日志 relay log

涉及主从

数据文件

通过命令 show variables like ‘%datadir%’ 查看数据文件情况。

InnoDB数据文件
  • .frm文件:主要存储表结构的定义信息。
  • .ibd文件:使用独享表空间存储表数据和索引信息,一张表对应一个ibd文件
  • ibdata文件:使用共享表空间存储表数据和索引信息(系统空间数据),所有表共同使用一个或者多个ibdata文件。
MyISAM数据文件
  • .frm文件:主要存储表结构的定义信息。
  • .myd文件:主要存储表数据信息。
  • .myi文件:主要存储索引信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值