MySQL体系结构了解

来源:互联网 发布:linux脚本怎么开机自启 编辑:程序博客网 时间:2024/06/07 04:08
1.MySQL体系结构

了解MySQL体系结构图,她由SQL接口,解析器,优化器,缓存,存储引擎组成的



概念描述:
Connectors:与客户端应用程序建立连接的数据库接口

Management Services & Utilities:系统管理和服务相关辅助工具

Connection Pool:负责处理和用户访问有关的各种用户登录,线程处理,内存和进程缓存需求

SQL Interface:接受用户SQL命令,并把结果返回给客户端,如select..from..调用SQL Interface

Parser:解析器
SQL命令传递到解析器时会被解析器验证和解析
功能:
对SQL语句进行语法分析和解析,构造一个用来执行查询的数据结构,以后SQL语句传递和处理基于这个结构
若在分解中遇到错误,表示该SQL语句不合理

Optimizer:优化查询语句,以保证数据检索动作的效率达到或很接近最优。使用一种"选取->投影->联接"
策略来处理查询,即先根据有关的限制条件进行选取(select操作)以减少将要处理的元组个数,再进行投
影以减少被选取元组的属性字段个数,根据前2个条件联接起来生成查询结果。
如:select id,name from profile where id=1;
a.select操作:根据where语句进行选取,而不是将全表全部查询以后再进行id过滤
b.投影操作:在select操作基础上把id和name进行属性投影,而不是将所有属性取出来再进行过滤
c.将a&b 2个查询条件联接起来生成最终查询结果

Cache和Buffer:cache读,Buffer写
若查询缓存有命中的查询结果,查询语句就可以直接查询缓存中取数据
这个缓存机制由一系列小缓存组成的,如:表缓存,记录缓存,key缓存,权限缓存,host名缓存等

2.MySQL存储引擎--InnoDB
a.支持事务
b.行锁,提供并发性,支持MVCC--多版本并发控制
c.支持外键,保证数据完整性
d.独立ibd文件存放表和索引数据,insert buffer和事务undo信息
e.特性:insert buffer/double write/adaptive hash index/read ahead
f.内存结构组成:innodb_buffer_pool + innodb_log_buffer + innodb_additional_mem_pool
g.buffer_pool(缓冲池):data page,index page,insert buffer,adaptive hash index,lock info,DD
h.插入缓冲(insert buffer):提供辅助索引的插入和更新性能,先判断是否在缓冲池,若在,则直接插入索引页,

否则先插入缓冲池,而后再定期合并插入索引页



i.二次写(double write):内存doublewrite buffer(2M)和物理磁盘上共享表空间(连续64个页)

j.多版本并发控制(MVCC):
.原理:在事务中保存数据快照,在一个事务里能看到数据一致的视图,而不用担心这个事务运行多长时间,同时在同一
时刻不同事务看到相同表中的数据可能不同。
.特征:每行数据都存在一个版本,每次数据更新时都更新该版本,修改时copy出,当前版本随意修改,各事务之间无干扰,
保存时比较版本号,若成功(commit),则覆盖原纪录;失败则放弃copy(rollback)
k.一致性非锁定读:
.指innodb通过mvcc技术的方式来读取数据库中的数据,若读取的数据正在进行delete或update,这时读取操作不会因此等待
行上的锁释放,而会去读取行的一个快照(这个是保存在undo中该行的数据),快照没有额外的开销且读取快照不需要加锁
.提高数据读取的并发性,在innodb中,读取不会占用和等待表上的锁

3.MySQL存储引擎--MyISAM
a.不支持事务
b.表锁
c.全文索引
d.存储表由MYD和MYI组成,分别存放数据和索引
e.使用数据压缩和索引优化
f.特点:可靠性高,适用范围广,检索速度快

4.MySQL存储引擎--Memory
a.表数据存放在内存中
b.hash index
c.一个.frm扩展名指定它存储表的定义
d.特点:服务器重启时,memory表里数据全部丢失
e.只支持表锁,并发性差
f.不支持text和blob类型
g.按照固定长存储变长字段(varchar)数据
h.高速度,低延迟,不适合频繁写
k.存储临时数据

5.MySQL存储引擎--Archive
a.提供高速插入和压缩功能
b.特点:
.只支持insert和select操作
.行锁来实现高并发insert操作
.不支持事务
.采用zlib算法压缩存储,压缩比1:10
c.存储归档数据,如日志信息

5.MySQL存储引擎--MariaDB
a.取代MyISAM
b.特点:
.缓存数据和索引数据
.行锁
.MVCC功能
.支持事务和非事务



0 0
原创粉丝点击