mysql

事务中的隔离性是如何保证的呢?(解释下mvcc)

mvcc就是多版本并发控制。它是维护一个数据的多版本,使得读写操作没有冲突,它的底层实现主要分为了三个部分,第一个是隐藏字段,第二个是undo log 日志 ,第三个是 readview 读试图

隐藏字段是指:在mysql中给每个表都设置了隐藏字段 ,有一个是trx_id(事务id),记录每一次操作的事务id,是自增的;另一个字段是roll_pointer(回滚指针),指向上一个版本的事务版本记录地址

undo_log主要的作用是记录回滚日志,存储老版本的数据,在内部会形成一个版本链,在多个事务并行操作某一行记录,记录不同事务修改数据的版本,通过roll pointer指针形成一个链表

readview解决的是一个事务查询选择版本的问题,在内部定义了一些匹配规则和当前的一些事务id判断该访问哪个版本的数据,不同的隔离级别快照读是不一样的,最终的访问结果不一样。如果是RC隔离级别,每一次执快照都会生成readview 如果是rr隔离级别 仅在事务中第一次执行快照都时生成readview ,后续复用。

主从同步的原理

mysql主从复制的核心是二进制日志,二进制日志里面记录了所有的DDL语句和DML语句

当Master 主库在事务提交的时候,会把数据变更记录在二进制日志文件Binlog中。

从库读取主库的二进制日志文件Binlog,写入到从库的中级日志Realay Lo。

Slave重做中继日志中的事件,将改变反映它自己的数据

相关推荐
lsz15259014 小时前
Citrix虚拟化实战:数据库虚拟机扩容流程图文简解
数据库·数据库扩容·citrix虚拟化·平台数据库扩容·虚拟机快照
weixin_7275356215 小时前
mysql高频八股问答200
sql·mysql
云浪15 小时前
从 0 到实战:掌握向量数据库 Milvus,构建 AI 应用的核心能力
javascript·数据库·人工智能
tachibana215 小时前
知识库文档上传接口
数据库·人工智能·大模型·llm
可乐ea15 小时前
Tool Calling 工具调用:让 Agent 查询数据库、调用接口和执行任务
数据库·prompt·agent·tool
Yan_chen66616 小时前
CTFHub SQL 布尔盲注实战攻略
数据库·sql·实战·布尔盲注·ctfhub闯关
杨_晨16 小时前
LLM输出康熙部首冲突
数据库·python·mysql·ai
爱看报的猿16 小时前
【金仓数据库征文】MySQL至金仓KES异构数据库平滑迁移与性能深度调优实战
数据库·数据仓库·mysql·金仓数据库征文
程序猿的学习16 小时前
同一个 Key 写入两次,StarRocks 会留下什么?四种表模型讲明白了
数据库
朱峥嵘(朱髯)16 小时前
数据库如何根据全表 NDV 估算子集的 NDV
数据库·算法