首页 > 数据库 >MySQL学习笔记-存储引擎

MySQL学习笔记-存储引擎

时间:2023-03-28 18:02:44浏览次数:36  
标签:存储 笔记 索引 引擎 InnoDB 默认 MySQL

存储引擎

一. MySQL体系结构

image-20230328155149347

  • MySQL Server
    • 连接层:连接的处理、认证授权、安全方案、检查是否超过最大连接数等。
    • 服务层:SQL接口、解析器、查询优化器、缓存
    • 引擎层:引擎是数据存储和提取的方式,引擎层有许多引擎可供使用,也可以自定义引擎。索引是在存储引擎层实现的。
    • 存储层:存储数据库的相关数据,包括数据与日志等。

image-20230328155625162

二. 存储引擎简介

什么是存储引擎?

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

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

  • MySQL 5.5 之后默认存储引擎为InnoDB

image-20230328160011584

1. 在创建表时指定存储引擎

create table {表名}(
	...
)engine = {存储引擎} ...;

2. 查看当前数据库支持的存储引擎

show engines;

image-20230328160517473

三. 存储引擎特点

image-20230328164008325

1. InnoDB

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

1.1 特点

  • DML操作遵循ACID模型,支持事务
  • 行级锁,提高并发访问性能;
  • 支持外键FOREIGN KEY约束,保证数据的完整性和准确性;

1.2 文件

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

  • 参数:innodb_file_per_table:决定是多张表共用一个共享表空间还是每个表都对应一个表空间,目前默认是打开的(每个表都对应一个表空间文件)

1.3 逻辑存储结构

  • TableSpace:表空间
  • Segment:段
  • Extent:区(大小固定:1M)(一个区包含64个页)
  • Page:页(大小固定:16K)
  • Row:行

image-20230328161823252

2. MyISAM

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

2.1 特点

  • 不支持事务,不支持外键
  • 支持表锁,不支持行锁
  • 访问速度快

2.2 文件

  • .MYD:表中存放的数据
  • .MYI:索引
  • .sdi:存储表结构信息

3. Memory

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

3.1 特点

  • 内存存放(快)
  • hash索引(默认)

3.2 文件

xxx.sdi:存储表结构信息

数据索引在内存中。

四. 存储引擎选择

选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。

对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。

image-20230328174749905

标签:存储,笔记,索引,引擎,InnoDB,默认,MySQL
From: https://www.cnblogs.com/yellowsea/p/17266163.html

相关文章

  • 服务器处理能力估算(CPU、内存、存储)之二
    1  引题  但凡写过技术方案的都知道,在技术方案最终落实到工程实施部署时,必须编制出当前解决方案需要部署的IT设备及环境,包括:需要的网络环境、端口、带宽、组网......
  • Raspberry Pi上手笔记之一
    RaspberryPi上手笔记之一作者:chszs RaspberryPi在国内称为“树莓派”,在开始使用树莓派之前,我们需要熟悉它的连接器和功能。这有助于我们选择使用树莓派来实现什么项目,也......
  • MySQL事务还没提交,Canal就能读到消息了?
    【问题描述】开发有天碰到一个很奇怪的问题,他的场景是这样子的:通过Canal来订阅MySQL的binlog,当捕获到有数据变化时,回到数据库,反查该数据的明细,然后做进一步处理。有一......
  • mysql binlog 几种日志格式的区别?
    在MySQL中,二进制日志(binlog)是用于记录数据库操作的一种日志文件,主要用于主从复制、恢复数据等操作。MySQL提供了三种不同的二进制日志格式,分别是Statement、Row和Mixed......
  • Power BI如何连接MySQL数据库
    既然写了如何卸载MySQLconnectornet(相关文章见如何解决MySQLConnectorNETxxxx无法卸载的问题(win10)),那就顺便再写一篇PowerBI(以下简称PBI)如何连接MySQL数据库吧在系统......
  • Java官方笔记3Java语言基础
    变量InstanceVariables(Non-StaticFields)实例变量(非静态变量)一个类可以创造多个实例,实例中的变量叫做实例变量,相互独立。ClassVariables(StaticFields)类变量(......
  • 构建之法阅读笔记02
    看到第三章,发现软件工程开发一直强调团队的重要性,但同时,每个人也发挥着重要的作用,在一个开发团队中,每个人都是一个环,环环相扣才能实现软件的开发。在大部分成功的软件团队......
  • 如何解决MySQL Connector NET xxxx无法卸载的问题(win10)
    使用PowerBI(以下简称PBI)的小伙伴想必都知道,想要在PBI连接MySQL数据库,必须安装MySQLconnectornet,我之前安装过MySQLconnectornet6.9.3,PBI是可以正常连接MySQL的,最近更......
  • MYsql数据库的概述(韩顺平)
    Mysql的安装命令行连接到MySqlMysql是一个服务在连接mysql之前必须保证mysql是运行的状态连接mysql中-uroot表示的是用户名连接mysql的注意事项Navicat的......
  • C++核心编程笔记
    C++核心编程本内容主要针对C++面向对象编程技术做详细讲解1内存分区模型C++程序在执行时,将内存大方向划分为4个区域:代码区:存放函数体的二进制代码,由操作系统进行管理......