存储引擎

1.基本介绍

  • 基本介绍
  1. MySQL的表类型由存储引擎(Storage Engines)决定,主要包括MyISAM、innoDB、Memory等

  2. MySQL数据表主要支持六种类型,分别是:CSV,Memory,ARCHIVE,MRG_MYISAM,MYISAM,InnoBDB。

  3. 这六种又分为两类,一类是”事务安全型“(transaction-safe),例如:InnoDB。

    剩下的五种都是第二类,称为“非事务安全型”(non-transaction-safe)

数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎。

  • 主要的存储引擎(表类型)特点
特点 Myisam Memory InnoDB Archive
存储限制 没有 64TB 没有
事务安全 支持
锁机制 表锁 表锁 行锁 行锁
B树索引 支持 支持 支持
哈希索引 支持 支持
全文索引 支持
集群索引 支持
数据缓存 支持 支持
索引缓存 支持 支持 支持
数据可压缩 支持 支持
空间使用 N/A 非常低
内存使用 中等
批量插入的速度 非常高
支持外键 支持
  • 细节说明
  1. MyISAM不支持事务,也不支持外键,但是其访问速度快,对事务完整性没有要求
  2. InnoDB存储引擎提供了具有提交、回滚和崩溃能力的事务安全。但是比起MyISAM存储引擎,InnoDB写得处理效率差一些,并且会占用更多的磁盘空间以保留数据和索引
  3. MEMORY存储引擎使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件。MEMORY类型的表访问非常地快,因为它的数据是存放在内存中的,并且默认使用HASH索引。但是一旦MySQL服务关闭,表中的数据就会丢失,表的结构还在。

2.使用

  • 三种存储引擎表使用案例

    对于前面我们提到的三种存储引擎,我们举例说明

-- 表类型和存储引擎

-- 查看所有的存储引擎
SHOW ENGINES -- InnoDB存储引擎是前面使用过的
-- 1.支持事务 2.支持外键 3.支持行级锁 -- myisam存储引擎
CREATE TABLE t28(
id INT,
`name` VARCHAR(32)) ENGINE MYISAM
-- 1.添加速度快 2.不支持外键和事务 3.支持表级锁
START TRANSACTION;
SAVEPOINT a;
INSERT INTO t28 VALUES(1,'jack');
SELECT * FROM t28;
ROLLBACK TO a; -- 失败,myisam不支持事务 -- memory存储引擎
-- 1.数据存储在内存中[关闭了mysql服务表数据就会丢失,但是表结构还在]
-- 2.执行速度佷快(没有IO读写) 3.默认支持索引(hash表)
CREATE TABLE t29(
id INT,
`name` VARCHAR(32)) ENGINE MEMORY INSERT INTO t29 VALUES(1,'tom'),(2,'jack'),(3,'hsp');
SELECT * FROM t29; -- 重启mysql服务之后
DESC t29; -- 表结构还在 SELECT * FROM t29;-- 表数据丢失了
  • 如何选择表的存储引擎
  1. 如果你的应用不需要事务,处理的只是基本的CRUD操作,那么MyISAM是不二选择,速度快

  2. 如果需要支持事务,选择InnoDB

  3. Memory存储引擎就是将数据存储在内存中,由于没有磁盘IO的等待,速度极快。但由于是内存存储引擎,所做的任何修改在服务器重启后都将消失。(经典用法:用户的在线状态)

  • 指令修改存储引擎
alter table table_name engine = 存储引擎名;

例子

-- 表类型和存储引擎

-- 查看所有的存储引擎
SHOW ENGINES -- InnoDB存储引擎是前面使用过的
-- 1.支持事务 2.支持外键 3.支持行级锁 -- myisam存储引擎
CREATE TABLE t28(
id INT,
`name` VARCHAR(32)) ENGINE MYISAM
-- 1.添加速度快 2.不支持外键和事务 3.支持表级锁
START TRANSACTION;
SAVEPOINT a;
INSERT INTO t28 VALUES(1,'jack');
SELECT * FROM t28;
ROLLBACK TO a; -- 失败,myisam不支持事务 -- memory存储引擎
-- 1.数据存储在内存中[关闭了mysql服务表数据就会丢失,但是表结构还在]
-- 2.执行速度佷快(没有IO读写) 3.默认支持索引(hash表)
CREATE TABLE t29(
id INT,
`name` VARCHAR(32)) ENGINE MEMORY INSERT INTO t29 VALUES(1,'tom'),(2,'jack'),(3,'hsp');
SELECT * FROM t29; -- 重启mysql服务之后
DESC t29; -- 表结构还在 SELECT * FROM t29;-- 表数据丢失了 -- 修改存储引擎名
ALTER TABLE t29 ENGINE = INNODB;

day09-1存储引擎的更多相关文章

  1. MySQL数据库和InnoDB存储引擎文件

    参数文件 当MySQL示例启动时,数据库会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等.在默认情况下,MySQL实例会按照一定 ...

  2. Mysql存储引擎及选择方法

    0x00 Mysql数据库常用存储引擎 Mysql数据库是一款开源的数据库,支持多种存储引擎的选择,比如目前最常用的存储引擎有:MyISAM,InnoDB,Memory等. MyISAM存储引擎 My ...

  3. Mysql存储引擎比较

    Mysql作为一个开源的免费数据库,在平时项目当中会经常使用到,而在项目当中我们的着重点一般在设计使用数据库上而非mysql本身上,所以在提到mysql的存储引擎时,一般都不曾知道,这里经过网上相关文 ...

  4. MongoDB 存储引擎:WiredTiger和In-Memory

    存储引擎(Storage Engine)是MongoDB的核心组件,负责管理数据如何存储在硬盘(Disk)和内存(Memory)上.从MongoDB 3.2 版本开始,MongoDB 支持多数据存储引 ...

  5. TokuDB存储引擎

    TokuDB是Tokutek公司开发的基于ft-index(Fractal Tree Index)键值对的存储引擎. 它使用索引加快查询速度,具有高扩展性,并支持hot scheme modifica ...

  6. MongoDB 存储引擎和数据模型设计

    标签: MongoDB NoSQL MongoDB 存储引擎和数据模型设计 1. 存储引擎 1.1 存储引擎是什么 1.2 MongoDB中的默认存储引擎 2. 数据模型设计 2.1 内嵌和引用 2. ...

  7. 详细介绍Mysql各种存储引擎的特性以及如何选择存储引擎

    最近业务上有要求,要实现类似oracle 的dblink   linux版本 Server version: 5.6.28-0ubuntu0.14.04.1 (Ubuntu) 修改配置文件 /etc/ ...

  8. [MySQL Reference Manual]15. 其他存储引擎

    15. 其他存储引擎 15. 其他存储引擎 15.1 设置存储引擎 15.2 MyISAM存储引擎 15.2.1 MyISAM启动选项 15.2.2 Key的空间要求 15.2.3 MyISAM表存储 ...

  9. [转] mysql 存储引擎

    最常用的存储引擎 innodb MyISAM MyISAM,这种效率高,不支持事务,不支持外键,每个表有单独的存储文件(多个),方便管理. innodb,一般默认的都是innodb,效率也不低,支持事 ...

  10. 【整理】Linux下中文检索引擎coreseek4安装,以及PHP使用sphinx的三种方式(sphinxapi,sphinx的php扩展,SphinxSe作为mysql存储引擎)

          一,软件准备 coreseek4.1 (包含coreseek测试版和mmseg最新版本,以及测试数据包[内置中文分词与搜索.单字切分.mysql数据源.python数据源.RT实时索引等测 ...

随机推荐

  1. SpringCloud gateway自定义请求的 httpClient

    本文为博主原创,转载请注明出处: 引用 的 spring cloud gateway 的版本为 2.2.5 : SpringCloud gateway 在实现服务路由并请求的具体过程是在 org.sp ...

  2. 题解【AtCoder - CODE FESTIVAL 2017 qual B - D - 101 to 010】

    题目:https://atcoder.jp/contests/code-festival-2017-qualb/tasks/code_festival_2017_qualb_d 题意:给一个 01 串 ...

  3. 编译式安装MYSQL

    安装所需组件 实际上只需要这四个配置即可 升级boot开始 升级结束 重新执行cmake make && make install 启动mysql 发现启动失败 #####原因:这是由 ...

  4. CentOS7桥接模式上不了外网的配置

    电脑VM10装了CentOS7后用NAT模式可以上网,但我想要的是桥接模式,因为我要用Xshell5进行远程访问.所以要 ifconfig 找到ip .那么为什么桥接模式上不了外网呢? 首先参考了 h ...

  5. MYSQL的Java操作器——JDBC

    MYSQL的Java操作器--JDBC 在学习了Mysql之后,我们就要把Mysql和我们之前所学习的Java所结合起来 而JDBC就是这样一种工具:帮助我们使用Java语言来操作Mysql数据库 J ...

  6. CSP2021-S游记

    前言 年纪大了,脑子乱了,渐渐被低年级吊打了. 大家这么内卷下去,高年级的普遍后悔自己生早了,低年级永远占优势,不只是机会优势,还有能力优势. 快进到改变基因出生国家队算了-- Day0 非常不幸地被 ...

  7. ARC122D XOR Game(博弈论?字典树,贪心)

    题面 ARC122D XOR Game 黑板上有 2 N 2N 2N 个数,第 i i i 个数为 A i A_i Ai​. O I D \rm OID OID(OneInDark) 和 H I D ...

  8. JavaScript 设计模式及代码实现——代理模式

    代理模式 1 定义 为其他对象提供一种代理以控制对这个对象的访问 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 2 应用举例 2.1 缓 ...

  9. 《现代操作系统(中文第四版)》实验一 bash脚本实现cal

    题目大意:让你写一个bash脚本,实现与linux下cal相同的效果 学习bash语言题,除了区别和c++有亿点区别外其他都还好 1 monName=("invalid" &quo ...

  10. HashMap不安全后果及ConcurrentHashMap线程安全原理

    Java集合HashMap不安全后果及ConcurrentHashMap 原理 目录 HashMap JDK7 HashMap链表循环造成死循环 HashMap数据丢失 JDK7 Concurrent ...