存储引擎
1:概述
1:表处理器
MySQL提过了一个抽象层,允许不同的存储引擎使用相同的API对表进行访问,这一接口称之为表处理器,该接口通过handler的抽象类来实现,该处理器提供了一些课实现基本存储的方法,如打开关闭表,按照键进行检索,存储记录及删除记录,
2:存储引擎
1:最近引进存储引擎这一个术语,在现用术语中,存储引擎指的是实际存储和检索数据的代码,而表处理器指的是存储引擎和MySQL优化器之间的接口
2:简而言之,存储引擎就是指表的类型,存储引擎决定了表在计算机中的存储方式
2:MySQL支持的存储引擎
使用命令查询: show engines\G;
从查询的结果中可以看出,MySQL支持的存储引擎包括MyISAM,MEMORY,InnoDB,ARCHIVE和MRG_MYISAM
1:InnoDb存储引擎(默认,修改,优缺点)
1:默认存储引擎
在创建表时,若没有指定存储引擎,表的存储引擎将为默认的存储引擎
2:查看默认存储引擎
SHOW VARIABLES LIKE 'storage_engine';
3:修改默认的存储引擎
在MySQL的安装文件找到my.ini文件(该配置文件中有端口号,编码集),进行修改
default-storage-engine=INNODB更改为default-storage-engine=MyISAM
4:InnoDB存储引擎的优势
1:InnoDB给MySQL的表提供了事务(其它引擎无法比拟),回滚,崩溃修复能力和多版本并发控制的事务安全,
2:并且还是唯一的支持外键约束的表引擎;
3:InnoDB存储引擎支持自动增长列AUTO_INCREMENT.自动增长的列不能为空,MySQL中规定自增列必须为主键,
5:InnoDB存储引擎的缺点
1:批量插入数据速度慢,读写效率偏低
2:占用数据空间相对比较大
2:MyISAM存储引擎
1:概述
1:MyISAM存储引擎是MySQL中常见的存储引擎,是基于ISAM存储引擎发展起来的
2:MyISAM存储引擎的表存储成三个文件,文件的名字与表相同,扩展名包括:frm,MYD,MYI
2:演示
create table my_myisam(id int) charset utf8 engine=myisam;
3:优缺点
3:MyISAM占用空间小,处理速度快,缺点是不支持事务的完整性和并发性
3:MEMORY存储引擎
1:概述
1:MYMORY存储去其使用存储在内存中的内容来创建表,而且所有的数据也存放在内存中,这些特性与其他引擎不同
2:每个基于MEMORY存储引擎的表实际对应一个磁盘文件,该文件的文件名与表名相同,类型是frm类型,该文件中只存储表的结构,而其数据文件都是存储在内存中
2:优势
1:存储在内存中的数据,其数据的处理效率将大幅提过(避免了io读写),提高了整个表的处理效率
2:MYMORY存储引擎默认使用的哈希HASH索引,其速度要比使用B型树(BTREE)索引快
3:缺点
1:因为MEMORY表的所有数据都是存储在内存上的,如果内存出现异常将会影响到数据的完整性,再者,如果重启服务器或者关机,表中的所有数据将消失
2:MEMORY表的大小是受到限制的max_rows可以在创建表时指定;max_heap_table_size的大小默认是16MB,可以进行扩大.