随笔分类 - GitHub
03.线程模型
摘要:误解:redis只有一个线程 Redis 的网络IO和键值对读写是由一个线程(主线程)来完成的(Redis6.0 网络IO改为多线程模型) Redis的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。 为什么用单线程: 多线程开销问题 多线程并发竞争问题,需要引入同步原语或
11.索引概念
摘要:索引: 作用:提高查询效率 索引不止存在内存中,还要写到磁盘上 常见的索引模型: 哈希表:适用于只有等值查询的场景(kv键值对) 有序数组:等值查询和范围查询场景(redis的有序集合) 搜索树:二叉树是搜索效率最高,大多数的数据库存储却并不使用二叉树 > [!TIP] 索引不止存在内存中,还要写到
09.索引结构
摘要:基础: 索引中的数据页的编号不一定连续,也就是说这些页在存储空间里可能并不挨着 B+树中相同层次的数据页通过页结构的File Header 中的FIL_PAGE_PREV和FIL_PAGE_NEXT,组成双向循环链表 每个数据页内部会维护页目录,通过分组的方式将所有用户记录分组 每个数据页内部记录之
03.事务隔离级别
摘要:事务: 事务:就是要保证一组数据库操作,要么全部成功,要么全部失败 事务的特性:ACID,原子性、一致性、隔离性、持久性 mysql事务是由引擎提供的支持,MyISAM 引擎就不支持事务 多事务同时执行可能会出现的问题:脏写、脏读、不可重复读、幻读 脏读:在一个事务内读到了另一个未提交事务修改过的数
07.行记录结构
摘要:行记录分类: Compact Redundant( < 5.0`) Dynamic (默认) Compressed Compact 行记录结构: - 记录的额外信息 - 变长字段长度列表 - - 变长字段的定义: - VARCHAR(M) - CAHR(M) 但字符集为变长字符集(除了ascii、l
06.全局锁、表锁、行锁
摘要:Mysql中的锁 全局锁:对整个数据库实例加锁 全库逻辑备份: 针对MyISAM做全库逻辑备份,只能用FTWRL方式,在备份时不能更新 补充:MyISAM这种不支持事务的引擎,如果备份过程中有更新,总是只能取到最新的数据,破坏了数据一致性 针对innodb备份,可以使用mysqldump –sing
08.数据页结构
摘要:基础: 页是InnoDB管理存储空间的基本单位,一个页的大小一般是16KB 数据页(索引页)是页的一种,用来组织和和存放用户数据 索引页之间通过双向链表连接,数据页的物理结构不连续 数据页的详细结构: 数据页组成: |名称|中文名|占用空间大小|简单描述| |:—-|:—-|:—-|:—-| |Fi
19.常见云数据库选型
摘要:数据库: 数据库 描述 mysql TiDB Aurora PolarDB TDSQL MongoDB OpenSearch clickhouse RocksDB 行存储数据库 特性/数据库 TiDB Amazon Aurora PolarDB Tencent TDSQL 数据库类型 分布式关系数据
14.性能优化-explain优化器决策结果
摘要:explain结果列说明: explain 列名 描述 id 在一个大的查询语句中每个SELECT关键字都对应一个唯一的id select_type SELECT关键字对应的那个查询的类型 table 表名 partitions 匹配的分区信息 type 针对单表的访问方法 possible_key
16.缓冲池-BufferPool
摘要:buffer pool 常识: Buffer Pool 是一片连续的内存空间,通过innodb_buffer_pool_size在服务器运行过程中调整buffer pool大小,默认为128MB Free Page(空闲页),此页未被使用,位于 Free 链表; Clean Page(干净页),此页
01.Mysql逻辑架构
摘要:mysql逻辑架构图 图片 MySQL从架构角度可以分为: Server层: 该层实现所有跨存储引擎的功能。e.g. 存储过程、触发器、视图等 连接器: 职责:连接器负责跟客户端建立连接、获取权限、维持和管理连接 查看当前的连接状态: show processlist 连接: 生命周期:一个用户成功
18.主从同步
摘要:主从复制 MySQL 集群的主从复制过程梳理成 3 个阶段: 写入 Binlog:主库写 binlog 日志,提交事务,并更新本地存储数据。 同步 Binlog:把 binlog 复制到所有从库上,每个从库把 binlog 写到暂存日志中。 回放 Binlog:回放 binlog,并更新存储引擎中的
13.连表查询-join
摘要:连接的本质: 把各个连接表中的记录都取出来依次匹配的组合加入结果集并返回给用户 示意图: 图片 连接的类型: 根据驱动表中的记录在被驱动表中无匹配时,是否加入到最后的结果集分为: 内连接INNER JOIN:不加入结果集 外连接:加入结果集 根据驱动表选择分为: 左外连接 LEFT JOIN:选取左
10.表空间结构
摘要:独立表空间: 表空间的是由若干个区组成的 区(extent): 连续的64个页就是一个区extent,默认占用1MB空间大小。 为什么要有区:同层的索引页之间以链表组织,物理距离可能会比较远,这样就会引起随机IO。使用区可以保证64个页的连续) 段(segment): 定义:某些零散的页以及一些完整
02.日志系统
摘要:bin log 备份日志 作用:Server层生成的日志,主要用于数据备份和主从复制 bin log刷盘时机: 事务执行过程中,先把日志写到 binlog cache(Server 层的 cache),事务提交的时候,再把 binlog cache 写到操作系统的内核缓冲区page cache,最后
17.Sql是如何执行的
摘要:UPDATE t_user SET name = ‘x’ WHERE id = 1 执行器负责具体执行,会调用存储引擎的接口,通过主键索引树搜索获取 id = 1 这一行记录: 如果 id=1 这一行所在的数据页本来就在 buffer pool 中,就直接返回给执行器更新(id非唯一索引的前提下);
12.索引合并-indexMerge
摘要:索引合并 index merge: 含义:使用到多个索引来完成一次查询的执行方法 explain 中 type 会显示index merge 核心思想: 读多个二级索引的操作是顺序IO(索引是有序的),只用一个索引,但是做回表操作是随机IO 索引合并优点: 可以减少回表次数 基于有序的主键回表 Ro
docker
摘要:docker client-server 架构 docker client使用REST API,通过UDS或者network,与dockerd进行通信 Docker Registries 用来存储Docker Images 默认使用Docker Hub Registries 常用的registrie
minikube
摘要:minikube安装踩坑笔记 步骤一:minikube 执行文件下载(linux x86-64为例子): 官方地址:(https://minikube.sigs.k8s.io/docs/start/?arch=%2Flinux%2Fx86-64%2Fstable%2Fbinary+download)