【MySQL入门】-- 认识MySQL存储引擎

这篇具有很好参考价值的文章主要介绍了【MySQL入门】-- 认识MySQL存储引擎。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.MySQL存储引擎有什么用?

2.MySQL的存储引擎有哪些?分别有什么特点?

3.存储引擎的优缺点

4.关于存储引擎的操作

5. 存储引擎的选择?

6.InnoDB和MyISAM区别?

7.官方文档


1.MySQL存储引擎有什么用?

MySQL之所以使用存储引擎,是因为存储引擎提供了不同的数据管理和存储方式,可以根据应用的需求选择合适的存储引擎来优化数据库的性能、一致性、安全性和可靠性。下面是一些具体的原因:

  1. 性能优化:不同的存储引擎对于不同类型的查询和操作有着各自的优势。选择合适的存储引擎可以根据应用需求提高数据库的查询速度、写入性能以及并发处理能力。

  2. 事务支持:一些存储引擎(如InnoDB)支持事务处理,可以确保数据的一致性和完整性。通过使用事务,可以将一系列操作当作一个逻辑单元进行提交或回滚,保证数据的正确性。

  3. 数据一致性与安全性:一些存储引擎实现了ACID(原子性、一致性、隔离性、持久性)特性,确保数据的一致性和安全性。通过将相关操作组合成事务,可以保证数据在多个并发访问下的完整性。

  4. 存储空间优化:不同的存储引擎采用不同的数据压缩和存储结构,可以节省存储空间。某些存储引擎支持数据的压缩,可以大幅度减小数据库占用的磁盘空间。

  5. 数据备份与恢复:一些存储引擎提供了在线备份和恢复机制,可以在备份数据的同时保持数据库的正常运行。这样可以降低备份对业务操作的影响,并提高数据库的可用性。

总之,使用存储引擎可以根据应用需求选择最合适的方式来组织和管理数据,从而提高数据库的性能、一致性、安全性和可靠性。不同的存储引擎具有不同的特点和功能,使用合适的存储引擎可以充分发挥MySQL的优势,提供更好的数据库解决方案。

2.MySQL的存储引擎有哪些?分别有什么特点?

MySQL存储引擎可以理解为数据库内部的一种组织和管理数据的方式,就好像是把书存放在书架上的不同方式一样。下面我用通俗易懂的话来介绍几种常见的MySQL存储引擎:

  1. MyISAM引擎:类似于传统的卡片盒,他把数据存储在独立的文件中,适合于读取频繁的场景。但是它不支持事务和并发操作,所以对于写入、修改和同时多个人访问的场景就不太适用了。

  2. InnoDB引擎:类似于图书馆的书架,它更适合处理复杂的数据库操作。它支持事务和并发操作,所以在高并发的环境下能够更好地保证数据的一致性和安全性。

  3. Memory引擎:就像是临时存储空间,数据保存在内存中,读写速度非常快。但是一旦重启数据库,数据就会丢失,所以适用于临时缓存和需要快速访问的数据。

  4. Archive引擎:像是把文件压缩成ZIP格式,这个引擎适用于数据归档和历史数据存储,可以大幅度减小磁盘空间的占用。

  5. CSV引擎:类似于Excel表格,数据以逗号分隔存储在文件中,适用于导入和导出数据。

每种存储引擎都有自己的特点和适用场景,选择合适的存储引擎可以提高数据库的性能和效率。当然,根据实际需求,也可以在同一个数据库中使用不同的存储引擎来处理不同类型的数据。

特点:

特点 InnoDB MyISAM Memory
存储限制 64TB
事务安全 支持 × ×
锁机制 行锁 表锁 表锁
B+tree索引 支持 支持 支持
Hash索引 × × 支持
全文索引 支持 支持 ×
空间使用 N/A
内存使用 中等
批量插入速度
支持外键 支持 × ×

3.存储引擎的优缺点

MySQL提供了多种存储引擎,每个存储引擎都有其独特的优点和缺点。以下是一些常见的MySQL存储引擎及其特点:

  1. InnoDB:

    • 优点:支持事务处理和行级锁,适合处理大量并发操作;具备崩溃恢复能力和数据完整性保护机制;支持外键约束和高性能的读操作。
    • 缺点:对于大量的写操作,性能相对较低;占用更多内存和磁盘空间。
  2. MyISAM:

    • 优点:适合用于读密集型应用,具有高速的插入和查询性能;占用较少的内存和磁盘空间。
    • 缺点:不支持事务处理和行级锁;不支持外键约束和崩溃恢复能力;易发生表级锁定。
  3. MEMORY(也称为 HEAP):

    • 优点:数据存储在内存中,读写速度非常快;适用于对临时数据进行快速操作。
    • 缺点:数据库重启后数据丢失;对于大量数据,需要足够的内存。
  4. Archive:

    • 优点:占用较少的磁盘空间,适合存储大量历史数据;压缩数据以实现更高的存储效率。
    • 缺点:只支持插入和查询操作,不支持更新和删除;不支持事务处理和索引。
  5. NDB Cluster(MySQL Cluster):

    • 优点:适用于高可用性和高性能的分布式环境;支持数据分片和并行处理;具备自动故障恢复和负载均衡机制。
    • 缺点:配置和管理较为复杂;需要额外的硬件和网络资源。

4.关于存储引擎的操作

  • 查看当前默认的存储引擎

    SHOW VARIABLES LIKE 'default_storage_engine';
    
  • 查看所有可用的存储引擎

    SHOW ENGINES;
    
  • 创建表时指定存储引擎

    CREATE TABLE table_name (
      column1 datatype,
      column2 datatype,
      ...
    ) ENGINE = engine_name;
    
  • 修改表的存储引擎

    ALTER TABLE table_name ENGINE = engine_name;
  • 批量修改数据库中所有表的存储引擎

    SELECT CONCAT('ALTER TABLE ', table_name, ' ENGINE=engine_name;')
    FROM information_schema.tables
    WHERE table_schema = 'database_name';
    
  • 切换并重建表的存储引擎

    ALTER TABLE table_name ENGINE = engine_name, ALGORITHM=COPY;
    
  • 查看存储引擎的状态和统计信息

    SHOW ENGINE engine_name STATUS;
    SHOW ENGINE engine_name MUTEX;
    SHOW ENGINE engine_name INNODB STATUS;
    
  • 修改默认的存储引擎
    修改MySQL配置文件(my.cnf或者my.ini),将default_storage_engine设置为所需的存储引擎。

5. 存储引擎的选择?

  • InnoDB:是MySQL的默认存储引擎,支持事务,外键。如果对事务的完整性有较高要求,且在并发条件下要求数据一致,数据除了插入和查询外,包含很多更新,删除操作,那么InnoDB存储引擎比较适合。
  • MyISAM:如果对于读和插入为主,很少的更新和删除操作,对于完整性和并发性要求不高,那么这个比较适合。
  • MEMORY:将所有的数据放在内存,访问速度快,通常用于临时表和缓存。它的缺点是对表大小有限制太大的表无法缓存在内存,且无法保证数据安全性。

6.InnoDB和MyISAM区别?

  1. 事务处理和锁定机制:

    • InnoDB支持事务处理,可以使用ACID(原子性、一致性、隔离性、持久性)特性保证数据的完整性和一致性。它还支持行级锁定,可以提供更好的并发处理能力。
    • MyISAM不支持事务处理,只支持表级锁定。这意味着在对一个表进行写操作时,其他会话无法对该表进行写操作。
  2. 数据完整性:

    • InnoDB支持外键约束,可以确保参照完整性,即通过外键关联的表之间的数据关系是有效的。
    • MyISAM不支持外键约束,不会强制执行参照完整性。
  3. 并发性能:

    • InnoDB在处理大量并发操作时具有良好的性能,它支持行级锁定,不会对整个表加锁,可以提高并发性能。
    • MyISAM在写入操作较多时性能较佳,因为它使用表级锁定,不需要处理复杂的锁定机制。
  4. 数据恢复和故障容错:

    • InnoDB具备崩溃恢复能力,可以在数据库崩溃后恢复数据,并保护数据的完整性。
    • MyISAM不具备崩溃恢复能力,如果数据库崩溃,则可能导致数据损坏或丢失。
  5. 全文索引:

    • InnoDB支持全文索引,可以进行高效的全文搜索。
    • MyISAM也支持全文索引,并且在这方面的性能较佳。
  6. 磁盘空间和缓存:

    • InnoDB占用更多的磁盘空间和内存,因为它需要存储事务日志和行级锁定信息等额外数据结构。
    • MyISAM占用较少的磁盘空间和内存,因为它没有像InnoDB那样的额外数据结构。

7.官方存储引擎文档

InnoDB 简介https://dev.mysql.com/doc/refman/8.0/en/innodb-introduction.htmlMyISAM 存储引擎https://dev.mysql.com/doc/refman/8.0/en/myisam-storage-engine.html文章来源地址https://www.toymoban.com/news/detail-489806.html

到了这里,关于【MySQL入门】-- 认识MySQL存储引擎的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL—存储引擎(下)

    ♥️ 作者:小刘在C站 ♥️ 个人主页: 小刘主页 ♥️ 每天分享云计算网络运维课堂笔记,努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 树高千尺,落叶归根人生不易,人间真情 前言 上一章讲了存储引擎,本章继续,从特点开始 目录 MySQL 1.存

    2024年02月07日
    浏览(61)
  • MySQL-存储引擎

    1、 指定存储引擎 2、 查看数据库支持的存储引擎 show   engines; 3、InnoDB引擎         1、高性能,可靠安全性的存储引擎         2、 有三个特性,                 事务,                 行级锁,                 外键,                 文件格

    2024年01月19日
    浏览(34)
  • MySQL 事务与存储引擎

    目录 一、MySQL事务的概念 二、事务的ACID特点 2.1 原子性 2.2 一致性 2.3 隔离性  2.4 持久性 2.5 事务之间的相互影响  三、Mysql及事物隔离级别 3.1 查询全局事务隔离级别  3.2 查询会话事务隔离级别   3.3 设置全局事务隔离级别   3.4 设置会话事务隔离级别   四、事务控制语

    2024年02月16日
    浏览(30)
  • MySQL—存储引擎(上)

    ♥️ 作者:小刘在C站 ♥️ 个人主页: 小刘主页 ♥️ 每天分享云计算网络运维课堂笔记,努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 树高千尺,落叶归根人生不易,人间真情 目录 1). 连接层 2). 服务层 3). 引擎层 4). 存储层 存储引擎介绍 1

    2024年02月07日
    浏览(28)
  • MySQL----事物与存储引擎

    事务是一种机制、一个操作序列,包含了一组数据库操作命令(增删改),并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行。 事务是一个不可分割的工作逻辑单元, 在数据库系统上执行并发操作时,事务是最

    2024年02月10日
    浏览(40)
  • MySQL——存储引擎

    MySQL数据库主要的存储引擎:        MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的 ISAM (Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,而且提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM不支持事务和行级锁,而且最大

    2024年02月09日
    浏览(26)
  • MySQL- 存储引擎

    连接层 最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于 TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程 池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以

    2024年02月04日
    浏览(32)
  • Mysql高级1-存储引擎

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

    2024年02月16日
    浏览(25)
  • MySQL-05.存储引擎

    为了方便管理,把 连接管理 , 查询缓存 , 语法解析 , 查询优化 这些不涉及真实数据存储的功能划分为 MySQL Server 的功能,把真实存取数据的功能划分为 存储引擎 的功能。所以在 MySQL Server 完成了查询优化后,只需按照生成的 执行计划 调用底层存储引擎提供的API,获取到

    2024年04月22日
    浏览(22)
  • mysql索引、事务、存储引擎

    索引的概念: 索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于C语言的链表通过指针指向数据记录的内存地址)。 使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问

    2024年02月10日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包