02 2024 档案
发表于 2024-02-25 11:09阅读:19评论:0推荐:0
摘要:数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。 全局锁 对整个数据库实例加锁,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事
阅读全文 »
发表于 2024-02-20 20:21阅读:61评论:0推荐:0
摘要:内存快照:指内存中的数据在某一个时刻的状态以文件的形式写到磁盘上,类似于照片。 快照文件就称为 RDB 文件,其中,RDB 就是 Redis DataBase 的缩写。 两个关键问题: 对哪些数据做快照?关系到快照的执行效率问题; 做快照时,数据还能被增删改吗?关系到 Redis 是否被阻塞,能否同
阅读全文 »
发表于 2024-02-20 18:50阅读:64评论:0推荐:0
摘要:Redis 的持久化主要有两大机制,即 AOF(Append Only File)日志和 RDB 快照。 Redis 用于避免数据丢失的 AOF 方法 数据库的写前日志(Write Ahead Log, WAL),在实际写数据前,先把修改的数据记到日志文件中,以便故障时进行恢复。 AOF 日志正好相
阅读全文 »
发表于 2024-02-20 15:41阅读:46评论:0推荐:0
摘要:Redis 是单线程,主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这是 Redis 对外提供键值存储服务的主要流程。 但 Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。 Redis 使用单线程的原因 系统中通常会存在被多线程同时访问
阅读全文 »
发表于 2024-02-20 14:38阅读:57评论:0推荐:0
摘要:索引:为了提高数据查询的效率,就像书的目录一样。 索引的常见模型 哈希表 图中,User2 和 User4 根据身份证号算出来的值都是 N,后面还跟了一个链表。假设,这时候你要查 ID_card_n2 对应的名字是什么,处理步骤就是:首先,将 ID_card_n2 通过哈希函数算出 N;然后,按顺序
阅读全文 »
发表于 2024-02-20 13:32阅读:44评论:0推荐:0
摘要:03 事务隔离 事务:保证一组数据库操作,要么全部成功,要么全部失败。在 MySQL 中,事务支持是在引擎层实现的。 事务ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性)。 建议你尽量不要使用长事务。**** 读未提交
阅读全文 »
发表于 2024-02-19 18:42阅读:12评论:0推荐:0
摘要:02 数据结构 Redis接收到一个键值对操作后,能以微秒级别的速度找到数据,并快速完成操作。 因为一方面,这是因为它是内存数据库,所有操作都在内存上完成,内存的访问速度本身就很快;另一方面,这要归功于它的数据结构。 redis的数据结构 String 类型的底层实现只有一种数据结构,也就是简单动态
阅读全文 »
发表于 2024-02-19 16:22阅读:41评论:0推荐:0
摘要:01 基本框架:一个键值数据库包含什么 前言:对蒋德钧老师的《Redis 核心技术与实战》课程的学习记录。 构造简单的键值数据库 SimpleKV 考虑里面可以存什么样的数据,对数据可以做什么样的操作,也就是数据模型和操作接口。 对于键值数据库而言,基本的数据模型是 key-value 模型。 Re
阅读全文 »
发表于 2024-02-19 15:39阅读:72评论:0推荐:0
摘要:02 SQL更新语句执行流程 与查询流程不一样的是,更新流程还涉及两个重要的日志模块。 redo log(重做日志)和 binlog(归档日志) redo log 物理日志 binlog 逻辑日志 redo log WAL 的全称是 Write-Ahead Logging。 关键点就是先写日
阅读全文 »
发表于 2024-02-19 14:24阅读:83评论:0推荐:0
摘要:前言: 记录对林晓斌老师的《MySQL 实战 45 讲》课程学习路程。 01 MySQL的基本架构 MySQL的逻辑架构图 MySQL 分为 Server 层和存储引擎层两部分。 Server 层 功能:实现所有 跨存储引擎 的功能,比如存储过程、触发器、视图等。 连接器、查询缓存、分析器、优化器、
阅读全文 »