1.1  存储引擎的使用

  • 数据库中的各表均被(在创建表时)指定的存储引擎来处理。
  • 服务器可用的引擎依赖于以下因素:
    • MySQL的版本
    • 服务器在开发时如何被配置
    • 启动选项
  • 为了解当前服务器中有哪些存储引擎可用,可使用SHOW ENGINES语句:

mysql> SHOW ENGINES\G

  • 在创建表时,可使用ENGINE选项为CREATE TABLE语句显式指定存储引擎。

CREATE TABLE t (i INT) ENGINE = MyISAM;

  • 如果在创建表时没有显式指定存储引擎,则该表使用当前默认的存储引擎
  • 默认的存储引擎可在my.ini配置文件中使用default-storage-engine选项指定。
  • 现有表的存储引擎可使用ALTER TABLE语句来改变:

  ALTER TABLE t ENGINE = INNODB;

  • 为确定某表所使用的存储引擎,可以使用SHOW CREATE TABLE或SHOW TABLE STATUS语句:

  mysql> SHOW CREATE TABLE emp\G

  mysql> SHOW TABLE STATUS LIKE 'emp' \G

1.2 常用的存储引擎

1.2.1  MyISAM存储引擎

  • MyISAM存储引擎是MySQL最常用的引擎。
  • 它管理的表具有以下特征:

  –         使用三个文件表示每个表:

  • 格式文件 — 存储表结构的定义(mytable.frm)
  • 数据文件 — 存储表行的内容(mytable.MYD)
  • 索引文件 — 存储表上索引(mytable.MYI)

  –       灵活的AUTO_INCREMENT字段处理

  –    可被转换为压缩、只读表来节省空间

1.2.2 InnoDB存储引擎

  • InnoDB存储引擎是MySQL的缺省引擎。
  • 它管理的表具有下列主要特征:

  –        每个InnoDB表在数据库目录中以.frm格式文件表示

  –        InnoDB表空间被用于存储表的内容

  –        提供一组用来记录事务性活动的日志文件

  –        用COMMIT(提交)、SAVEPOINT及ROLLBACK(回滚)支持事务处理

  –        提供全ACID兼容

  –        在MySQL服务器崩溃后提供自动恢复

  –        多版本(MVCC)和行级锁定

  –        支持外键及引用的完整性,包括级联删除和更新

1.2.3 MEMORY存储引擎

  • 使用MEMORY存储引擎的表,其数据存储在内存中,且行的长度固定,这两个特点使得MEMORY存储引擎非常快。
  • MEMORY存储引擎管理的表具有下列特征:

  –        在数据库目录内,每个表均以.frm格式的文件表示。

  –        表数据及索引被存储在内存中。

  –        表级锁机制。

  –        不能包含TEXT或BLOB字段。

  • MEMORY存储引擎以前被称为HEAP引擎。
  • 当创建表时,应根据表的应用场景选择适合的存储引擎。
  • MyISAM表最适合于大量的数据读而少量数据更新的混合操作。

1.3 选择合适的存储引擎

MyISAM表的另一种适用情形是使用压缩的只读表。

  • 如果查询中包含较多的数据更新操作,应使用InnoDB。其行级锁机制和多版本的支持为数据读取和更新的混合操作提供了良好的并发机制。
  • 可使用MEMORY存储引擎来存储非永久需要的数据,或者是能够从基于磁盘的表中重新生成的数据。

mysql 存储引擎介绍1的更多相关文章

  1. 数据库 --> MySQL存储引擎介绍

    MySQL存储引擎介绍 MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然 ...

  2. {MySQL存储引擎介绍}一 存储引擎解释 二 MySQL存储引擎分类 三 不同存储引擎的使用

    MySQL存储引擎介绍 MySQL之存储引擎 本节目录 一 存储引擎解释 二 MySQL存储引擎分类 三 不同存储引擎的使用 一 存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是 ...

  3. MYSQL存储引擎介绍--应用场景

    MySQL存储引擎通常有哪3种?各自分别有什么特点?应用场景是哪些? MySQL5.5以后默认使用InnoDB存储引擎,其中InnoDB和BDB提供事务安全表,其它存储引擎都是非事务安全表.若要修改默 ...

  4. mysql 存储引擎介绍

    一  存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是所有的关系型数据库都有存储引擎这个概念,后面我们还会说,但是现在要确定这一点. 在讲清楚什么是存储引擎之前,我们先来个比喻, ...

  5. MySql存储引擎介绍

    MySQL5.5以后默认使用InnoDB存储引擎,其中InnoDB和BDB提供事务安全表,其它存储引擎都是非事务安全表.若要修改默认引擎,可以修改配置文件中的default-storage-engin ...

  6. mysql 存储引擎介绍2

    了解MYSQL的都知道,在MYSQL中建立任何一张数据表,在其数据目录对应的数据库目录下都有对应表的.frm文件,.frm文件是用来保存每个数据表的元数据(meta)信息,包括表结构的定义等,.frm ...

  7. mysql存储引擎介绍,索引

    区别: MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等 ...

  8. mysql存储引擎、事务

    MySQL存储引擎介绍 文件系统 操作系统组织和存取数据的一种机制. 文件系统是一种软件. 文件系统类型 ext2  ext3  ext4  xfs 数据 不管使用什么文件系统,数据内容不会变化 不同 ...

  9. SQL学习笔记三(补充-1)之MySQL存储引擎

    阅读目录 一 什么是存储引擎 二 mysql支持的存储引擎 三 使用存储引擎 一 什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的 ...

随机推荐

  1. 微信小程序--ajax服务器交互及页面渲染

    网上找的帖子大多是直接在onload中请求数据.而我想实现的是点击按钮,然后请求服务器,接着返回数据,前端页面渲染.所以搞了挺久的,在此记录一下. 请求是按照微信官方给出的,wx.request 在这 ...

  2. asp.net MVC  Ajax.BeginForm 异步上传图片的问题

    当debug到这里,你们就发现不管是 Request.Files["Upload"]亦或 Request.Files[0] 都不会取到文件流. 这就是我要说的,当使用Ajax.Be ...

  3. Java基础---集合

    第一讲    集合框架 先看下面的图: 这就是集合框架的构成.由于数据结构的不同,有不同的集合,也叫容器.下面是集合类的简单介绍. 一.为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所 ...

  4. 使用jmeter进行批量数据创建

    背景: 测试环境需要创建大量的测试数据,进行功能和性能的测试 测试数据创建接口是HTTP请求方式 测试数据要求不同类型的数据,要有字段进行关联,且单据的编号在DB中唯一不可重复,此外测试数据的时间类参 ...

  5. [2017-08-16]ABP系列——QuickStartB:正确理解Abp解决方案的代码组织方式、分层和命名空间

    本系列目录:Abp介绍和经验分享-目录 介绍ABP的文章,大多会提到ABP框架吸收了很多最佳实践,比如: 1.N层 (复用一下上篇的图) 展现层(Personball.Demo.Web):asp.ne ...

  6. CSS照片墙

    <!doctype html><html><head><meta charset="utf-8"><title>CSS照 ...

  7. 带你走进SAP项目实施过程——立项(1)

    到底谁会首先有上ERP的想法,可能是企业老板,也可能是总经理级别等高管.但不管是谁,在确定之前,按道理企业风控部.总经办或者信息部等相关部门都需要对ERP项目做立项申请.毕竟ERP项目涉及企业方方面面 ...

  8. [C]字符串排序之-冒泡法

    在oj刷题,遇见一题字符串排序题. 脑海里瞬间闪过数组排序. 思路有了,打开题解看看别人的思路,发现好多人的排序方法显得比较臃肿,可能也是我的水平不够,欣赏不来吧. 不过用冒泡法排序的时候一定要记得字 ...

  9. 201521123082《Java程序设计》第4周学习总结

    201521123082<Java程序设计>第4周总结 标签(空格分隔): java 1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内 ...

  10. Java学习9——面向对象

    (重点:内存分析) 类的定义 //用class关键字定义一个类 class Person { //成员变量定义 private int id; private int age = 20; //方法定义 ...