MySQL45讲 -- 丁奇
文章平均质量分 92
从原理到实战,丁奇带你搞懂 MySQL。
TomLazy
及时当勉励 岁月不待人
展开
-
【MySQL】007 -- 事务的隔离:可重复读与读提交的数据版本可见性
InnoDB的行数据有多个版本,每个数据版本有自己的row trx_id,每个事务或者语句有自己的一致性视图。普通查询语句是一致性读,一致性读会根据row trx_id和一致性视图确定数据版本的可见性。对于可重复读,查询只承认在事务启动前就已经提交完成的数据;对于读提交,查询只承认在语句启动前就已经提交完成的数据。原创 2023-03-21 20:25:02 · 358 阅读 · 0 评论 -
【MySQL】006 -- MySQL的锁:全局锁、表锁和行锁
MySQL的锁:全局锁、表锁和行锁。数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。锁就是用来实现这些访问规则的重要数据结构。根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。原创 2023-03-20 17:02:50 · 663 阅读 · 0 评论 -
【MySQL】005 -- 深入浅出索引(下)
深入浅出索引下,内容包括:覆盖索引、前缀索引、索引下推,同时在使用数据库的时候,尤其是在设计表结构时,要以减少资源消耗作为目标。原创 2023-03-15 17:52:48 · 227 阅读 · 0 评论 -
【MySQL】004 -- 深入浅出索引(上)
在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。一句话简单来说,索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。对于数据库的表而言,索引其实就是它的“目录”。原创 2023-03-15 16:15:54 · 239 阅读 · 0 评论 -
【MySQL】003 -- 事务隔离:为什么你改了我还看不见
简单来说,事务就是要保证一组数据库操作,要么全部成功,要么全部失败。当数据库上有多个事务同时执行的时候,就可能出现脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read)的问题,为了解决这些问题,就有了“隔离级别”的概念。原创 2023-03-14 20:56:36 · 262 阅读 · 1 评论 -
【MySQL】002 -- 日志系统:一条SQL更新语句是如何执行的
与查询流程不一样的是,除了查询流程之外,更新流程还涉及到了两个重要的日志模块【redo log(重做日志)】以及【 binlog(归档日志)】。redo log是物理日志,记录的是“在某个数据页上做了什么修改”;binlog是逻辑日志,记录的是这个语句的原始逻辑,比如“给ID=2这一行的c字段加1 ”。原创 2023-03-14 17:04:41 · 195 阅读 · 0 评论 -
【MySQL】001 -- 基础架构:一条SQL查询语句是如何执行的
大体来说,MySQL可以分为Server层和存储引擎层两部分。Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能;而存储引擎层负责数据的存储和提取。原创 2023-03-13 22:46:42 · 87 阅读 · 0 评论