一、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-存储引擎的更多相关文章

  1. MySQL支持多种存储引擎

    MySQL的强大之处在于它的插件式存储引擎,我们可以基于表的特点使用不同的存储引擎,从而达到最好的性能. MySQL有多种存储引擎:MyISAM.InnoDB.MERGE.MEMORY(HEAP).B ...

  2. MySQL两种存储引擎: MyISAM和InnoDB

    MySQL两种存储引擎: MyISAM和InnoDB 简单总结   MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Me ...

  3. mysql三-1:存储引擎

    一 什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制:比如处理文本用txt类型 ...

  4. Mysql(三)-1:存储引擎

    一 什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制:比如处理文本用txt类型 ...

  5. python、mysql三-1:存储引擎

    一 什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制:比如处理文本用txt类型 ...

  6. mysql数据库之 存储引擎、事务、视图、触发器、存储过程、函数、流程控制、数据库备份

    目录 一.存储引擎 1.什么是存储引擎? 2.mysql支持的存储引擎 3. 使用存储引擎 二.事务 三.视图 1.什么是视图 2.为什么要用视图 3.如何用视图 四.触发器 为何要用触发器 创建触发 ...

  7. mysql数据库之存储引擎

    mysql存储引擎概述 什么是存储引擎?                                                               MYSQL中的数据用各不相同的技术 ...

  8. MySQL的多存储引擎架构

    支持多种存储引擎是众所周知的MySQL特性,也是MySQL架构的关键优势之一.如果能够理解MySQL Server与存储引擎之间是怎样通过API交互的,将大大有利于理解MySQL的核心基础架构.本文将 ...

  9. Mysql更换MyISAM存储引擎为Innodb的操作记录

    一般情况下,mysql会默认提供多种存储引擎,可以通过下面的查看: 1)查看mysql是否安装了innodb插件.通过下面的命令结果可知,已经安装了innodb插件. mysql> show p ...

  10. mysql缓存、存储引擎

    一.         mysql查询缓存 查询缓存不是mysql的子系统,却是查询优化和执行子系统不可缺少的组成部分.它不仅可以缓存查询结果,还可以缓存查询结果本身.如果某个查询的结果就在缓存里, 系 ...

随机推荐

  1. c# 异步进阶———— 自定义 taskschedule[三]

    前言 我们知道我们的task async 和 await 是基于线程池进行调度的. 但是async 和 await 也就是使用了默认的task调度,让其在线程池中运行. 但是线程池是榨干机器性能为本质 ...

  2. Python 组织列表

    组织列表 在创建的列表中,元素的排列顺序是无法预测的,不能总控制用户提供数据的顺序,通过组织列表的方式,来控制列表的排序 使用方法sort()对列表进行永久性排序 sort()方法:列表中值时小写时默 ...

  3. ChatGPT Plugin 插件开发:基于 ASP.NET Core Minimal API

    前言 这是一篇ChatGPT插件开发教程,描述如何使用 ASP.NET Core Minimal API 开发 ChatGPT 插件,以最简单的 Todo List 指导示例作为入门教程. 这个Tod ...

  4. RocketMQ的简单使用

    大家好,我是Leo!今天来和大家分享RocketMQ的一些用法. 领域模型介绍 Producer: 用于生产消息的运行实体. Topic: 主题,用于消息传输和存储的分组容器. MessageQueu ...

  5. NC51101 Lost Cows

    题目链接 题目 题目描述 \(N (2 \leq N \leq 8,000)\) cows have unique brands in the range 1..N. In a spectacular ...

  6. 【Visual Leak Detector】源码调试 VLD 库

    说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记.本篇介绍 VLD 源码的调试.同系列文章目录可见 <内存泄漏检测工具>目录 目录 说明 1. VLD 库源码调试步骤 1.1 ...

  7. 谁想和我一起做低代码平台!一个可以提升技术,让简历装x的项目

    序言 正如文章标题所述,最近一段时间低代码这个概念非常的火,但其实在不了解这个东西的时候觉得它真的很炫酷,从那时就萌生了做一个低代码平台的想法. 但随着时间的变化,现在市面上低代码各个业务方向的平台都 ...

  8. PropertyGrid实现文件选择项

    原来公司的一段代码,现在给朋友写的软件里也用上了,看样用处挺多,所以保存一下. 自定义属性类: using System; using System.Collections.Generic; usin ...

  9. 用vue+elementui写了一个图书管理系统

    用vue+elementui写了一个图书管理系统 转载自公号:java大师 目前是指一个纯前端的展示,后端还在开发中,前端接口是通过json-server模拟的 用到的技术栈 1.vue.js 2.e ...

  10. chrome 应用程序无法启动,因为应用程序的并行配置不正确

    win10系统谷歌浏览器无法启动,系统报错,如下图: 解决方案: 步骤1:进入chrome的安装路径C:\Program Files (x86)\Google\Chrome\... ...(找到自己的 ...