004、MySQL存储引擎
本文最后更新于 259 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com

MySQL存储引擎

一、MySQL数据库体系结构:

1.连接层:连接池
2.服务层:SQL接口,解析器,查询优化器,缓存
3.引擎层:可插拔式存储引擎
4.存储层:系统文件,日志

二、存储引擎概念

存储引擎就是存储数据,建立索引,更新/查询数据等技术的实现方式。存储引擎是基于表的,不是基于库的,所以存储引擎也可以称为表类型。
查看表引擎语法:select create table 表名 --- 默认引擎:InnoDB

1.在创建表时,指定存储引擎
create table 表名(
字段1 类型1,
......
)engine=innodb [表注释]

2.查看当前数据库支持的存储引擎
语法:show engines;

三、存储引擎特点

1. InnoDB

InnoDB介绍:InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在MySQL5.5之后,InnoDB是默认MySQL存储引擎
特点:DML操作遵循ACID模型(事务的四大特性),支持事务;
行级锁,提高并发访问性能;支持外键foreign key约束,保证数据的完整性和正确性;
文件:xxx.ibd:xxx代表的是表名,innoDB引擎的每张表都会对应一个表空间文件,存储该表的表结构(frm,sdi)、数据和索引
参数:innodb_file_per_table
InnoDB逻辑存储结构:表空间,段,区(1M),页(16K),行

2. MyISAM

MyISAM介绍:MyISAM是MySQL早期默认存储引擎
特点:不支持事务,不支持外键,支持表锁,不支持行锁,访问速度快
文件:
.sdi:存储表结构信息、.MYD:存储数据、.MYI:存储索引

3. Memory

Memory介绍:Memory引擎的表数据是存储在内存中的,由于受到硬件问题或断电问题的影响,只能将这些表作为临时表或缓存使用
特点:内存存放hash索引(默认)
文件:.sdi:存储表结构信息

4. InnoDB、MyISAM、Memory的区别

InnoDB MyISAM Memory
存储限制 64TB
事务安全 支持 不支持 不支持
锁机制 行锁 表锁 表锁
B+tree索引 支持 支持 支持
Hash索引 不支持 不支持 支持
全文索引 支持 支持 不支持
空间使用 N/A
内存使用 中等
批量插入速度
支持外健 支持 不支持 不支持

注:InnoDB、MyISAM、Memory的区别:事务,锁机制,外键

四、存储引擎的选择

在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。
1.InnoDB:是MySQL的默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较高的需求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,可以选择InnoDB存储引擎。
2.MyISAM:应用是以读操作和插入操作为主,只有很少的跟新和删除操作,并且对事务的完整性、并发性要求不是很高,可以选择MyISAM存储引擎--存储一些非核心事务。
3.Memory:将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。Memory的缺陷是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性--redis。

谨此笔记,记录过往。凭君阅览,如能收益,莫大奢望。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇