MySQL体系结构
MySQL采用的是客户/服务器体系结构,实际是有两个程序,一个是MySQL服务器程序,指的是mysqld程序,运行在存放数据库的机器上,负责在网络上监听并处理来自客户的服务请求,根据这些请求去访问数据库的内容,再把信息回传给客户;另一个程序时MySQL客户程序,负责连接到数据库服务器,并通过向服务器发出查询命令来告知服务器需要哪些信息
MySQL总体结构分为四层
MySQL有很多的存储引擎,每个存储引擎都有自己的特点,且存储引擎是基于表的,所以可以根据不同的应用来建立不同存储引擎表,虽然有很多存储引擎,但是使用最多的还是Innodb、MyISAM和Memory这三种存储引擎
在mysql的my.cnf文件中使用
default-storage-engine=INNODB
来指定默认存储引擎
所以先看一下这三种搜索引擎的区别
对比 | MyISAM | Innodb | Memory |
---|---|---|---|
外键 | 不支持 | 支持 | 不支持 |
事务 | 不支持 | 支持 | 不支持 |
行表锁 | 表锁,不适合高并发 | 表锁、行锁,适合高并发 | 表锁 |
缓存 | 只缓存索引,不缓存数据 | 既缓存索引,又缓存数据,对内存要求较高 | |
表空间 | 小 | 大 | 小 |
关注点 | 性能 | 事务 | |
内存使用 | 低 | 高 | 高 |
插入速度 | 慢 | 快 | 快 |
存储文件 | .frm表定义文件 .myd数据文件 .myi索引文件 |
.frm表定义文件 .ibd数据文件 |
|
count | 有专门存储表count的地方 | 扫表 |