首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MySQL 表类型和存储引擎

MySQL 表类型和存储引擎

作者头像
用户9615083
发布于 2022-12-25 17:29:48
发布于 2022-12-25 17:29:48
2.4K0
举报

# MySQL 表类型和存储引擎

# mysql 表类型和存储引擎

# 基本介绍

# 主要的存储引擎/表类型特点

特点

Myism

InnoDB

Memory

Archive

批量插入的速度

高

底

高

非常高

事务安全

支持

全文索引

支持

锁机制

表锁

行锁

表锁

行锁

存储限制

没有

64TB

有

没有

B树索引

支持

支持

支持

哈希索引

支持

支持

集群索引

支持

数据缓存

支持

支持

索引缓存

支持

支持

支持

数据可压缩

支持

支持

空间使用

底

高

N/A

底

内存使用

底

高

中等

底

支持外键

支持

# 细节说明

重点介绍三种:MyISAM、InnoDB、MEMORY

  1. MylSAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求。
  2. InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MylSAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
  3. MEMORY存储引擎使用存在内存中的内容来创建表。每个MEMORY表只实际对应-个磁盘文件。MEMORY类型的表访问非常得快,因为它的数据是放在内存中的,并且默认使用HASH索引。但是一旦MySQL服务关闭,表中的数据就会丢失掉,表的结构还在。

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

代码语言:javascript
复制
-- 查看所有的存储引擎
SHOW ENGINES
-- innodb 存储引擎,是前面使用过
-- 1.支持事务 2.支持外键 3.支持行级锁

-- myisam 存储引擎
CREATE TABLE t28(
	id INT,
	`name` VARCHAR(32)) ENGINE MYISAM
	
-- 1.添加速度快 2.不支持外键和事务 3.支持表级锁

START TRANSACTION
SAVEPOINT t1
INSERT INTO t28 VALUES(1,'jack');
SELECT *FROM t28
ROLLBACK TO t1 -- 没有回滚成功


-- 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,'frx')
	
SELECT *FROM t29

-- 修改存储引擎
ALTER TABLE t29 ENGINE =INNODB

# 如何选择表的存储引擎

  1. 如果你的应用不需要事务,处理的只是基本的CRUD操作,那么MylSAN是不二选择,速度快
  2. 如果需要支持事务,选择lnnoDB.
  3. Memory存储引擎就是将数据存储在内存中,由于没有磁盘I./O的等待速度极快。但由于是内存存储引擎,所做的任何修改在服务器重启后都将消失。(经典用法 用户的在线状态().)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • # MySQL 表类型和存储引擎
    • # mysql 表类型和存储引擎
      • # 基本介绍
      • # 主要的存储引擎/表类型特点
      • # 细节说明
      • # 三种存储引擎表使用案例
      • # 如何选择表的存储引擎
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档