广告
返回顶部
首页 > 资讯 > 数据库 >MySQL之存储引擎使用及说明
  • 718
分享到

MySQL之存储引擎使用及说明

MySQL存储引擎存储引擎MySQL存储 2023-02-10 09:02:37 718人浏览 安东尼
摘要

目录一、Mysql存储引擎概述1.1 存储引擎1.2 mysql支持的存储引擎二、各种存储引擎的特性三、各种搜索引擎介绍四、存储引擎相关sql语句五、mysql的工作流程总结一、my

一、mysql存储引擎概述

1.1 存储引擎

MySQL中的数据用各种不同的技术存储在文件(或者内存)中。

这些技术中的每一种技术都使用不同的存储机制、索引技巧、定水平并且最终提供广泛的不同的功能和能力。

通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。

例如,如果研究大量的临时数据,你也许需要使用内存存储引擎。内存存储引擎能够在内存中存储所有的表格数据。

这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型)。

MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。

选择如何存储和检索你的数据的这种灵活性是MySQL为什么如此受欢迎的主要原因。其它数据库系统 (包括大多数商业选择)仅支持一种类型的数据存储 。

1.2 mysql支持的存储引擎

mysql5.6支持的存储引擎包括

  • InnoDB
  • MyISAM
  • MEMORY
  • CSV
  • BLACKHOLE
  • FEDERATED
  • MRG_MYISAM
  • ARCHive
  • PERFORMANCE_SCHEMA
  • 其中NDB和InnoDB提供事务安全表,其他存储引擎都是非事务安全表。

二、各种存储引擎的特性

  • 并发性:某些应用程序比其他应用程序具有很多的颗粒级锁定要求(如行级锁定)。
  • 事务支持:并非所有的应用程序都需要事务,但对的确需要事务的应用程序来说,有着定义良好的需求,如ACID兼容等。
  • 引用完整性:通过DDL定义的外键,服务器需要强制保持关联数据库的引用完整性。
  • 物理存储:它包括各种各样的事项,从表和索引的总的页大小,到存储数据所需的格式,到物理磁盘。
  • 索引支持:不同的应用程序倾向于采用不同的索引策略,每种存储引擎通常有自己的编制索引方法,但某些索引方法(如B-tree索引)对几乎所有的存储引擎来说是共同的。
  • 内存高速缓冲:与其他应用程序相比,不同的应用程序对某些内存高速缓冲策略的响应更好,因此,尽管某些内存高速缓冲对所有存储引擎来说是共同的(如用于用户连接的高速缓冲,MySQL的高速查询高速缓冲等),其他高速缓冲策略仅当使用特殊的存储引擎时才唯一定义。
  • 性能帮助:包括针对并行操作的多I/O线程,线程并发性,数据库检查点,成批插入处理等。
  • 其他目标特性:可能包括对地理空间操作的支持,对特定数据处理操作的安全限制等。

三、各种搜索引擎介绍

  • InnoDB:MySql 5.6 版本默认的存储引擎。InnoDB 是一个事务安全的存储引擎,它具备提交、回滚以及崩溃恢复的功能以保护用户数据。InnoDB 的行级别锁定以及 oracle 风格的一致性无锁读提升了它的多用户并发数以及性能。InnoDB 将用户数据存储在聚集索引中以减少基于主键的普通查询所带来的 I/O 开销。为了保证数据的完整性,InnoDB 还支持外键约束。
  • MyISAM:MyISAM既不支持事务、也不支持外键、其优势是访问速度快,但是表级别的锁定限制了它在读写负载方面的性能,因此它经常应用于只读或者以读为主的数据场景。
  • Memory:在内存中存储所有数据,应用于对非关键数据由快速查找的场景。Memory类型的表访问数据非常快,因为它的数据是存放在内存中的,并且默认使用HASH索引,但是一旦服务关闭,表中的数据就会丢失
  • BLACKHOLE:黑洞存储引擎,类似于 Unix 的 /dev/null,Archive 只接收但却并不保存数据。对这种引擎的表的查询常常返回一个空集。这种表可以应用于 DML 语句需要发送到从服务器,但主服务器并不会保留这种数据的备份的主从配置中。
  • CSV:它的表真的是以逗号分隔的文本文件。CSV 表允许你以 CSV 格式导入导出数据,以相同的读和写的格式和脚本和应用交互数据。由于 CSV 表没有索引,你最好是在普通操作中将数据放在 InnoDB 表里,只有在导入或导出阶段使用一下 CSV 表。
  • NDB:(又名 NDBCLUSTER)——这种集群数据引擎尤其适合于需要最高程度的正常运行时间和可用性的应用。注意:NDB 存储引擎在标准 MySql 5.6 版本里并不被支持。目前能够支持
  • MySql 集群的版本有:基于 MySql 5.1 的 MySQL Cluster NDB 7.1;基于 MySql 5.5 的 MySQL Cluster NDB 7.2;基于 MySql 5.6 的 MySQL Cluster NDB 7.3。同样基于 MySql 5.6 的 MySQL Cluster NDB 7.4 目前正处于研发阶段。
  • Merge:允许 MySql DBA 或开发者将一系列相同的 MyISAM 表进行分组,并把它们作为一个对象进行引用。适用于超大规模数据场景,如数据仓库
  • Federated:提供了从多个物理机上联接不同的 MySql 服务器来创建一个逻辑数据库的能力。适用于分布式或者数据市场的场景。
  • Example:这种存储引擎用以保存阐明如何开始写新的存储引擎的 MySql 源码的例子。它主要针对于有兴趣的开发人员。这种存储引擎就是一个啥事也不做的 “存根”。你可以使用这种引擎创建表,但是你无法向其保存任何数据,也无法从它们检索任何索引。

四、存储引擎相关sql语句

# 查看当前的默认存储引擎:

mysql> show variables like "default_storage_engine";

# 查询当前数据库支持的存储引擎

mysql> show engines \G;
mysql> create table ai(id bigint(12),name varchar(200)) ENGINE=MyISAM; 

mysql> create table country(id int(4),cname varchar(50)) ENGINE=InnoDB;

# 也可以使用alter table语句,修改一个已经存在的表的存储引擎。

mysql> alter table ai engine = innodb;
# my.ini文件
[mysqld]
default-storage-engine=INNODB

五、mysql的工作流程

在这里插入图片描述

MySQL架构总共四层,在上图中以虚线作为划分。

  • 最上层的服务并不是MySQL独有的,大多数给予网络的客户端/服务器的工具或者服务都有类似的架构。比如:连接处理、授权认证、安全等。
  • 第二层的架构包括大多数的MySQL的核心服务。包括:查询解析、分析、优化缓存以及所有的内置函数(例如:日期、时间、数学和加密函数)。同时,所有的跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。
  • 第三层包含了存储引擎。存储引擎负责MySQL中数据的存储和提取。服务器通过api和存储引擎进行通信。这些接口屏蔽了不同存储引擎之间的差异,使得这些差异对上层的查询过程透明化。存储引擎API包含十几个底层函数,用于执行“开始一个事务”等操作。但存储引擎一般不会去解析SQL(InnoDB会解析外键定义,因为其本身没有实现该功能),不同存储引擎之间也不会相互通信,而只是简单的响应上层的服务器请求。
  • 第四层包含了文件系统,所有的表结构和数据以及用户操作的日志最终还是以文件的形式存储在硬盘上。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL之存储引擎使用及说明

本文链接: https://www.lsjlt.com/news/195460.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL之存储引擎使用及说明
    目录一、mysql存储引擎概述1.1 存储引擎1.2 mysql支持的存储引擎二、各种存储引擎的特性三、各种搜索引擎介绍四、存储引擎相关sql语句五、mysql的工作流程总结一、my...
    99+
    2023-02-10
    MySQL存储引擎 存储引擎 MySQL存储
  • MySQL的存储引擎与日志说明
    MySQL的存储引擎与日志说明   1.1 存储引擎的介绍   1.1.1 文件系统存储   文件系统:操作系统组织和存取数据的一种机制。文件系统是一种软件。 ...
    99+
    2022-11-30
    mysql 存储 引擎
  • MySQL之存储引擎
    Storage Engine是指表类型,也即在表创建时指明其使用的存储引擎,同一库中不同表可以使用不同的存储引擎,但建议要使用同一种存储引擎 MySQL体系结构 存储引擎 In...
    99+
    2022-10-18
  • MySQL存储引擎的介绍及使用
    本篇内容介绍了“MySQL存储引擎的介绍及使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、MyISAM存储引擎缺点:不支持事务最小粒度...
    99+
    2023-06-20
  • MySQL系列之七 MySQL存储引擎
    一、MyISAM存储引擎 缺点: 不支持事务 最小粒度锁:表级 读写相互阻塞,写入不能读,读时不能写 不支持MVCC(支持多版本并发控制机制) ...
    99+
    2022-11-12
  • 基于MySQL中存储引擎与日志说明的示例分析
    这篇文章主要介绍基于MySQL中存储引擎与日志说明的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.1 存储引擎的介绍1.1.1 文件系统存储文件系统:操作系统组织和存取数...
    99+
    2022-10-18
  • MySQL常用存储引擎及特点
    下文主要给大家带来MySQL常用存储引擎及特点,希望这些内容能够带给大家实际用处,这也是我编辑MySQL常用存储引擎及特点这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。    ...
    99+
    2022-10-18
  • Mysql Innodb存储引擎之索引与算法
    目录一、概述二、数据结构与算法1、二分查找2、二叉查找树和平衡二叉树1)二叉查找树2)平衡二叉树三、B+树1、B+树完整定义2、关于 M 和 L的选定案例四、B+树索引1、聚集索引2...
    99+
    2022-11-13
  • MySQL存储过程参数的用法及说明
    目录mysql存储过程的参数输入参数输出参数输入输出参数(INOUT)MySQL存储过程的参数 MySQL存储过程的参数共有三种: INOUT INOUT 输入参数 输入参数(IN):在调用存储过程中传递数据给...
    99+
    2022-08-17
    MySQL存储 存储过程参数 MySQL参数
  • #MySQL# INNODB存储引擎之插入缓冲
    一 前言     在 mysql的insert操作中,涉及到的需要insert 的 page有聚簇索引page,唯一索引page,以及非唯一索引page 。正常情况下, 对于 ...
    99+
    2022-10-18
  • MySQL之FIND_IN_SET()的用法及说明
    目录一、语法二、用法三、用途举个例子一举个例子二总结一、语法 FIND_IN_SET(str,strlist) str:要查询的字符串strList:一个被,号分隔开的字符串函数是返回strList中str所在的位置索引...
    99+
    2023-01-06
    MySQLFIND_IN_SET() FIND_IN_SET()的用法 MySQLFIND_IN_SET用法
  • MySql存储引擎的作用
    目录1. 存储引擎是什么2. 如何给表添加指定存储引擎3. mysql支持那些存储引擎4. mysql常用存储引擎的介绍1. MyISAM存储引擎2. InnoDB存储引擎3. MEMORY存储引擎1. 存储引擎是什么 ...
    99+
    2022-09-16
  • 数据库学习之九:mysql 存储引擎
    九、mysql 存储引擎 1、课程大纲 存储引擎的介绍 mysql中的存储引擎分类 mysql存储引擎设置 mysql,innodb引擎存储结构 mysql中的事物 mysql中的锁 2、mysql存储引擎介绍 mys...
    99+
    2014-05-09
    数据库学习之九:mysql 存储引擎
  • Mysql性能调优之max_allowed_packet使用及说明
    目录mysql max_allowed_packet使用max_allowed_packet是什么?什么情况下遇到?解决办法?写入Mysql报错超出max_allowed_packet查看当前配置也可以用select查看...
    99+
    2022-11-23
    Mysql性能调优 Mysql max_allowed_packet 使用max_allowed_packet
  • 【MySQL系列】- 常用MySQL存储引擎
    【MySQL系列】- 常用MySQL存储引擎 数据库存储引擎是数据库底层软件组织,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引机制、锁定水平等功能。...
    99+
    2023-09-12
    mysql 数据库 sql
  • Mysql中存储引擎的区别及比较
    MyISAM存储引擎 MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事务。 MyISAM主要特性有: 大...
    99+
    2022-05-28
    Mysql 存储引擎 引擎的区别
  • MySQL存储引擎分类及操作介绍
    不知道大家之前对类似MySQL存储引擎分类及操作的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完MySQL存储引擎分类及操作你一定会有所收获的。 MySQ...
    99+
    2022-10-18
  • 如何学习MySQL约束及存储引擎
    这期内容当中小编将会给大家带来有关如何学习MySQL约束及存储引擎,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. mysql约束# ### char varchar&nb...
    99+
    2023-06-28
  • MySQL之存储引擎、基本数据类型及约束条件
    一、存储引擎 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数...
    99+
    2017-05-24
    MySQL之存储引擎 基本数据类型及约束条件
  • Mysql中如何使用MERGE存储引擎
    本篇文章为大家展示了Mysql中如何使用MERGE存储引擎,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MERGE 存储引擎把一组 MyISAM 数据表当做一个逻辑...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作