前言
上一章我们只是过一下,如果你拿到一个mysql源码如何去编译。你会问题,学会这个有什么用呀?当然有用啦,万一那天让你去改mysql源码呢!_
本章开始,我们就需要根据我日常使用的一些流程,来慢慢的去了解mysql的源码。本章去看看mysql是怎么存储的。
存储引擎
存储引擎是MySQL最核心的模块,并且非常复杂,希望能够通过自己一些有限的支持,能够给大家讲出去。
存储引擎解决什么问题
存储引擎将数据存储到文件或者内存中,不同的存储引擎数据的存储机制、索引技术、锁的能力都是有差别的。存储类型是在定义表结构的时候就已经确定的,因此也叫做表类型。
查看存储引擎
首先看看,MySQL都支持哪些存储引擎
mysql>show engines;
Engine | Support | Comment | Transactions | XA | Savepoints |
---|---|---|---|---|---|
ARCHIVE | YES | Archive storage engine | NO | NO | NO |
BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
MyISAM | YES | MyISAM storage engine | NO | NO | NO |
PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
CSV | YES | CSV storage engine | NO | NO | NO |
从上面的信息看,InnoDB做为mysql的默认存储引擎,并且支持事务、XA事务以及部分事务。因此,也是现在最广泛的使用的存储类型。在某度上面简单介绍了下整体的存储引擎,可以让我们在做类型选择的时候快速的做一个大致的选择。
总结
本章大致了解了下,MySQL的存储类型。可以思考下,我们日常开发中,在定义表类型的时候,现在回想下,有没有根据不同的业务去定义不同的表类型。如果我们使用了各种各样的表类型,这个数据库管理的复杂度会增加,这块需要怎么去处理。
都说了是源码分析,可是到现在都没有出现一行源码。下一章肯定有_
网友评论