第一章 mysql体系结构和存储引擎

1.1 数据库和实例

数据库:物理操作系统文件或其他形式文件类型的集合

实例:MySQL数据库由后台线程以及一个共享内存区组成

启动服务:

查看实例进程

配置文件: mysql --help|grep my.cnf

datadir  -- 可能只是一个软连接

 

1.2 MySQL体系结构

连接池

管理服务和工具组件

SQL接口组件

查询分析组件

优化器组件

缓存组件

插件式存储引擎

物理文件

存储引擎是基于表的,不是基于库的

 

1.3 MySQL存储引擎

官方文档:自定义存储引擎的过程

innodb

innodb存储引擎:支持事务、行锁设计、支持外键、非锁定读,

innodb表空间由innodb存储引擎自身进行管理,支持raw disk上创建表空间

使用mvcc提高并发性

支持SQL标准的四种事务隔离级别,使用next-key lock避免幻读

插入缓冲、double write、自适应哈希索引、预读

采用聚簇索引的方式组织表数据(主键)

 

MyISAM

MyISAM存储引擎不支持事务、表锁设计,支持全文索引

缓冲池只缓存(cache)索引文件,而不缓冲数据文件

ndb存储引擎

NDB的特点是数据全部放在内存中,主键查询快,并且通过添加NDB数据存储节点(Data Node)可以线性地提高数据库性能,是高可用、高性能的集群系统

NDB存储引擎的连接操作(JOIN)是在MySQL数据库层完成的,而不是在存储引擎层完成的。这意味着,复杂的连接操作需要巨大的网络开销,因此查询速度很慢

 

Memory存储引擎

数据存放在内存中,如果数据库重启或发生崩溃,表中的数据都将消失。它非常适合用于存储临时数据的临时表,以及数据仓库中的纬度表。Memory存储引擎默认使用哈希索引,而不是我们熟悉的B+树索引。

只支持表锁,并发性能较差,并且不支持TEXT和BLOB列类型

存储变长字段(varchar)时是按照定常字段(char)的方式进行的,因此会浪费内存

file:///C:/Users/dell/Documents/WeChat%20Files/wxid_o1wazo63wge722/FileStorage/File/2021-05/37%E8%AE%B2%E4%BB%80%E4%B9%88%E6%97%B6%E5%80%99%E4%BC%9A%E4%BD%BF%E7%94%A8%E5%86%85%E9%83%A8%E4%B8%B4%E6%97%B6%E8%A1%A8.html

file:///C:/Users/dell/Documents/WeChat%20Files/wxid_o1wazo63wge722/FileStorage/File/2021-05/36%E8%AE%B2%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%B4%E6%97%B6%E8%A1%A8%E5%8F%AF%E4%BB%A5%E9%87%8D%E5%90%8D.html

 

Archive存储引擎

只支持INSERT和SELECT操作,Archive存储引擎使用zlib算法将数据行(row)进行压缩后存储,压缩比一般可达1∶10;

Archive存储引擎非常适合存储归档数据,如日志信息。Archive存储引擎使用行锁来实现高并发的插入操作,但是其本身并不是事务安全的存储引擎,其设计目标主要是提供高速的插入和压缩功能。

 

Federated存储引擎

不存放数据,类似oracle的db link

 

Maria存储引擎

可以看做是MyISAM的后续版本,支持缓存数据和索引文件,应用了行锁设计,提供了MVCC功能,支持事务和非事务安全的选项,以及更好的BLOB字符类型的处理性能

 

 

1.4 存储引擎之间的比较

 

 

1.5 连接MySQL

1.tcp/ip

在通过TCP/IP连接到MySQL实例时,MySQL数据库会先检查一张权限视图,用来判断发起请求的客户端IP是否允许连接到MySQL实例。该视图在mysql架构下,表名为user

2.socket连接

只能本地连接

 

资料来源于姜承尧老师的《MySQL技术内幕 InnoDB存储引擎》

posted @ 2021-05-25 10:08  geek_ace  阅读(170)  评论(0编辑  收藏  举报