MySQL
文章平均质量分 66
深入学习MySQL,体系化总结知识点。
持续更新中...
小超人的知识体系
目标在2022年读完十本书,总结架构师的知识体系。
展开
-
10.1 MySQL文件——二进制日志(bin log)
bin log只会记录数据库更改的所有操作,即便操作没有对数据库产生变化也会记录。bin log主要有以下三个作用:恢复:通过bin log可以将数据恢复到过去的某个时刻。 复制:通过复制和执行bin log使一台远程的MySQL数据库与令一台MySQL数据库进行实时同步。 审计:可以通过bin log中的信息进行审计,判断是否有对数据库进行注入的攻击。bin log默认是不开启的,需要手动指定参数启动。在my.inf主配置文件中直接添加三行即可开启bin log://第一个参数是打原创 2022-05-04 21:34:18 · 1208 阅读 · 0 评论 -
10.MySQL文件
参数文件当MySQL实例启动时,数据库会先读取参数文件用来寻找数据库的各种文件所在位置及指定初始化参数。在Windows系统中文件名为my.ini,Linux系统中文件名为my.cnf。MySQL数据库中的参数可以分为两类:动态参数、静态参数。动态参数可以在MySQL实例运行中进行更改,静态参数在整个实例生命周期内不能进行修改。通过SET命令对动态参数进行修改,语法如下:SET| [global | session] system_var_name = expr| [@@glob原创 2022-05-04 21:30:58 · 912 阅读 · 0 评论 -
08.InnoDB引擎之-异步IO、刷新邻接页
参考文章:《MySQL技术内幕:InnoDB存储引擎》异步IO为了提高磁盘操作性能,InnoDB存储引擎采用异步IO(AIO)的方式来处理磁盘操作,一条查询的SQL语句可能需要扫描多个索引页,也就是需要进行多次IO操作,可以一次发送多个IO操作等待结果进行合并,这就是AIO。同时还可以将判断数据页如果是连续的,会将多个IO合并成一个IO,这样就可以提高IOPS的性能。# 可以通过配置来开启和关闭 aioshow variables like "innodb_use_native_ai.原创 2022-05-02 10:09:17 · 290 阅读 · 0 评论 -
07.InnoDB引擎之-自适应哈希索引
参考文章:《MySQL技术内幕:InnoDB存储引擎》哈希是一种非常快的查找方法,在一般情况下这种查找的时间复杂度为O(1),而B+树的查找次数取决于B+树的高度。InnoDB存储引擎会监控表上各索引的查询,如果检测到建立哈希索引可以带来速度的提升,则建立哈希索引,称之为自适应哈希索引。自适应哈希索引是通过缓冲池的B+树页构造而来的,索引建立的速度很快。 InnoDB存储引擎会自动根据访问频率和模式来自动地为某些热点页建立哈希索引。建立哈希索引需要满足以下要求:对页的连续访问模式必须.原创 2022-05-02 10:06:32 · 488 阅读 · 0 评论 -
06.InnoDB引擎之-两次写机制原理(double write)
参考文章:基于Redo Log和Undo Log的MySQL崩溃恢复流程 MySQL的Double Write并不难理解 答疑文章(一):日志和索引相关问题 《MySQL技术内幕:InnoDB存储引擎》作用double write(两次写)使数据页更可靠。当InnoDB存储引擎正在向磁盘写入数据页时(16KB的数据页只写入了前4KB),这时发生宕机,这种情况称为部分写失效(partial page write)。如果没有double write(两次写)机制,那么会造成数据丢失的情况。.原创 2022-05-01 14:46:08 · 2103 阅读 · 1 评论 -
05.InnoDB引擎之-插入缓冲
什么是插入缓冲(Insert Buffer)?一般情况下应用程序中主键是唯一且自增的,数据是按照主键递增的顺序进行插入的,所以插入聚集索引一般都是顺序的,不需要磁盘的随机读取。对于这种插入操作,速度是非常快的。如果主键是UUID这种非自增的方式,那么插入方式和辅助索引一样都是随机的。辅助索引是非顺序的插入,需要离散地访问辅助索引页,由于随机读取磁盘所以会导致插入性能的下降。为了解决上述问题,InnoDB存储引擎设计了插入缓冲(Insert Buffer)。辅助索引的插入操作,会先判断插入的辅助索原创 2022-04-30 11:43:57 · 615 阅读 · 0 评论 -
04.CheckPoint机制详解
概述CheckPoint主要的作用是将缓冲池中的脏页刷新到磁盘,同时解决了以下三个问题:缩短数据库的恢复时间;当数据库发生宕机时,不需要重做所有的日志,只需要对CheckPoint之后的重做日志进行恢复,从而大大缩短恢复的时间。缓冲池不够用时,将脏页刷新到磁盘;当缓冲池不够用时,根据LRU算法删除最近最少使用的页,如果该页为脏页,那么会强制执行CheckPoint,将脏页刷新到磁盘。重做日志不够用时,刷新脏页;重做日志空间是循环使用的,并不能无限增大。当重做日志中的脏页都被刷新到磁盘时原创 2022-04-25 23:14:09 · 1809 阅读 · 0 评论 -
03.InnoDB体系架构
InnoDB体系架构InnoDB中主要包含后台线程和内存,其中:后台线程的作用是负责刷新内存中的数据,同时保证数据库发生异常时可以回滚到正常运行状态。 内存的作用是用于缓存磁盘上的数据便于读取。后台线程Master Thread将缓冲池中的数据异步刷新到磁盘中,保证数据的一致性,包括脏页的刷新、合并插入缓冲、undo页的回收。IO Thread负责AIO请求的回调处理,共有4个IO Thread分别是write、read、insert buffer和log Thread。原创 2022-04-22 22:05:15 · 675 阅读 · 0 评论 -
02.MySQL执行过程
执行过程:MySQL实例与客户端通过TCP建立连接 检验客户端的IP、用户名密码是否符合条件 查询该用户的所有权限,后续所有连接中的权限校验都依赖于此时读到的权限 每个数据库连接会对应一个线程 通过SQL接口接收SQL语句 通过解析器对SQL语句进行解析和语法校验 校验通过后,通过优化器选择索引和选择最后的执行方案 通过执行器校验表是否有操作权限,如果有权限则通过存储引擎的接口进行增删改查 InnoDB为了提高性能,增删改都是在内存中完成的,所谓的内存就是上图中的buffer p...原创 2022-04-22 21:17:04 · 819 阅读 · 0 评论 -
01.MySQL基本架构
本文参考极客时间专栏 MySQL45讲基本架构图MySQL主要分为Server层和存储引擎层两部分。Server层包括连接器、查询缓存、分析器、优化器、执行器,涵盖MySQL的大多数核心服务功能,并且包含所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。存储引擎层负责数据的存储和提取。支持InnoDB、MyISAM、Memory等多个存储引擎。MySQL从5.5.5版本开始成为默认存储引擎。连接器客户端与服务端.原创 2022-04-22 21:13:32 · 599 阅读 · 0 评论