day09-1存储引擎
存储引擎
1.基本介绍
- 基本介绍
MySQL的表类型由存储引擎(Storage Engines)决定,主要包括MyISAM、innoDB、Memory等
MySQL数据表主要支持六种类型,分别是:CSV,Memory,ARCHIVE,MRG_MYISAM,MYISAM,InnoBDB。
这六种又分为两类,一类是”事务安全型“(transaction-safe),例如:InnoDB。
剩下的五种都是第二类,称为“非事务安全型”(non-transaction-safe)
数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎。
- 主要的存储引擎(表类型)特点
特点 | Myisam | Memory | InnoDB | Archive |
---|---|---|---|---|
存储限制 | 没有 | 有 | 64TB | 没有 |
事务安全 | 支持 | |||
锁机制 | 表锁 | 表锁 | 行锁 | 行锁 |
B树索引 | 支持 | 支持 | 支持 | |
哈希索引 | 支持 | 支持 | ||
全文索引 | 支持 | |||
集群索引 | 支持 | |||
数据缓存 | 支持 | 支持 | ||
索引缓存 | 支持 | 支持 | 支持 | |
数据可压缩 | 支持 | 支持 | ||
空间使用 | 低 | N/A | 高 | 非常低 |
内存使用 | 低 | 中等 | 高 | 低 |
批量插入的速度 | 高 | 高 | 低 | 非常高 |
支持外键 | 支持 |
- 细节说明
- MyISAM不支持事务,也不支持外键,但是其访问速度快,对事务完整性没有要求
- InnoDB存储引擎提供了具有提交、回滚和崩溃能力的事务安全。但是比起MyISAM存储引擎,InnoDB写得处理效率差一些,并且会占用更多的磁盘空间以保留数据和索引
- 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;-- 表数据丢失了
- 如何选择表的存储引擎
如果你的应用不需要事务,处理的只是基本的CRUD操作,那么MyISAM是不二选择,速度快
如果需要支持事务,选择InnoDB
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存储引擎的更多相关文章
- MySQL数据库和InnoDB存储引擎文件
参数文件 当MySQL示例启动时,数据库会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等.在默认情况下,MySQL实例会按照一定 ...
- Mysql存储引擎及选择方法
0x00 Mysql数据库常用存储引擎 Mysql数据库是一款开源的数据库,支持多种存储引擎的选择,比如目前最常用的存储引擎有:MyISAM,InnoDB,Memory等. MyISAM存储引擎 My ...
- Mysql存储引擎比较
Mysql作为一个开源的免费数据库,在平时项目当中会经常使用到,而在项目当中我们的着重点一般在设计使用数据库上而非mysql本身上,所以在提到mysql的存储引擎时,一般都不曾知道,这里经过网上相关文 ...
- MongoDB 存储引擎:WiredTiger和In-Memory
存储引擎(Storage Engine)是MongoDB的核心组件,负责管理数据如何存储在硬盘(Disk)和内存(Memory)上.从MongoDB 3.2 版本开始,MongoDB 支持多数据存储引 ...
- TokuDB存储引擎
TokuDB是Tokutek公司开发的基于ft-index(Fractal Tree Index)键值对的存储引擎. 它使用索引加快查询速度,具有高扩展性,并支持hot scheme modifica ...
- MongoDB 存储引擎和数据模型设计
标签: MongoDB NoSQL MongoDB 存储引擎和数据模型设计 1. 存储引擎 1.1 存储引擎是什么 1.2 MongoDB中的默认存储引擎 2. 数据模型设计 2.1 内嵌和引用 2. ...
- 详细介绍Mysql各种存储引擎的特性以及如何选择存储引擎
最近业务上有要求,要实现类似oracle 的dblink linux版本 Server version: 5.6.28-0ubuntu0.14.04.1 (Ubuntu) 修改配置文件 /etc/ ...
- [MySQL Reference Manual]15. 其他存储引擎
15. 其他存储引擎 15. 其他存储引擎 15.1 设置存储引擎 15.2 MyISAM存储引擎 15.2.1 MyISAM启动选项 15.2.2 Key的空间要求 15.2.3 MyISAM表存储 ...
- [转] mysql 存储引擎
最常用的存储引擎 innodb MyISAM MyISAM,这种效率高,不支持事务,不支持外键,每个表有单独的存储文件(多个),方便管理. innodb,一般默认的都是innodb,效率也不低,支持事 ...
- 【整理】Linux下中文检索引擎coreseek4安装,以及PHP使用sphinx的三种方式(sphinxapi,sphinx的php扩展,SphinxSe作为mysql存储引擎)
一,软件准备 coreseek4.1 (包含coreseek测试版和mmseg最新版本,以及测试数据包[内置中文分词与搜索.单字切分.mysql数据源.python数据源.RT实时索引等测 ...
随机推荐
- 性能浪费的日志案例和使用Lambda优化日志案例
有些场景的代码执行后,结果不一定会被使用,从而造成性能浪费.而Lambda表达式是延迟执行的,这正好可以作为解决方案,提升性能 性能浪费的日志案例 日志可以帮助我们快速的定位问题,记录程序运行过程中的 ...
- 关于静态 RMQ 问题
目录 1. 普通做法 2. Four Russian 算法 3. 随机数据的一种做法 4. 有关转 LCA 的做法 1.1. RMQ 转 LCA 再转 ±1RMQ(RMQ 标准算法) 1.2. 一个优 ...
- 你的工具包已到货「GitHub 热点速览 v.22.31」
如果你经常用 shell 记得看看本周特推里的 gum,它能给你的 shell 增加新趣味.除了这个 shell kit,我们还有 dashboard kit--tabler,功能技能 kit eng ...
- gitlab root密码重置
版本:Gitlab Ruby Gem 4.16.1 root密码在gitlab第一次运行的时候,如果你没有配置root用户的密码文件,它就会生成一个随机密码,并保存在固定的文件中,然后输出在屏幕上.但 ...
- Odoo14 ir.actions.act_window
xml声明 1 <record id="res_company_user_action" model="ir.actions.act_window"> ...
- SkiaSharp 之 WPF 自绘 投篮小游戏(案例版)
此案例主要是针对光线投影法碰撞检测功能的示例,顺便做成了一个小游戏,很简单,但是,效果却很不错. 投篮小游戏 规则,点击投篮目标点,就会有一个球沿着相关抛物线,然后,判断是否进入篮子里,其实就是一个矩 ...
- vue中vuex实现持久化的几种方法
前提:大家都知道vuex真的数据共享是不持久的,例如登录后一刷新,state中存的token就会消失,导致你需要再次进行登录操作 在这给大家列出几种解决方案: 第一种(也是一些项目中常使用的):使用缓 ...
- React报错之Functions are not valid as a React child
正文从这开始~ 总览 产生"Functions are not valid as a React child. This may happen if you return a Compone ...
- BZOJ1176 [Balkan2007]Mokia(CDQ)
CDQ裸题,\(x\), \(y\), \(tim\)三维偏序 #include <cstdio> #include <iostream> #include <cstri ...
- 在 Linux 中安装 MongoDB 的流程
下载 MongoDB官网下载社区版的安装包: 解压 上传至 Linux,安装位置自行选择.把压缩包解压到安装的目录下. 可重命名解压的文件夹名: mv mongodb-linux-x86_64-rhe ...