0%

MySQL体系结构

MySQL采用的是客户/服务器体系结构,实际是有两个程序,一个是MySQL服务器程序,指的是mysqld程序,运行在存放数据库的机器上,负责在网络上监听并处理来自客户的服务请求,根据这些请求去访问数据库的内容,再把信息回传给客户;另一个程序时MySQL客户程序,负责连接到数据库服务器,并通过向服务器发出查询命令来告知服务器需要哪些信息

MySQL总体结构分为四层

总体结构

阅读全文 »

MySQL存储引擎

MySQL有很多的存储引擎,每个存储引擎都有自己的特点,且存储引擎是基于表的,所以可以根据不同的应用来建立不同存储引擎表,虽然有很多存储引擎,但是使用最多的还是Innodb、MyISAM和Memory这三种存储引擎

在mysql的my.cnf文件中使用default-storage-engine=INNODB来指定默认存储引擎

所以先看一下这三种搜索引擎的区别

对比 MyISAM Innodb Memory
外键 不支持 支持 不支持
事务 不支持 支持 不支持
行表锁 表锁,不适合高并发 表锁、行锁,适合高并发 表锁
缓存 只缓存索引,不缓存数据 既缓存索引,又缓存数据,对内存要求较高
表空间
关注点 性能 事务
内存使用
插入速度
存储文件 .frm表定义文件
.myd数据文件
.myi索引文件
.frm表定义文件
.ibd数据文件
count 有专门存储表count的地方 扫表
阅读全文 »

MySQL的数据文件

mysql的数据都存放在datadir所指的位置,其中包含了mysql中创建的数据库,数据库中包含了表结构(frm文件)、表数据(myd文件)、表索引(myi文件)

1
show variables like '%datadir%'
  • .frm 存放myisam存储引擎和表相关的数据信息,主要包括表结构的定义信息
  • .ibd和.ibdata 用于存储innodb存储引擎的表数据和索引信息
  • .myd 存储myisam存储引擎的表数据信息
  • .myi 存储使用myisam存储引擎的表数据文件中任何索引的数据树

Innodb的数据文件

Innodb的数据存储与MyISAM不同,会在一个表空间中存储它的表和索引,表空间可以包含多个文件

MyISAM的数据文件

MyISAM在磁盘上会将数据存储为三个文件,第一个文件是表结构文件(frm文件),名字以表名开始,.frm文件存储表定义;第二个文件是数据文件,表数据(myd文件),myd含义是MYData;第三个文件是索引文件,表索引(myi文件),myi含义是MYIndex