MySQL的存储引擎

MySQL的存储引擎---------------InnoDB存储引擎和MyISAM存储引擎

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

1.查看存储引擎

SHOW ENGINERS

2.InnoDB存储引擎

InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁和外键。MySQL 5.5.5 之后,InnoDB作为默认存储引擎,InnoDB主要的特性:

  • InnoDB 给MySQL提供了具有提交、回滚、崩溃护肤能力的事务安全(ACID兼容)存储引擎。

    InnoDB 锁定在行级并且也在select语句中提供了一个类似Oracle 的非锁定读。这些功能增加了

    多用户部署和性能。在SQL查询中,可以自由的将InnoDB类型的表与其他MySQL的表的类型混合起来,甚至在同一个查询中也可以混合。

  • InnoDB是为了处理巨大数据量的最大性能设计。它的CPU的小鲁班可能是任何其他基于磁盘的关系数据库引擎所不能匹敌的

  • InnoDB存储引擎完全与MySQL服务器整合,InnoDB 存储引擎在主内存中缓存数据和索引维持它自己的缓冲池。InnoDB将的表和索引存在一个逻辑表空间中,表空间可以包含数个文件(或原始磁盘分区)。这与MyISAM表不同,比如在MyISAM表中每个表被存在分离的文件中。InnoDB表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上。

  • InnoDB支持外键完整性约束(FOREIGN KEY)。存储表中的数据是,每张表的存储都按主键顺序存放,如果没有显示在表定义是指定主键,InnoDB会被每一行生成一个6B的ROWID,并以此作为主键

  • InnoDB 被用在众多需要高性能的大型数据库站点上。 InnoDB 不创建目录,使用 InnoDB 时,MySQL 将在 MYSQL 数据目录下创建一个名为 ibdata1 的 10MB 大小的自动扩展数据文件,以及两个名为ib_logfile() 和 ib_logfile1 的 5MB 大小的日志文件。

  1. MyISAM存储引擎

    MyISAM 基于 ISAM 的存储引擎,并对其进行扩展。它是在 Web、数据存储和其他应用环境下最常用的存储引擎之一。MyISAM 拥有较高的插入、查询速度,但不支持事务。在 MySQL5.5.5 之前的版本中,MyISAM 是默认存储引擎。MyISAM 主要特性有:

  • MEMORY 表的每个表可以多达 32 个索引,每个索引 16 列,以及 500B 的最大键长度
  • MEMORY 存储引擎引擎执行 HASH 和 BTREE 索引。
  • 可以在一个 MEMORY 表中有非唯一键
  • MEMORY 不支持 BLOB 或 TEXT 列。
  • MEMORY 表使用一个固定的记录长度格式。
  • MEMORY 支持 AUTO_INCREMENT 列和对包含 NULL 值的列索引。
  • MEMORY 表内容被存在内存中,内存是 MEMORY 表和服务器在查询处理时的空闲中创建的内部表共享。
  • MEMORY 表在所有客户端之间共享(就像其他任何非 TEMPORARY 表)。
  • 当不再需要 MEMORY 表的内容时,要释放被 MEMORY 表使用的内存,应该执行 DELETE FROM 或 TRUNCATE TABLE,或者删除整个表(使用 DROP TABLE)。
  1. 存储引擎的选择

    功能MyISAMMemoryInnoDBArchive
    存储限制265TBRAM65TBNode
    支持事务NoNoYesNo
    支持全文索引YesNoNoNo
    支持数索引YesYesYesNo
    支持哈希索引NoYesNoNo
    支持数据缓存NoN/AYesNo
    支持外键NoNoYesNo

InnoDB: 支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。

MyISAM: 插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比 较低,也可以使用。

MEMORY: 所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。

**注意:**同一个数据库也可以使用多种存储引擎的表。如果一个表要求比较高的事务处理,可以选择InnoDB。这个数据库中可以将查询要求比较高的表选择MyISAM存储。如果该数据库需要一个用于查询的临时表,可以选择MEMORY存储引擎。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值