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

原文链接:https://www.cnblogs.com/yellowsea/p/17266163.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL学习笔记-存储引擎 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • MySql 之UUID()

    mysql中做了个定时执行的事件,发现原来起作用,现在不行了。 调用/var/lib/mysql中的错误日志文件,发现一句: Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsaf…

    MySQL 2023年4月12日
    00
  • MySQL数据库中delimiter的作用概述

    以下的文章主要是向大家描述的是MySQL数据库中delimiter的作用是什么?我们一般都认为这个命令和存储过程关系不大,到底是不是这样的呢?以下的文章将会给你相关的知识,望你会有所收获。 其实就是告诉MySQL解释器,该段命令是否已经结束了,MySQL数据库是否可以执行了。默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,…

    MySQL 2023年4月13日
    00
  • mysql优化系列 DELETE子查询改写优化

    首先我们来讲一下“mysql优化系列 DELETE子查询改写优化”的攻略。 1. 什么是DELETE子查询? DELETE语句可以删除指定的行,同时也可以使用子查询来删除符合某些条件的行。DELETE子查询通常使用IN或EXISTS子句来实现。 例如,下面这条SQL语句使用了IN子查询来删除一些数据: DELETE FROM table1 WHERE id …

    MySQL 2023年5月19日
    00
  • MySQL 8.0.31中使用MySQL Workbench提示配置文件错误信息解决方案

    MySQL是一款常用的关系型数据库管理系统,而MySQL Workbench则是MySQL官方的图形化界面工具。但是,在使用MySQL Workbench时,可能会遇到提示“Could not find configuration file”的错误。在MySQL 8.0.31版本中,该错误提示会直接弹出对话框,影响使用。本文将详细介绍如何解决这一问题。 问题…

    MySQL 2023年5月18日
    00
  • MySQL备份

    备份单个数据库   MySQL数据库自带一个很好的备份命令,就是mysqldump。   基本语法:mysqldump -u 用户名 -p 数据库名 > 备份的文件名  示例 1  备份一个库 [root@localhost ~]# mysql -uroot -p123456 -S /tmp/mysql_3306.sock mysql> show…

    MySQL 2023年4月16日
    00
  • MySQL中join语句怎么优化

    MySQL中join语句优化是提高查询性能的重要手段之一,下面是优化join语句的完整攻略: 1. 通过选择合适的join类型来优化 MySQL中的join操作有多种类型(包括inner join、left join、right join、full join等),不同的join类型会产生不同的结果。在选择时,需要根据表之间的关系和查询需求来选择合适的join…

    MySQL 2023年5月19日
    00
  • MySQL提示:The server quit without updating PID file问题的解决办法

    MySQL 提示”The server quit without updating PID file”问题通常表示 MySQL 服务启动或关闭时出现了异常,导致 PID 文件未被正确更新。本攻略将为您提供一系列的解决方案来解决这个问题。 解决方案1:删除 PID 文件 首先,我们可以尝试删除 PID 文件并重新启动 MySQL 服务。步骤如下: 打开终端或命…

    MySQL 2023年5月18日
    00
  • 解析在MySQL里创建外键时ERROR 1005的解决办法

    当在MySQL中创建外键时,有可能会遇到ERROR 1005的错误提示。这种情况通常是由于外键定义过程中存在语法错误或者其他约束条件不满足引起的。下面详细讲解一下解析在MySQL里创建外键时ERROR 1005的解决办法。 1. 错误原因分析 ERROR 1005通常是由于以下原因导致的: 外键定义过程中语法存在错误; 外键关联的字段类型、大小或字符集不一致…

    MySQL 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部