数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySql的核心就是存储引擎。
在安装mysql,后我们一般默认使用的innoDB,当然我们也可以通过命令来查看我们使用的的引擎
show variables like 'storage_engine';
结果如下
存储引擎的介绍 关系型数据库表是用来存储和组织信息的数据结构,可以将表理解为由行和列组成的表格。
由于表的类型不同,我们在实际开发过程中,就有可能需要各种各样的表,不同的表就意味着存储不同类型的数据,数据的处理上也会存在差异 对于Mysql来说,它提供了很多种类型的存储引擎 存储引擎说白了就是如何存储数据,如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
因为数据表中的每一条记录所占用的空间都是一样的,所以这种表存取和更新的效率非常高。
而一般情况下以下三种足够
1.InnoDB存储引擎,
2.MyISAM存储引擎
3.MEMORY存储引擎
对于第三种由于没有过多接触便不做平论
1.InnoDB存储引擎,
InnoDB是事务性型数据库的首选引擎,支持事物安全表(ACID),支持行锁定和外键,在mysql中默认使用的引擎
1、InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句中提供一个类似Oracle的非锁定读。这些功能增加了多用户部署和性能。在SQL查询中,可以自由地将InnoDB类型的表和其他MySQL的表类型混合起来,甚至在同一个查询中也可以混合
2.InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB将它的表和索引在一个逻辑表空间中,表空间可以包含数个文件(或原始磁盘文件)。这与MyISAM表不同,比如在MyISAM表中每个表被存放在分离的文件中。InnoDB表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上
3.、InnoDB支持外键完整性约束,存储表中的数据时,每张表的存储都按主键顺序存放,如果没有显示在表定义时指定主键,InnoDB会为每一行生成一个6字节的RowId,并以此作为主键
4.InnoDB常常被用在需要高性能的大型数据库
2.MyISAM存储引擎
MyISAM的表存储成3个文件。文件的名字与表名相同。拓展名为FRM、MYD、MYI。其实,FRM
文件存储表的结构;MYD文件存储数据,是MYData的缩写;MYI文件存储索引,是MYIndex的缩写。
MyISAM与InnoDB相比的优势在于占用空间小,处理速度快。缺点是不支持事务的完整性和并发性。
支持3种不同的存储格式,分别是:静态表;动态表;压缩表
静态表:表中的字段都是非变长字段,这样每个记录都是固定长度的,优点存储非常迅速,容易缓存,出现故障容易恢复;缺点是占用的空间通常比动态表多,特别注意,因为存储时会按照列的宽度定义补足空格,在取数据的时候,默认会把字段后面的空格去掉,如果不注意会把数据本身带的空格也会忽略。
动态表:记录不是固定长度的,这样存储的优点是占用的空间相对较少;缺点:频繁的更新、删除数据容易产生碎片,需要定期执行OPTIMIZE TABLE或者myisamchk-r命令来改善性能
压缩表:因为每个记录是被单独压缩的,所以只有非常小的访问开支
如何确认你所使用的表的引擎
进入表所在的数据库,user+库名;
show create table +表名;
得到结果ENGINE =InnoDB(引擎等于innoDB)