MySQL 存储引擎

2023-1-13

存储引擎简介

存储引擎就是存储数据,建立索引,更新/查询数据等技术的实现方式。

需要注意的是存储引擎是基于表的,而不是基于库的,所以存储引擎也可以被称为表类型

在MySQL 5.5.5版本开始默认的存储引擎是INNODB,在此之前的默认存储引擎是MyISAM

如何查看当前数据库支持的存储引擎:

基础语法

SHOW ENGINES ;

关键字解读:

  1. Engine(存储引擎名称)

  1. Support(是否支持该存储引擎)

  1. Comment(存储引擎的描述)

  1. Transcation(是否支持事务处理)

  1. XA:存储引擎是否支持分布式事务

  1. Savepoints(是否支持事务回滚)

指定存储引擎创建表

语法:

CREATE TABLE 表名(建表语句)ENGINE = 存储引擎名称;

# 创建表my_memory ,指定Memory存储引擎
CREATE TABLE  my_memory(
    id TINYINT UNSIGNED,
    name VARCHAR(5)
)engine =Memory;

修改表的存储引擎

语法:

ALTER TABLE 表名 ENGINE =存储引擎名称;

ALTER TABLE my_memory ENGINE =INNODB;

文件

XXX.ibd:xxx代表的表名,innoDB引擎的每张表都会对应这样一个表空间文件,该文件存储该表的结构(frm,sdi),数据和索引。

Memory存储引擎(现在多用Redis进行缓存)

该引擎的表数据是存储在内存中,由于收到硬件问题,只能将表作为临时表或缓存使用,优点访问快,支持hash索引,文件xxx.sdi

Innodb

Innodb是一个将表中的数据存储到磁盘上的存储引擎,即关机后数据依然存在,支持事务,行锁和表锁,外键。

逻辑存储架构

Innodb引擎中主要拆分为五个部分(表空间,段,区,页,行)

1.表空间(tablespace):

表空间(idb文件),是一个mysql实例(对象)可以多个表空间,用于存储记录,索引等数据。

2.段(segment)

Innodb的读取原理

Innodb是采取一页一页的读取数据,一页默认读取16KB的数据!

索引

索引概述

索引(index)是帮助Mysql高效获取数据(有序)数据结构。在数据之外,数据库系统还维护着满足特定查找算法的数据结构。

索引是在第三层(存储引擎层)实现,即不同的存储引擎有不同的索引结构

索引结构分类(四种)
    • B+Tree索引(B+树)

也是最常见的索引类型,大部分索引都支持B+Tree.

2.Hash索引(哈希)

底层数据结构是用哈希表实现的,只有精准匹配索引列的查询才有效,不支持范围查询。

3.R-Tree(空间索引)

空间索引是MyISAM引擎的一种特殊索引类型,主要用于地理空间数据类型,通常用得较少。

4.Full-text(全文索引)

是一种通过建立倒排索引,快速匹配文档的方式。

索引的优缺点
优点
  1. 提高数据检索的效率,降低IO成本

  1. 通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗

缺点

索引作为一种数据结构会占用空间

索引大大提高了查询效率,同时也降低更新表的速度,比如DML语句(增,删,改)效率降低。

B+Tree索引

二叉树的缺点:顺序插入时,会形成一个单向链表,查询性能大大降低。在大数据量下,层级较深,索引速度较慢。

索引引出红黑树:在大数据量下,层级较深,查询速度慢

注意!由上述故引出我们所需要的B-Tree.

B-Tree(多路平衡查找树)

学前先知什么是度数?

度数的概念:数的度数指的是一个节点的子节点个数

在B-Tree树中:

以一颗最大度数为5(5阶)的B-Tree为例(每个子节点最多存储4个Key,五个指针)

未完待续。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@日与夜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值