MySQL基本原理和使用技巧

本文深入探讨MySQL的整体结构,包括MyISAM和InnoDB的区别,查询语句执行过程,以及数据结构如二叉树、2-3树、红黑树和B树在MySQL中的应用。此外,还涉及MySQL的隔离级别、锁机制和实用技巧,如SQL查询优化、自定义索引和避免重复记录的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文是我在大半年前在前公司做团队分享时的一个文档,写得比较挫,当时分享讲了2个小时,自己感觉讲得还可以。最近前同事跑来问我还有没有文档保存,翻了旧电脑和硬盘才找出来,于是就想着分享一下。


一、MySQL整体结构

  • 服务器层(负责客户端连接、授权认证、安全、线程管理等)

  • 核心层(缓存查询、解析器、查询优化器、函数)(存储过程,触发器,视图)

  • 存储引擎层(MyISAM、InnoDB、Memory、Merge,负责数据的存储和提取)
    在这里插入图片描述

数据库的全球排名情况
https://db-engines.com/en/ranking

本次讲的大多是INNODB

mysql太多内容可讲,每个点都一次分享都讲不完。
没有理解内核实现时的无法知道mysql怎么工作,只知道存储。
带大家从外而内看透MySQL。
这个整体结构类似于springMvc中的controller service dao

  • Connectors:不同语言中与 SQL 的交互
  • Management Serveices & Utilities:系统管理和控制工具
  • Connection Pool:连接池
  • SQL Interface:SQL 接口(提供给存储引擎层,类似于面向接口编程,SPI等)
  • Parser:解析器
  • Optimizer:查询优化器
  • Cache 和 Buffer:查询缓存
  • Engine:存储引擎

MyISAM和INNODB的区别

1、Innodb最大的特点: 支持事务处理与外键和行级锁
2、索引实现方式不同,MyISAM的索引和数据是分开的,并且索引是有压缩的,内存使用率就对应提高了不少InnoDB 中不保存表的具体行数,也就是说,执行select count() from table
3、对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引
4、DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
5、InnoDB 中不保存表的具体行数,也就是说,执行select count(
) from table

关于MyISAM和InnoDB的其他相关
1、读多写少的,MyISAM的读性能是比Innodb强不少
2、MySQL 4.0以上 myisam引擎就支持了full text search 全文搜索
3、mysql版本号已经大于5.6.4了也就支持了innodb的全文搜索

一条查询语句的执行过程

在这里插入图片描述

二、MySQL的数据结构和原理

Questions

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值