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实时索引等测 ...
随机推荐
- css基础02
熟练快捷键!方便,要多练! css复合选择器 不会选孙子,有一个儿子和另一个儿子的孩子(也是孙子)同名了,但子选择器子选择儿子,同名的孙子不选.和后代选择器有一点不一样的. " ,&quo ...
- Postgres常用SQL
- Educational Codeforces Round 132 (Rated for Div. 2)
Educational Codeforces Round 132 (Rated for Div. 2) A. Three Doors 简述 题意: 有三扇门(1~3), 其中两扇门后面有对应标号门的钥 ...
- RocketMQ 详解系列
什么是RocketMQ RocketMQ作为一款纯java.分布式.队列模型的开源消息中间件,支持事务消息.顺序消息.批量消息.定时消息.消息回溯等.主要功能是异步解耦和流量削峰:. 常见的MQ主要有 ...
- BZOJ3037 创世纪(基环树DP)
基环树DP,攻的当受的儿子,f表选,g表不选.并查集维护攻受关系.若有环则记录,DP受的后把它当祖宗,再DP攻的. #include <cstdio> #include <iostr ...
- Luogu4408 [NOI2003]逃学的小孩 (树的直径)
一边一定是直径,另一边从两端点走取最小值的最大值 #include <iostream> #include <cstdio> #include <cstring> ...
- 基于 .NET 6 的轻量级 Webapi 框架 FastEndpoints
大家好,我是等天黑. FastEndpoints 是一个基于 .NET 6 开发的开源 webapi 框架,它可以很好地替代 .NET Minimal APIs 和 MVC ,专门为开发效率而生,带来 ...
- [NOI P模拟赛] 传统艺能(子序列自动机、矩阵乘法,线段树)
(2:00)OID:"完了,蓝屏了!"(代码全消失) 众人欢呼 OID:开机,"原题测试--" (30min later)OID 开始传统艺能: " ...
- ARC125E - Snack (网络流)
题面 有 N N N 种糖果, M M M 个小孩子,第 i i i 种糖果有 A i A_i Ai 个,第 i i i 个孩子不能有超过 B i B_i Bi 个同种类型的糖果,第 i i i ...
- RestTemplate用法
RestTemplate 用法 RestTemplate简介 RestTemplate 是一个同步的web http客户端请求模板工具,spring框架做的抽象模板, 常见的http客户端请求工具有: ...