MySQL 数据目录
MySQL 数据目录结构 MySQL 服务器程序在启动时会到文件系统的某个目录下加载一些文件,之后在运行过程中产生的数据也都会存储到这个目录下的某些文件中,这个目录就称为数据目录,它对应一个系统变量 datadir: 可以看到,我电脑上的 MySQL 数据目录为 /Users/luyee/apps/
如何更好地使用 InnoDB 索引
索引的代价 我们已经知道使用索引可以加速我们对表中数据的查找过程,但是索引并不是创建得越多越好,而要要遵循一定的规则来创建。 具体来说,创建和维护索引会有空间和时间上的代价: (1) 空间代价 每个索引都对应一棵 B+ 树,对于记录数很大的表,每多创建一个索引,就会多占用很大的一块空间。 (2) 时
InnoDB B+ 树索引
InnoDB 索引 使用索引,可以帮助我们更快地在表中查找到想要的数据。我们通过这篇文章来学习下 InnoDB 的索引,下面对索引的介绍都将围绕这张表展开: create table index_demo ( c1 int, c2 int, c3 char(1),
数组
其实我们最常见的就是数组相关的问题,如: 排序:选择排序、插入排序、归并排序、快速排序等 查找:二分查找法 数据结构:堆、栈、队列等 LeetCode704. 二分查找 二分查找用于在有序数组中查找目标值: class Solution { public static int binaryS
InnoDB 数据页结构
InnoDB 数据页类型 页是 InnoDB 管理存储空间的基本单元,默认大小为 16KB。 注意:这 16KB 是连续的存储空间。 在 InnoDB 中有很多种类型的页,如下表所示:
InnoDB 行格式(row_format)
InnoDB 行格式类型 InnoDB 表中的一行行数据被称为记录,这些记录在磁盘上的存储形式被称为行格式(row_format)。 从 MySQL 5.7 开始,InnoDB 有 4 种行格式: 1. REDUNDANT:最古老的行格式,比较浪费空间。 2. COMPACT:MySQL 5.1 默
MySQL 索引的底层数据结构
索引是用来高效获取数据的排好序的数据结构。 假设我们有一张user表,要在age字段上建索引: id<
Redis 开发规范
键值设计 key名设计 (1)【强制】不要包含特殊字符 (2)【建议】为了可读性,以业务名或数据库名为前缀,用冒号分隔 例如:trade:order:{id}(业务名:表名:id) (3)【建议】为了减少内存占用,保证语义的情况下,控制key的长度 例如:将 user:{uid}:friends:m
Redis 高并发缓存架构
锁优化 (1) 缩小锁粒度:加锁粒度要小,只给必要的代码加锁 (2) 使用分段锁 举例: 将锁 stock:product:101=1000 分成 10 段: stock:product:101:1=100, stock:product:101:2=100, …, stock:product:101
Redis 分布式锁
分布式锁可以将多个并发/并行执行的请求串行化,在分布式系统中,有些业务场景要求在同一时刻只有一个节点线程可以处理某种消息,这时候就可以用分布式锁。常见的分布式锁实现方案有:基于数据库的分布式锁、基于Redis的分布式锁、基于ZooKeeper的分布式锁。 Redis之所以可以做分布式锁,是因为Red