mysql进阶之存储引擎

键盘侠JC 键盘侠JC     2023-04-08     294

关键词:

1、概念

存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方法。其基于表的,而不是基于库的,所以存储引擎也称为表类型。

在建表的时候,不指定存储引擎,默认的存储引擎是InnoDB。

查看建表语句:show create table 表名;

 可看到默认的存储引擎就是InnoDB

 

在建表的时候,可以指定存储引擎,语法格式如下:

create table 表名(
字段1 字段1类型 [COMMENT 字段1注释],
....
字段n 字段n类型 [COMMENT 字段n注释],
)ENGINE = INNODB [COMMENT 表注释];

 

查询当前数据库支持的存储引擎:show engines;

 

 

2、InnoDB

InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在MySQL5.5之后,InnoDB是默认的MySQL存储引擎。

其主要特点有:

  DML操作遵循ACID模型,支持事务;

  行级锁,提高并发访问性能;

  支持外键FOREIGN KEY约束,保证数据的完整性和正确性;

其存储的磁盘文件后缀为.ibd,InnoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi)、数据和索引。

参数有innodb_file_per_table,该参数决定是一张表对应一个表空间文件还是多个表共享一个表空间文件。

查看该参数代码如下:

show variables like \'innodb_file_per_table\';

 可以看到innodb_file_per_table的值为ON,这就说明一张表对应一个表空间文件

InnoDB逻辑存储结构如下:

 其中:TableSpece表空间、Segment段、Extent区(固定大小1M)、Page页(固定大小16k)、Row行

 

3、MyISAM

MyISAM是MySQL早期的默认存储引擎。

其主要特点:

  不支持事务,不支持外键;

  支持表锁,不支持行锁;

  访问速度快。

在MyISAM涉及的磁盘空间文件后缀有:

  .MYD:存储表数据;

  .MYI:存储索引;

  .sdi:存储表结构的信息。

 

4、Memory

Memory引擎的表数据是存储在内存中的,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。

其主要特点有:

  内存存放,访问速度快;

  支持hash索引。

其文件后缀为sdi,该文件存储表结构信息。

 

5、对比与选择

三种存储引擎的特点:

存储引擎没有好坏之分,我们只需要根据系统特点选择合适的存储引擎,对于复杂的系统中,可以根据实际情况选择多种存储引擎进行组合。

InnoDB:是MySQL默认存储引擎,支持事务、外键。当应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,那么InnoDB存储引擎是比较合适的选择。

MyISAM:当系统是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择MyISAM引擎。

Memory:将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。Memory的缺陷是对表的大小有限制,太大的表无法缓存在内存中,而无法保障数据的安全性。

 

mysql进阶篇存储引擎(代码片段)

🍉个人主页:个人主页🍓系列专栏:MySQL数据库目录1.MySQL体系结构1).连接层2).服务层3).引擎层4).存储层2.存储引擎介绍3.存储引擎特点1.InnoDB2.MyISAM3.Memory4.区别及特点4.存储引擎选择 1.MySQL体系结构1).连接层最上层... 查看详情

mysql进阶—存储引擎

存储引擎存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方法。其基于表的,而不是基于库的,所以存储引擎也称为表类型。在建表的时候,不指定存储引擎的话,就会使用默认的存储引擎InnoDB,执行如下代码... 查看详情

mysql进阶实战2,那些年学过的事务

一、MySQL服务器逻辑架构MySQL核心部分包括查询解析、分析、优化、缓存以及内置函数,所有跨存储引擎的功能,存储过程、触发器、视图等。存储引擎负责MySQL中数据的存储和提取。服务器通过API和存储引擎进行通信。存储引擎... 查看详情

mysql教程详解之存储引擎介绍及默认引擎设置

什么是存储引擎?与其他数据库例如Oracle和SQLServer等数据库中只有一种存储引擎不同的是,MySQL有一个被称为“PluggableStorageEngineArchitecture”(可替换存储引擎架构)的特性,也就意味着MySQL数据库提供了多种存储引擎。用户可... 查看详情

mysql之数据库存储引擎及事务acid特性

1、存储引擎2、事务3、事务语法4、事务简单原理 查看详情

mysql之存储引擎大全-《从0到1-全面深刻理解mysql系列-第五篇》

...迎私信,看到会及时回复!文章大纲一、前言二:MySQL支持的存储引擎三:MySQL支持的存储引擎的特点四:如何选择一个存储引擎,常用的存储引擎特点对比五:关于存储引擎常见的面试题5.1:InnoDB和MyISAM的区别5 查看详情

mysql分表查询之merge存储引擎实现

...)?在这篇文章里,介绍使用 Merge [mɜːrdʒ] 存储引擎实现 MySQL [maɪeskju:el]分表查询。MERGE 查看详情

mysql存储引擎之myisam

参考技术AMyisam存储引擎是在mysql5.5之前版本默认的存储引擎,mysql大部分系统表和临时表(是指排序,分组等操作中,在数量超过一定数量后,由查询优化器简历的临时表)都使用这个存储引擎。myisam存储引擎表会存储两个文件M... 查看详情

春华秋实之mysql进阶-04视图/存储过程/触发器(代码片段)

4视图4.1介绍以及基本语法介绍概念:视图是一种虚拟的存在的表。视图的行和列数据来自定义视图的查询中使用的表,并且是使用视图时动态生成的。创建createview视图名称asselect语句;createorreplaceviewcourse_v_1asselectnamefromcoursewhere... 查看详情

mysql之innodb存储引擎(代码片段)

innodb存储引擎一、mysql组织架构根据以上结构,详解如下1、连接层1.验证用户的身份,用户名密码是否匹配2.提供两种连接方式(TCP/IP连接、socket连接)3.连接层提供了一个与sql层交互的线程2、SQL层1.接收连接层传... 查看详情

数据库进阶七篇--innodb存储引擎

谦虚使人退步,如果自己都不为自己骄傲,那别人怎能为你骄傲?--《天珠变》目录​ 1.Mysql基本架构 2.存储引擎比较3.InnoDB存储引擎3.1内存3.1.1缓冲池3.1.2LRUList3.1.3FreeList3.1.4FlushList和脏页3.1.5changeBuffer3.1.6自适应哈希... 查看详情

mysql进阶实战4,mysql索引详解,下篇

一、索引索引是存储引擎用于快速查找记录的一种数据结构。我觉得数据库中最重要的知识点,就是索引。存储引擎以不同的方式使用B-Tree索引,性能也各有不同,各有优劣。例如MyISAM使用前缀压缩技术使得索引更小,但InnoDB则... 查看详情

mysql进阶实战9,innodb和myisam的数据分布对比(代码片段)

...布五、顺序的主键什么时候会造成更坏的结果?MySQL进阶实战系列文章哪吒精品系列文章一、InnoDB存储引擎InnoDB的数据存储在表空间dataspace中,由很多数据文件组成。InnoDB采用MVCC来支持高并发, 查看详情

《黑马程序员mysql数据库入门到精通,从mysql安装到mysql高级mysql优化全囊括》——学习笔记进阶篇(代码片段)

进阶篇前言本文仅用作个人笔记使用,整理自《黑马程序员MySQL数据库入门到精通,从MySQL安装到MySQL高级、MySQL优化全囊括》(https://www.bilibili.com/video/BV1Kr4y1i7ru/)存储引擎MySQL体系结构连接层最上层是一些客户端和连接服务... 查看详情

mysql存储引擎之memory

...认的,一个是指定的BTree。接下来我们查看表的状态Memory存储引擎表和临时表的区别临时表分两类:系统使用临时表,createtemporarytable建立的临时表。无论哪种表,只有当前session是可见的。而Memory表是所有线程都可以使用的。系... 查看详情

春华秋实之mysql进阶-06mysql管理(代码片段)

9MySQL管理9.1系统数据库系统自带数据库mysql>showdatabases;+--------------------+|Database|+--------------------+|information_schema||mysql||performance_schema||sys|+--------------------+各自的功能mysql:存储MySQL服务器正常运行所 查看详情

数据库进阶七篇--innodb存储引擎

谦虚使人退步,如果自己都不为自己骄傲,那别人怎能为你骄傲?--《天珠变》目录​ 1.Mysql基本架构 2.存储引擎比较3.InnoDB存储引擎3.1内存3.1.1缓冲池3.1.2LRUList3.1.3FreeList3.1.4FlushList和脏页3.1.5changeBuffer3.1.6自适应哈希... 查看详情

数据库进阶七篇--innodb存储引擎

谦虚使人退步,如果自己都不为自己骄傲,那别人怎能为你骄傲?--《天珠变》目录​ 1.Mysql基本架构 2.存储引擎比较3.InnoDB存储引擎3.1内存3.1.1缓冲池3.1.2LRUList3.1.3FreeList3.1.4FlushList和脏页3.1.5changeBuffer3.1.6自适应哈希... 查看详情