MySQL数据库的存储引擎:MySQl5.5之后使用的默认存储引擎是InnoDB,5.5之前默认使用的MyIsAm。
MySQL的体系架构图。
DBA。
MySQL是由SQL接口、解析权,优化器,缓存和存储引擎来组成。
1.connectors指的是不同语言中和数据库SQL进行交互的API接口
2.Management Services &unilites:系统管理和工具
3.Connection Pool(连接池):管理用户连接、线程处理。
4.SQL interface:接受用户的SQL指令,并且返回需要查询的结果。
5.Parser(解析器):先验证是否正确,再按照块进行解析。
6.Optimizer(查询优化器):选取-投影-联接。(结果集)
7.Caches&Buffers(查询缓存):
8.Engine(存储引擎):特点和适应场景。
9.FileSystem(文件系统):
engine:存储引擎名称
support:是否支持此存储引擎
comment:存储引擎的注释
transactions:是否支持事务
XA:是否支持分布式交易处理的XA规范
save points:是否支持保存点,以便事务回滚到保存点。
查看默认的存储引擎:show variables likes 'storage_engine';
存储引擎的特点和适用场景
memory存储引擎
内存表。
#测试memory存储引擎(内存表)
CREATE TABLE m1(
a VARCHAR(100)
)ENGINE=MEMORY;
此时它会在磁盘中独立的创建一个以表名为文件名的文件。
frm只保存结构定义,不保存数据文件。数据保存在内存中,读写效率高,磁盘中只产生一个以表明为.frm的文件,只保存表结构。
如果关闭MySQL服务,此时数据会丢失。
使用的默认最大内存空间是16M
查看当前表结构的状态:
不同存储引擎产生的文件不同。
内存表的使用场景,是即使发生丢失,也不会影响业务的情况下。
CSV存储引擎:基于csv格式存储数据的方式。
#测试CSV存储引擎
CREATE TABLE c1(
a VARCHAR(20)NOT NULL,
b VARCHAR(20)NOT NULL
)ENGINE=csv;
CSV所有的列不支持空值,所有的字段都必须设置为NOT NULL
INSERT c1(a,b)VALUES('AAA','BBB');
INSERT c1(a,b)VALUES('CCC','DDD');
csv:保存数据
csm:保存状态
直接在excell中修改表内容。会损坏数据库。
check table table_name;检查表结构是否损坏
repair table table_name;修复表结构
archive存储引擎:做归档用,适合归档,会对数据进行一个压缩,压缩算法是一个无损压缩。
查看表状态:
#测试archive存储引擎
CREATE TABLE a2 ENGINE=ARCHIVE AS SELECT *FROM a1;
会产生两个文件,一个是对文件的打包,另一个是对文件状态的记录。
适用场景:对不常使用又不能删除的文件进行存储时就可以使用archive存储引擎来做一个归档了。
这个存储引擎的压缩算法可以把数据压缩的很小。
frm都是结构文件。.arz是数据文件。
插入效率很高(做了优化),占用空间很小。
缺陷:不支持修改(update)、删除(delect)、替换(replace),只支持select和insert。
39