MySQL
文章平均质量分 84
物与我皆无尽也
好好学习,天天向上
展开
-
MySQL MVCC
总结自说的都是并发读取的问题,最简单的方式就是给记录加一把锁,不管是更新、读取记录都需要竞争到这把锁之后才能操作。但这种方式的并发性能可想而知会有多么低。于是 InnoDB 就设计了MVCC来解决并发读取的问题,MVCC就是多版本并发控制(在RCRR这两种隔离级别下执行SELECT查询时,通过访问记录的版本链,而不需要加锁,这样使得不同事务的读-写操作可以并发执行,从而提升数据库的性能。MVCC需要依赖undo log版本链:对于使用RU。原创 2024-07-10 23:10:06 · 997 阅读 · 0 评论 -
MySQL Undo Log
总结自undo log称为撤销日志或回滚日志。在一个事务中进行增删改操作时,都会记录对应的 undo log。在对数据库进行修改前,会先记录对应的 undo log,然后在事务失败或回滚的时候,就可以用这些 undo log 来将数据回滚到修改之前的样子。InnoDB 在内存维护了一个全局变量来表示,每当要分配一个事务ID时,就获取这个变量值,然后把这个变量自增1。在行记录格式中DB_ROW_ID:如果没有为表显式的定义主键,并且表中也没有定义唯一索引,那么InnoDB会自动为表添加一个row_id。原创 2024-07-10 23:07:29 · 1068 阅读 · 0 评论 -
MySQL Buffer Pool
LRU链表分为冷、热数据区域,前63%为热数据区域,后37%为冷数据区域,加载缓存页先放到冷数据区域头部。冷数据区域的缓存页第一次访问超过1秒后,再次访问时才会被移动到热数据区域头部。热数据区域中,只有后3/4的缓存页被访问才会移到头部,前1/4被访问到不会移动。淘汰数据优先淘汰冷数据区域尾部的缓存页。原创 2024-07-08 19:28:21 · 1147 阅读 · 0 评论 -
Ubuntu 22.04 MySQL安装并设置远程访问
Ubuntu 22.04 LTS环境下。原创 2024-06-25 18:39:42 · 471 阅读 · 0 评论 -
Select语句执行过程
执行一条 SQL 查询语句,期间发生了什么?连接器:建立连接,管理连接、校验用户身份;查询缓存:查询语句如果命中查询缓存则直接返回,否则继续往下执行。MySQL 8.0 已删除该模块;解析 SQL,通过解析器对 SQL 查询语句进行词法分析、语法分析,然后构建语法树,方便后续模块读取表名、字段、语句类型;执行 SQL:执行 SQL 共有三个阶段:预处理阶段:检查表或字段是否存在;将select *中的符号扩展为表上的所有列。优化阶段:基于查询成本的考虑, 选择查询成本最小的执行计划;原创 2024-06-18 19:52:19 · 797 阅读 · 0 评论