MySQL高级1-存储引擎

高级,MySQL · 浏览次数 : 180

小编点评

**一、Mysql体系结构** **1.1 连接层** * 最上层是一个客户端和链接服务,主要完成一些类似于链接处理,授权认证,及相关的安全方案。 **1.2 服务层** * 第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行,所有跨存储引擎的功能叶子啊。 **1.3引擎层** * 存储引擎真正的负责了Mysql中数据的存储和提起,服务器通过api和存储引擎进行通信,不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。 **1.4 数据层** * 主要将数据存储在文件系统之上,并完成与存储引擎的交互 **二、存储引擎介绍** **2.1 简介:** * 存储引擎就是存储数据,建立索引,更新/查询数据等技术的实现方式,存储引擎是基于表的,而不是基于库的,所以存储引擎也可以被称为表类型 **2.2 指定引擎语法create table 表名(   字段1 字段1类型 [comment 字段1注释],   ......   字段2 字段n类型 [comment 字段n注释])engine=InnoDB [comment 表注释];** * 说明:mysql5.5之后默认的储存引擎就是InnoDB类型 **2.3 查看数据库支持的存储引擎类型:** * show engines;mysql> show engines;+--------------------+---------+----------------------------------------------------------------+--------------+------+------------| Engine | Support | Comment | Transactions | XA | Savepoints |+--------------------+---------+----------------------------------------------------------------+--------------+------+------------| **三、InnoDB引擎** **3.1 Innodb引擎介绍** * InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在Mysql5.5之后,InnoDB是默认的Mysql存储引擎 **3.2 InnoDB引擎特点DML操作遵循ACID模型,支持事务; 行级锁,提高并发访问性能支持外键foreign key约束,保证数据的完整性和正确性 **3.3 InnoDB引擎文件** * xxx.ibd: xxx代表表名,InnoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm,sdi)、数据和索引 **四、MyISAM引擎** **4.1 MyISAM引擎介绍** * MyISAM是Mysql5.5以前的默认储存 **4.2 MyISAM引擎特点不支持事务,不支持外键支持表锁,不支持行锁访问速度快 **五、Memory引擎** **5.1 Memory引擎介绍** * Memory引擎的表数据是存储在内存中的,由于收到硬件问题,或断电问题的影响,只能将这些表作为临时表或缓存表使用 **5.2 Memory引擎特点内存存放,读取速度块hash索引 **5.3 Memory文件** * xxx.sdi:存储表结构信息 * xxx.MYD:储存数据xxx.MYI:储存索引

正文

一、Mysql体系结构

  

   1.1、连接层

    最上层是一个客户端和链接服务,主要完成一些类似于链接处理,授权认证,及相关的安全方案,服务器也会为安全接入的而每个客户端验证它所具有的操作权限

  1.2、服务层

    第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行,所有跨存储引擎的功能叶子啊这一层实现如函数等。

  1.3、引擎层

    存储引擎真正的负责了Mysql中数据的存储和提起,服务器通过api和存储引擎进行通信,不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎

  1.4、存储层

    主要是将数据存储在文件系统之上,并完成与存储引擎的交互

 

二、存储引擎介绍

  2.1、简介:

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

  2.2、指定引擎语法

create table 表名(
   字段1 字段1类型 [comment 字段1注释],
   ......
   字段2 字段n类型 [comment 字段n注释]
)engine=InnoDB [comment 表注释];

    说明:mysql5.5之后默认的储存引擎就是InnoDB类型

 

  2.3、查看数据库支持的存储引擎类型:show engines;

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.01 sec)

 

三、InnoDB引擎

  3.1、Innodb引擎介绍

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

  3.2 InnoDB引擎特点

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

  3.3 InnoDB引擎文件

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

    参数:innodb_file_per_table 默认打开的,每一张表都有一个独立的表结构 

  3.4 InnoDB引擎的逻辑存储结构

  

 

四、MyISAM引擎

  4.1 MyISAM引擎介绍

    MyISAM是Mysql5.5以前的默认储存

  4.2 MyISAM引擎特点

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

  4.3 MyISAN引擎文件

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

 

五、Memory引擎

  5.1 Memory引擎介绍

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

  5.2 Memory引擎特点

    • 内存存放,读取速度块
    • hash索引

  5.3 Memory文件

    xxx.sdi:存储表结构信息

 

六、储存引擎特点对比

  

 

七、存储引擎选择

  1、InnoDB引擎

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

  2、MyISAM引擎

    如果是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性,并发性要求不是很高,那么选择这个储存引擎是非常合适的,

  3、Memory引擎

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

 

与MySQL高级1-存储引擎相似的内容:

MySQL高级1-存储引擎

一、Mysql体系结构 1.1、连接层 最上层是一个客户端和链接服务,主要完成一些类似于链接处理,授权认证,及相关的安全方案,服务器也会为安全接入的而每个客户端验证它所具有的操作权限 1.2、服务层 第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置

MySQL高级10-InnoDB引擎存储架构

一、逻辑存储结构 表空间(Tablespace):一个mysql实例,及一个数据库实例,可以对应多个表空间(ibd文件),用于存储记录,索引等数据。 段(Segment):分为数据段(Leaf node segment)、索引段(Non-leaf node segment)、回滚段(Rollback

MySQL 的 InnoDB 存储引擎简介

MySQL 是世界上最流行的开源关系型数据库管理系统之一,而其中的存储引擎则是其关键组成部分之一。InnoDB 存储引擎在 MySQL 中扮演了重要角色,提供了许多高级功能和性能优化,适用于各种应用程序和工作负载。本文将深入介绍 InnoDB 存储引擎的各个方面,以帮助您更好地理解它的特性和优势。

[转帖]第五章 MySQL 存储引擎

第五章 MySQL 存储引擎 https://www.jianshu.com/p/d12191803f17 本课程,适合具备一定Linux运维或者开发基础的朋友,课程定级中、高级DBA。只要掌握80%,轻松助力薪资15k-25K。课程内容均来自与MySQL官网+MySQL源码。配套精品视频(2021

MySQL—MySQL的存储引擎之InnoDB

MySQL—MySQL的存储引擎之InnoDB 存储引擎及种类 存储引擎 说明 MyISAM 高速引擎,拥有较高的插入,查询速度,但不支持事务 InnoDB 5.5版本后MySQL的默认数据库存储引擎,支持事务和行级锁,比MyISAM处理速度稍慢 ISAM MyISAM的前身,MySQL5.0以后不

【转帖】《MySQL高级篇》四、索引的存储结构

1. 为什么使用索引 假如给数据使用 二叉树 这样的数据结构进行存储,如下图所示 2、索引及其优缺点 2.1 索引概述 2.2 优点 类似大学图书馆建书目索引,提高数据检索的效率,降低 数据库的 IO 成本 这也是创建索引的主要的原因。通过创建唯一索引,可以保证数据库表中每一行 数据的唯一性 (唯一

MySQL高级7-存储过程

一、介绍 存储过程是事先经过编译并存储在数据库中的一段sql语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。存储过程思想上很简单,就是数据库sql语言层面的代码封装与重用。 例如:我们在实际开发中经常会遇到先查询数据,

MySQL高级13-MySQL管理工具

一、系统数据库 MySQL数据库安装完成后,自带了四个数据库: mysql数据库:存储MySQL服务器正常运行所需要的各种信息如时区、主从、用户、权限等 infomation_schema:提供了访问数据库元数据的各种表和视图,包含数据库、表、字段类型及访问权限等 performance_schem

MySQL高级

前言: 本篇文章是本人学习MySQL高级的笔记。 资料:《MySQL是怎样运行的》、《小林Coding-图解MySQL》、《MySQL45讲》、《尚硅谷康师傅MySQL视频》 一、基础篇 1. 什么是关系型数据库? 关系型数据库是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,一系列的

MySQL高级6-视图

一、视图介绍 视图(View):是一种虚拟存在的表,视图中的数据并不在数据库中实际存在,行和列数据来自,定义视图时查询使用的表,并且是在使用视图时动态生成的。通俗的讲,视图只保存了查询的SQL逻辑,不保存查询的结果。 二、创建视图 2.1 语法 create [or replace] view 视图