引擎

15 分钟阅读 885 字 + 1552 词
五、MySQL逻辑架构(了解)
image-20230630174705251
大体来说, MySQL可以分为 Server 层和存储引擎层。 Server 层包括 连接器、查询缓存、解析器、优化器和执行器 等,涵盖了 MySQL 大多数核心服务功能。 存储引擎层负责数据的存储和提取。其架构模式是 插件式 的,支持 InnoDB、MyISAM、Memory等多个存储引擎
六、存储引擎(==重要==)
《高性能MySQL》
作用: 存储和提取数据。插件式的。
image-20230701095445674
1、外键依赖
image-20230701094921683
image-20230701094855065
有外键依赖的表,进行删除与插入的时候,需要注意。
image-20230701094834320
2、MyISAM存储引擎(==重要==)
MySQL 5.5之前默认的存储引擎。
特点: a. 查询速度很快 b. 支持表锁 c. 支持全文索引 (正排索引、 倒排索引 ) d. 不支持事务
使用MyISAM 存储表,会生成 三个文件 . .frm # 存储表结构,是任何存储引擎都有的 .myd # 存放数据 .myi # 存放索引
索引和数据是分开的,叫做非聚集索引
3、InnoDB存储引擎(==重要==)
MySQL 5.5以及以后版本默认的存储引擎 。没有特殊应用,推荐使用InnoDB引擎。
特点: a. 支持事务 (具备ACID四大特征) b. 支持 行锁和表锁 (默认支持行锁) c. 支持 MVCC(多版本并发控制) ,版本号。 d. 支持 崩溃恢复(redo log) e. 支持外键一致性约束(外键依赖)
使用 InnoDB 存储表,会生成 两个文件 . .frm # 存储表结构,是任何存储引擎都有的 .ibd # 存放数据和索引
image-20230701101640374
image-20230701102036994
4、聚集索引与非聚集索引(==重要==)
索引和数据是分开存放的,这样的索引叫 非聚集索引
索引和数据存放在一起,这样的索引叫 聚集索引
5、memory存储引擎
特点: a. 所有数据都存放在 内存 中,因此 数据库重启后会丢失 b. 支持 表锁 c. 支持Hash和BTree索引 d. 不支持Blob(大的二进制信息)和Text字段(大的文本信息)
6、存储引擎是memory的表与临时表的区别
mysql
#1、创建方式
create temporary table test1 (id int, age int, math float, primary key(id));
create table test2 (id int, age int, math float)ENGINE=memory;

#2、显示问题
#临时表创建出来之后,通过show tables是看不到表名的,但是存储引擎是memory的表是可以看到表名的。

#3、存储引擎的区别
#存储引擎是memory的表,存储引擎是memory。但是临时表的存储引擎是InnoDB。(与MySQL的版本有关系)

#5、能不能进行正常的SQL语句(insert、update、delete、select)
#临时表与存储引擎是memory的表,都可以进行正常的SQL语句

#6、存在问题
#临时表只存在当前会话,当会话关闭之后,表的名字、表中的结构以及表中的数据都不存在了。但是存储引擎是memory的表,表的名字、表中的结构以及表中的数据都存在。

#7、断电的情况
#断电重启之后,存储引擎是memory的表中的数据是丢失的。
7、drop与delete区别
drop命令可以删除数据库、删除表。是将数据库的名字、表的名字都删除了。比如表,会将表的 结构、表中的数据都删除。
delete命令可以删除表中的 数据 ,但是删除不了表中结构,更不能删除表的名字。
8、存储引擎的选择(了解)
image-20230701111148440