码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MySQL:存储引擎


    前言

    首先来回顾建表的过程,建表需要的内容有三个:表的结构、数据和索引。存储引擎直接影响这些内容的存储方式。

    文章目录

    • 前言
    • 常见存储引擎
    • 为什么InnoDB存储引擎下建表时,没有加主键也会自动生成一个主键,MyISAM不行?
    • 各种存储引擎的区别

    常见存储引擎

    1. MyISAM :不支持事务、也不支持外键,索引采用非聚集索引,其优势是访问的速度快,对事务完整性没有要求,以 SELECT、INSERT 为主的应用基本上都可以使用这个存储引擎来创建表。
      MyISAM的表在磁盘上存储成 3 个文件,其文件名都和表名相同,扩展名分别是:
      .frm(存储表定义)
      .MYD(MYData,存储数据)
      .MYI (MYIndex,存储索引)

    2. InnoDB 存储引擎 提供了具有提交、回滚和崩溃恢复能力的事务安全,支持自动增长列,外键等功能,索引采用聚集索引,索引和数据存储在同一个文件,所以InnoDB的表在磁盘上有两个文件,其文件名
      都和表名相同,扩展名分别是:
      .frm(存储表的定义)
      .ibd(存储数据和索引)

    3. MEMORY 存储引擎使用存在内存中的内容来创建表。每个MEMORY 表实际只对应一个磁盘文件,格式是.frm(表结构定义)。MEMORY 类型的表访问非常快,因为它的数据是放在内存中的,并且默认使用 HASH 索引(不适合做范围查询),但是一旦服务关闭,表中的数据就会丢失掉。

    为什么InnoDB存储引擎下建表时,没有加主键也会自动生成一个主键,MyISAM不行?

    这个在上面的概念里其实也说到,因为文件不同。

    可以使用 show engines;命令来查看自己数据库的存储引擎:
    在这里插入图片描述

    进入 var/lib/mysql/mysql下,红框表示 MyISAM存储引擎的文件,索引和数据是分开的,蓝框表示InnoDB存储引擎的数据跟索引一起存放的。

    在这里插入图片描述

    各种存储引擎的区别

    在这里插入图片描述

    1. 锁机制:表示数据库在并发请求访问的时候,多个事务在操作时,并发操作的粒度。
    2. B-树索引和哈希索引:主要是加速SQL的查询速度。
    3. 外键:子表的字段依赖父表的主键,设置两张表的依赖关系。
    4. 事务:多个SQL语句,保证它们共同执行的原子操作,要么成功,要么失败,不能只成功一部分,失败需要回滚事务。
    5. 索引缓存和数据缓存:和MySQL Server的查询缓存相关,在没有对数据和索引做修改之前,重复查询可以不用进行磁盘I/O(数据库的性能提升,目的是为了减少磁盘I/O操作来提升数据库访问效率),读取上一次内存中查询的缓存就可以了。
  • 相关阅读:
    11.23 - 每日一题 - 408
    数据结构·分糖果
    Java 14 中, 对 NullPointerException 打印异常信息的改进增强
    misc类设备与蜂鸣器驱动==Linux驱动开发6
    红日ATT&CK系列靶场(一)
    DEM格式转换:转换NSDTF-DEM国标数据格式为通用格式,使用ArcGIS工具转换NSDTF-DEM国标.dem文件为通用.tif格式。
    浏览器输入URL 到页面加载过程?
    CSAPP第四章:Y86 SEQ(指令顺序执行)的硬件结构
    2022-08-06 第四小组 修身课 学习笔记(every day)
    Azure 机器学习 - 使用 ONNX 对来自 AutoML 的计算机视觉模型进行预测
  • 原文地址:https://blog.csdn.net/m0_56257585/article/details/126178597
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号