首页 > 编程知识 正文

oracle数据库引擎,mysql存储引擎有哪些

时间:2023-05-04 02:54:06 阅读:32283 作者:4216

前言

数据库存储引擎是数据库的基础软件组织,数据库管理系统(DBMS )使用它来创建、查询、更新和删除数据。 不同的存储引擎提供不同的存储机制、索引技术、锁定级别等功能,通过使用不同的存储引擎可以获得特定的功能。 目前,许多不同的数据库管理系统支持多个不同的数据引擎。MySql的核心就是存储引擎

存储引擎查看

MySQL提供了向开发人员查询存储引擎的功能。 这里使用的是MySQL5.1。 可以使用以下功能:

检查MySQL在SHOW ENGINES命令中使用的引擎。 命令的输出如下所示。 正在使用Navicat Premium。

我们看到MySQL为用户提供了许多存储引擎,包括处理事务安全表的引擎和输出非事务安全表的引擎。

要确定数据库默认使用的引擎,请使用命令。

showvariableslike ' storage _ engine '; 请参阅。 查询结果如下:

MySQL不要求整个服务器使用相同的存储引擎,而是可以根据特定要求对每个表使用不同的存储引擎。 Support列中的值指示引擎是否可用。 YES表示可用,NO表示不可用,DEFAULT表示当前默认存储引擎。 看看这些常见的发动机。

InnoDB存储引擎

InnoDB是基于事务的数据库的首选引擎,支持事务安全表(ACID ),并支持行锁和外键。 如上图所示,InnoDB是默认的MySQL引擎。 InnoDB的主要特性如下:

1、InnoDB为MySQL提供具有提交、回滚、崩溃恢复能力的事物安全(ACID兼容)存储引擎。 InnoDB在行级锁定,未锁定的读取(如Oracle )也在SELECT语句中提供。 这些功能可以提高多用户部署和性能。 在SQL查询中,可以自由混合使用InnoDB类型的表和其他MySQL的表类型,也可以混合使用同一查询

2、InnoDB是处理巨大数据量的最大性能设计。 CPU效率可能无法与其他基于磁盘的关系数据库引擎锁相媲美

3、InnoDB存储引擎与MySQL服务器完全集成,InnoDB存储引擎维护自己的缓冲池以在主内存中缓存数据和索引。 InnoDB将表和索引存储在逻辑表空间中,表空间可以包含多个文件(或原始磁盘文件)。 这与MyISAM表不同,例如在MyISAM表中,每个表都存储在单独的文件中。 InnoDB表可以是文件大小限制为2GB的操作系统,也可以是任何大小

4、InnoDB支持外键完整性约束。 存储表中的数据时,各表的存储按主键顺序存储。 如果在定义表时未指定主键,InnoDB将为每行生成6字节的ROWID,并将其作为主键

5、InnoDB被很多需要高性能的大型数据库网站使用

InnoDB不创建目录。 使用InnoDB时,MySQL会在MySQL数据目录下创建一个名为ibdata1的10MB大小的自动扩展数据文件以及一个名为ib_logfile0和ib_logfile1的5MB大小的日志文件

MyISAM存储引擎

MyISAM基于ISAM存储引擎并得到扩展。 它是Web、数据仓库和其他APP应用程序环境中最常用的存储引擎之一。 虽然MyISAM具有较高的插入、查询速度,但不支持事物MyISAM的主要特性如下:

1、支持大文件的文件系统和操作系统支持大文件(63位文件长度)

2 .将删除、更新和插入操作混合使用可减少动态大小的行碎片。 这可以通过合并相邻已删除的块,并在删除下一个块后将其扩展到下一个块来自动完成

3、每个MyISAM表的最大索引数为64,这可以通过重新编译进行更改。 每个索引的最大列数为16

4、最大密钥长度为1000字节。 这个也可以用编译来改变。 如果密钥长度超过250字节,则使用超过1024字节的密钥

5、BLOB列和TEXT列可以索引

6、NULL被允许用于索引中的列,该值占每个键的0到1个字节

7 .所有数值键值都以高字节优先存储,并允许更高的索引压缩

8、每种MyISAM类型的表都有AUTO_INCREMENT的内部列,在INSERT和UPDATE操作时更新,AUTO_INCREMENT列更新。 因此,更新MyISAM类型表中的AUTO_INCREMENT列比更新InnoDB类型的AUTO_INCREMENT快

9、数据文件和索引文件可以放置在不同的目录中

10、每个字符串可以有不同的字符集

11、有VARCHAR的表可以固定或动态记录长度

12、VARCHAR列和CHAR列最多可达64KB

使用MyISAM引擎创建数据库时,将生成三个文件。 文件的名称以表名开始,扩展名为的文件类型: frm文件包含表定义、数据文件的

扩展名为.MYD(MYData)、索引文件的扩展名时.MYI(MYIndex)

MEMORY存储引擎

MEMORY存储引擎将表中的数据存储到内存中,未查询和引用其他表数据提供快速访问。MEMORY主要特性有:

1、MEMORY表的每个表可以有多达32个索引,每个索引16列,以及500字节的最大键长度

2、MEMORY存储引擎执行HASH和BTREE缩影

3、可以在一个MEMORY表中有非唯一键值

4、MEMORY表使用一个固定的记录长度格式

5、MEMORY不支持BLOB或TEXT列

6、MEMORY支持AUTO_INCREMENT列和对可包含NULL值的列的索引

7、MEMORY表在所由客户端之间共享(就像其他任何非TEMPORARY表)

8、MEMORY表内存被存储在内存中,内存是MEMORY表和服务器在查询处理时的空闲中,创建的内部表共享

9、当不再需要MEMORY表的内容时,要释放被MEMORY表使用的内存,应该执行DELETE FROM或TRUNCATE TABLE,或者删除整个表(使用DROP TABLE)

存储引擎的选择

不同的存储引擎都有各自的特点,以适应不同的需求,如下表所示:

功  能MYISAMMemoryInnoDBArchive存储限制256TBRAM64TBNone支持事物NoNoYesNo支持全文索引YesNoNoNo支持数索引YesYesYesNo支持哈希索引NoYesNoNo支持数据缓存NoN/AYesNo支持外键NoNoYesNo

如果要提供提交、回滚、崩溃恢复能力的事物安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择

如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率

如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果

如果只有INSERT和SELECT操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的。Archive非常适合存储归档数据,如记录日志信息可以使用Archive

使用哪一种引擎需要灵活选择,一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求,使用合适的存储引擎,将会提高整个数据库的性能

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。