数据库我爱编程

关于mysql

2018-03-26  本文已影响30人  嶝a

数据库存储引擎是数据库底层软件组织,数据库管理系统(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个文件。文件的名字与表名相同。拓展名为FRMMYDMYI。其实,FRM

文件存储表的结构;MYD文件存储数据,是MYData的缩写;MYI文件存储索引,是MYIndex的缩写。

MyISAM与InnoDB相比的优势在于占用空间小,处理速度快。缺点是不支持事务的完整性和并发性。

支持3种不同的存储格式,分别是:静态表;动态表;压缩表

静态表:表中的字段都是非变长字段,这样每个记录都是固定长度的,优点存储非常迅速,容易缓存,出现故障容易恢复;缺点是占用的空间通常比动态表多,特别注意,因为存储时会按照列的宽度定义补足空格,在取数据的时候,默认会把字段后面的空格去掉,如果不注意会把数据本身带的空格也会忽略。

动态表:记录不是固定长度的,这样存储的优点是占用的空间相对较少;缺点:频繁的更新、删除数据容易产生碎片,需要定期执行OPTIMIZE TABLE或者myisamchk-r命令来改善性能

压缩表:因为每个记录是被单独压缩的,所以只有非常小的访问开支

如何确认你所使用的表的引擎

进入表所在的数据库,user+库名;

show create table +表名;

得到结果ENGINE =InnoDB(引擎等于innoDB)

上一篇下一篇

猜你喜欢

热点阅读