MySQL之存储引擎

什么是存储引擎

  • 数据库存储引擎是数据库底层软件组织,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据。

  • 日常生活中文件格式有很多种,并且针对不同的文件格式会有对应不同存储方式和处理机制(txt、pdf、word、mp4等等)

  • 不同的存储引擎提供不同的存储机制、索引机制、锁定水平等功能。不同的存储引擎,也都有其特定的功能及特定应用场景。

  • 用户可以根据不同的需求为数据表选择不同的存储引擎(表类型)

MySQL主要存储引擎

  • Innodb

    是MySQL5.5版本以及之后默认的存储引擎,支持事务/行锁/外键,支持外键约束,5.5前不支持全文索引,5.5后支持全文索引。

    优点
    提供良好的事务管理、崩溃修复能力和并发控制,存储数据更加的安全
    缺点
    读写效率稍差,占用的数据空间相对较大

  • MyISAM

    是MySQL5.5版本之前默认的存储引擎

    特点

    (1) 不支持事务,不支持外键
    (2) 支持表锁,不支持行锁
    (3) 占用空间小,访问速度快

  • MEMORY

    内存引擎(数据全部存放在内存中)断电数据丢失,读速度快很快,适合作为会话表和缓存表。

    特点

    (1) 内存存放
    (2) hash索引(默认)

  • BLACKHOLE

    无论存什么,都立刻消失(黑洞)

# 查看所有的存储引擎
show engines;
# 建表时指定引擎语法
create table 表名(
字段
...
)engine=存储引擎;
# 不同的存储引擎在存储表的时候有什么异同点吗
create table t1(id int) engine=innodb;
create table t2(id int) engine=myisam;
create table t3(id int) engine=blackhole;
create table t4(id int) engine=memory;

image

# 存数据
insert into t1 values(1);
insert into t2 values(1);
insert into t3 values(1);
insert into t4 values(1);

验证blackhole 不存储数据

image

验证memory 数据是存在内存中

  • memory 数据是存在内存中的,如何印证?
    • 重启mysql服务

image

可以发现memory 表中的数据已经不存在了

上述三种存储引擎的比较(不包括BLACKHOLE)

特点 InnoDB MyISAM Memory
存储限制 64TB
事务安全 支持 - -
锁机制 行锁 表锁 表锁
B+tree索引 支持 支持 支持
Hash索引 - - 支持
全文索引 支持(5.6版本之后) 支持 -
空间使用 N/A(Not Applicable)
内存使用 中等
批量插入速度
支持外键 支持 - -

存储引擎选择

(1) InnoDB : 是Mysql的默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,那么InnoDB存储引擎是比较合适的选择。
(2) MyISAM : 如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常合适的。
(3) MEMORY:将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。MEMORY的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性。

posted @   Xiao0101  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示

目录