精华内容
下载资源
问答
  • MySql常见数据库引擎特点

    千次阅读 2017-11-26 14:08:21
    其实,我们在日常使用的数据库中,最为常见数据库引擎大概四种,分别是MyISAM,InnoDB,MEMORY,以及MERGE,这四种数据库存储引擎有着各自的特点和区别,今天就和大家简单分享一下这四种存储殷勤的区别。...
    大家好,今天和大家分享一些关于MySQL数据库的一些知识,主要是一些关于数据库存储引擎上的区别。
    

    其实,我们在日常使用的数据库中,最为常见的数据库引擎大概有四种,分别是MyISAM,InnoDB,MEMORY,以及MERGE,这四种数据库存储引擎有着各自的特点和区别,今天就和大家简单分享一下这四种存储殷勤的区别。简要区别如下:
    MyISAM:
    有存储限制,表的定义语句,数据,索引分文件存储,分别为.frm文件,.MYD(MyDate),.MYI文件(MyIndex),存储方式分静态表(默认),动态表,压缩表。静态表中表字段定长,存储速度快,容易缓存,出现故障容易恢复,但是空间浪费严重。动态表中表字段不定长,空间浪费小,但是崩溃不易恢复,频繁的删除和更新会产生大量的碎片,可以使用OPTIMIZE TABLE命令定期清理碎片。同时MyISAM存储殷勤不支持外键,也不支持事务处理,但是其优势为访问速度快,在使用中中,如果对事务完整性没有要求,或者数据库操作主要以Select或者Insert为主的应用基本上可以使用这种存储引擎,而且MyISAM存储殷勤在也是5.5版本之前MySQL默认的存储引擎。
    InnoDB:
    提供回滚,提交,崩溃恢复的事务安全,唯一支持外键,表中的自动增长列必须是索引,如果是组合索引,必须是组合索引的第一列,并且自动增长列支持手动插入,但是如果插入值为空或者0,则实际值为增长后的值。创建外键时,要求父表必须有对应的索引,子表在创建外键的时候,也会自动创建对应的索引。如果某个表被其他表创建了外键参照,那么该表的对应索引或者主键禁止被删除。但是在创建索引时,可以指定在对父表进行删除或者更新时,子表所对应的操作,这些操作包括以下几种:
    RESTRICT,CASCADE,SET NULL,NO ACTION,其实RESTRICT和NO ACTION作用相同,是指在子表有关联记录的时候,父表不允许更新,CASCADE是指在父表执行更新或者删除操作时,更新或者删除子表对应的记录,SET NULL是指在父表执行删除或者更新操作时,子表相应字段设置为NULL。
    InnoDB在存储方式上,分为共享表空间和使用多表空间存储。
    MEMORY:
    数据存储在内存中,每一个MEMORY表对应一个磁盘文件,格式为.frm。由于数据存储在内存中,所以这种索引在数据存储和数据查询方面速度最快,但是服务器停止,数据丢失。并且在索引方面默认使用HASH索引,
    MERGE:
    多个MyISAM表的集合,实际没有建立新表,而是将MyISAM集合到一起。在磁盘上保存有两个文件,一个.frm文件存储表的定义语句,另外一个是.MRG文件,包含了组合表的信息,包括MERGE表由哪些表组成,插入新的数据时的依据。如果想MERGE表中插入数据,其中MERGE表所包含的MyISAM表中都会对该数据进行存储,但是向其中一个MyISAM表插入数据时,只有当前被插入数据的MyISAM表会有相应的数据,当然MERGE表中也会有,但是另外的MyISAM表不会存储该数据。简单而言MERGE表就是多个MyISAM表的并集。
    以下是摘自《深入浅出MySQL》一书中的各个存储引擎之间的特性:
    这里写图片描述
    好了,暂时就和大家简单分享这些知识,如有不当之处,还请大家多多指教。

    展开全文
  • Mysql四种常见数据库引擎

    千次阅读 2020-08-06 17:45:33
    数据库存储引擎数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的...

    四种mysql存储引擎

    前言

    数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎

    存储引擎查看

    MySQL给开发者提供了查询存储引擎的功能,我这里使用的是MySQL5.1,可以使用:

    SHOW ENGINES

    命令来查看MySQL使用的引擎,命令的输出为(我用的Navicat Premium):

    在这里插入图片描述

    看到MySQL给用户提供了这么多存储引擎,包括处理事务安全表的引擎和出来了非事物安全表的引擎。

    如果要想查看数据库默认使用哪个引擎,可以通过使用命令:

    SHOW VARIABLES LIKE 'storage_engine';

    来查看,查询结果为:

    在MySQL中,不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个表使用不同的存储引擎。Support列的值表示某种引擎是否能使用:YES表示可以使用、NO表示不能使用、DEFAULT表示该引擎为当前默认的存储引擎 。下面来看一下其中几种常用的引擎。

    InnoDB存储引擎

    InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,上图也看到了,InnoDB是默认的MySQL引擎。InnoDB主要特性有:

    1、InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句中提供一个类似Oracle的非锁定读。这些功能增加了多用户部署和性能。在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、数据仓储和其他应用环境下最常使用的存储引擎之一。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引擎创建数据库,将产生3个文件。文件的名字以表名字开始,扩展名之处文件类型: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)

    存储引擎的选择

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

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

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

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

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

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

    展开全文
  • MySQL数据库有多种存储引擎:比如:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE等等,最常见的也就是MyISAM和InnoDB了,下面主要讲解下MyISAM和InnoDB两种...
    MySQL数据库有多种存储引擎:比如:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE等等,最常见的也就是MyISAMInnoDB了,下面主要讲解下MyISAM和InnoDB两种mysql数据库存储引擎的区别。
      MyISAM引擎是一种非事务性的引擎,提供高速存储和检索,以及全文搜索能力,适合数据仓库等查询频繁的应用。MyISAM中,一个table实际保存为三个文件,.frm存储表定义,.MYD存储数据,.MYI存储索引。MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认使用另外一个引擎。
      MySQL服务器中的其他非事务性存储引擎(如MyISAM)遵从不同的数据完整性范例,称之为“原子操作”。按照事务术语,MyISAM表总能高效地工作在AUTOCOMMIT=1模式下。原子操作通常能提供可比较的完整性以及更好的性能。与经过优化调整的最快的事务性表相比,它的速度快3~5倍。由于MySQL服务器支持两种范例,因而你能决定是否利用原子操作的速度更好地服务于你的应用程序,或使用事务特性。该选择可按表进行。
      
      InnoDB则是一种支持事务的引擎。给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。所以的数据存储在一个或者多个数据文件中,支持类似于Oracle的锁机制。一般在OLTP应用中使用较广泛。如果没有指定InnoDB配置选项,MySQL将在MySQL数据目录下创建一个名为ibdata1的自动扩展数据文件,以及两个名为ib_logfile0和ib_logfile1的日志文件。
      InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读。这些特色增加了多用户部署和性能。没有在InnoDB中扩大锁定的需要,因为在InnoDB中行级锁定适合非常小的空间。InnoDB也支持FOREIGN KEY强制。在SQL查询中,你可以自由地将InnoDB类型的表与其它MySQL的表的类型混合起来,甚至在同一个查询中也可以混合。
      InnoDB是为处理巨大数据量时的最大性能设计。它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。InnoDB存储引擎被完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。
      InnoDB存储它的表&索引在一个表空间中,表空间可以包含数个文件。InnoDB表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上。InnoDB也默认被包括在所有MySQL 5.1二进制分发版里。
    展开全文
  • MySQL数据库引擎详解

    千次阅读 2018-06-15 10:00:43
    作为经常使用MySQL数据库的人,不得不对MySQL的数据库引擎有一定的了解,在之前我也是只会使用MySQL,但两次的面试中都被面试官问及项目用到的数据库引擎(血与泪),因此,必要写一篇文章,好好总结一下MySQL的...
  • 数据库引擎常见的面试题(面试总结)

    千次阅读 2019-08-30 11:53:42
    1. 什么是数据库引擎 数据库引擎:用于存储、处理、保护...2. 数据库引擎有几种 Innodb 、 MyISAM 、MEMORY 、MERGE 3.MyISAM和InnoDB的区别 InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事...
  • MySQL常用数据库引擎

    千次阅读 2019-05-24 18:02:49
    MySQL常用数据库引擎 查看MySQL数据库使用的引擎 SHOW ENGINES; 查看数据库默认使用哪个引擎 SHOW VARIABLES LIKE 'storage_engine'; MyISAM存储引擎 MyISAM基于ISAM存储引擎,并对其进行扩展。它是在...
  • 什么是数据库引擎

    千次阅读 2020-09-10 17:18:56
    数据库存储引擎:是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的...
  • 2.Mysql中常见的存储引擎有哪些? 3.MyISAM和innoDB的区别? 问题回答 1.Mysql中的数据用各种不同的技术储存在文件(或内存)中,这些技术中的每一个技术都使用不同的存储机制,索引技巧,锁定水平并且最终提供广泛的不同...
  • greenplum数据库引擎探究

    千次阅读 2010-10-22 17:24:00
    greenplum数据库引擎探究
  • MySQL - 常见的三种数据库存储引擎

    万次阅读 多人点赞 2018-01-15 16:55:29
    数据库存储引擎:是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的...
  • 常见的非关系型数据库有哪些

    千次阅读 2020-06-02 16:04:57
    Redis作为一个内存数据库,具有如下特点: 性能优秀, 数据在内存中, 读写速度非常快, 并支持10W QPS(每秒查询效率). 单进程单线程, 是线程安全的. 非阻塞I/O多路复用机制, 因为是但线程的,通过跟踪每个I/O流的状态,...
  • 数据库常见的安全问题有哪些

    千次阅读 2019-03-04 16:13:45
    数据库已经成为黑客的主要攻击目标,因为它们存储着大量价值和敏感的信息。 这些信息包括金融、知识产权以及企业数据等各方面的内容。网络罪犯开始从入侵在线业务服务器和破坏数据库中大量获利,因此,确保数据库...
  • mysql数据库引擎常用面试总结

    万次阅读 多人点赞 2017-07-27 10:55:50
    一次面试被问到了MySQL的相关问题,一个是对mysql了解多少,引擎什么,主要区别是什么?第二个被问的更多,给你一个百万级别的表怎么查询优化: 今天整理了一些资料回答第一个问题: ...MySQL数据库引擎详解
  • 数据库常见面试题(附答案)

    万次阅读 多人点赞 2019-03-13 00:54:20
    2.数据库隔离级别,每个级别会引发什么问题,mysql默认是哪个级别 脏读:事务B读取事务A还没有提交的数据 不可重复读:两次事务读的数据不一致 幻读:事务A修改了数据,事务B也修改了数据,这时在事务A看
  • TrivialDB-一个简单的数据库引擎 TrivialDB是一个简单的数据库管理系统,我们实现了大部分常见SQL语句和类型。同时支持多表连接,复杂表达式运算,多主键约束,外键约束,CHECK约束,UNIQUE和DEFAULT约束,聚集查询...
  • 常见数据库知识总结 + 30个数据库常见面试题讲解

    万次阅读 多人点赞 2018-10-24 21:55:36
    常见数据库知识总结 MYAQL:事务:事务是并发控制的基本单元,事务是一个操作序列,要么都执行,要么都不执行,他是一个不可分割的工作单位,事务是维护数据库一致性的单位。 四个ACID基本性质: 1.原子性:要么...
  • 介绍了Mysql数据库的增加和删除,同时详细介绍了存储引擎
  • MYSQL的四个数据引擎分别是: (1) ISAM:ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数。因此,ISAM执行读取操作的速度很快,而且不占用大量的...
  • 常见数据库场景分析

    千次阅读 2016-08-07 22:00:25
    常见数据库场景分析 2 一 关系型数据库 2 1.关系型数据简介 2 2.常用的概念 2 4.特点 3 5.常见关系型数据库 3 二 常见非关系型数据库(NoSQL)场景分析 3 1、NoSQL的特性 3 2、根据需求进行分类 4 2.1满足...
  • Mysql数据库引擎性能测试

    千次阅读 2013-12-26 19:30:12
    Mysql 数据库中,最常用的两种引擎是innordb和myisam。Innordb的功能要比myiasm强大很多,但是innordb的性能要比myisam差很多,如果你的网站只是做简单的查询,更新,删除,那么用myiasm是最好的选择。 所有的...
  • 在数据库实际操作过程中,我们很少涉及到数据库引擎对象的事情,一般情况在创建数据库的时候都使用默认的InnoDB数据库引擎,那么到底什么是数据库引擎什么样的数据库引擎,在实际使用的过程中都什么主意事项,...
  • 对于MYSQL常见数据库存储引擎做了介绍,DBD、HEAP、ISAM、MERGE、MyIAS、InnoDB以及Gemeni等
  • 简介:在MyBase中,PG引擎除了包含RDS所有的能力,还...1.GISGIS是一个地理信息系统,随着移动的终端还有带GPS传感器的普及,实际很多的业务里都经纬度的信息。以共享单车为例,车内装有GPS系统,方便用户查看自己
  • 《可伸缩服务架构:框架与中间件》
  • 1. 存储引擎 1.1 概念相关(理解) MySQL 数据库使用不同的机制存取表文件, 包括存储方式、索引技巧、锁定水平等不同的功能。...MySQL 支持的存储引擎常见三种:InnoDB、MyISAM、MEMORY。 特性对比 InnoDB
  • 常用数据库有哪些

    千次阅读 2019-09-20 09:09:28
    表 1 所示列出了每一类数据库的前 3~5 ...表 1 各类数据库排名 大类 类别 前3~5名 说明 SQL 关系数据库 Oracle、MySQL/MariaDB、SQL Server、PostgrcSQL、 DB2 遵循“表一记录”模型。按行存...
  • 引擎 MySQL常见的存储引擎主要三个分别是InnoDBMemory和MyISAM 2. InnoDB和MySIAM的区别 ?试官常常会问到如何选择MyISAM和Innodb这其实是?个早期DBA的问题但是现在在事实上早已经不存在这个问题了Innodb不断完善...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 153,710
精华内容 61,484
关键字:

常见的数据库引擎有哪些