cslqm Blog

Hello,world!

tidb courses: day4

tidb day4

TiDB 的使用场景 OLTP 场景 SQL 语言操作 弹性水平扩展 二级索引 适合海量数据场景。 Real-time HTAP 场景 TiDB 支持 OLAP 和 OLTP 场景。 并且 OLAP 和 OLTP 的处理不会有性能干扰,物理隔离。 可以数据集合。如果有多个数据源(OLTP 数据库等),可以使用 TiDB 集成数据进行 olap 查询。 TiDB...

Go 内存分配

Go memory

内置运⾏时的编程语⾔通常会抛弃传统的内存分配⽅式,改由⾃主管理。这样可以完成类似预分配、内存池等操作,以避开系统调⽤带来的性能问题。当然,还有⼀个重要原因是为了更好地配合垃圾回收。 内存基本策略 每次从操作系统申请⼀⼤块内存(⽐如 1MB),以减少系统调⽤。 将申请到的⼤块内存按照特定⼤⼩预先切分成⼩块,构成链表。 为对象分配内存时,只需从⼤⼩合适的链表提取⼀个⼩块即可。 ...

Go 代码初始化过程

Go init

从上一篇引导已经知道,最后,我们来到了初始化函数。 1 2 3 4 5 6 (gdb) b runtime.args Breakpoint 4 at 0x437a40: file /usr/lib/golang/src/runtime/run...

Go 代码引导过程

Go boot

x86 特定平台的 Go 引导(amd64) 所有操作都是基于 go 1.13,CentOS 6.3。 1 2 # -gcflags "-N -l" 关闭编译器代码优化和函数内联 go build -gcflags "-N -l" -o hello hello.go 开始 1 2 3 4 5 6 7 8 gdb hello (gdb) info files Local exec ...

tidb courses: day3

tidb day3

读写请求在 TiDB 中的流程 TiDB:负责接受 client 的连接,执行 SQL 解析和优化,生成分布式执行计划。 TiKV:保证数据一致性,raft PD:存储元数据,leader调度 SQL -> AST(抽象语法树) -> Logical Plan(逻辑执行计划) -> Optimized Logical Plan(优化计划) – 选择实际执行计划 ...

tidb courses: day2

tidb day2

TiDB 发展简史 由 Google Spanner 而来的灵感。 1.0.0 GA Version 从 1.0.0 GA 版本: 支持计算和存储两个方面的自由扩容 与 MySQL 语法兼容 对应用透明的数据分片策略 应用无感知,强一致分布式事务 框架结构: TiDB : 无状态的 SQL 引擎,承担计算业务,可以多实例 TiKV : 分布式 KV 存储...

tidb courses: day1

tidb day1

分布式数据库发展史 Old days (20th century) 此时的数据库是传统数据库。 传统数据库的特点: 通过 SQL 语言与数据库软件进行交互 都是单机的存储,需要用户备份数据,防止磁盘损坏 OLTP 小事务小查询,数据量不大 产品:PostgreSQL、MySQL、SQL Server Internet decades (2000s) 中间件 业务量...

MySQL 索引

MySQL update

事务隔离 MyISAM 引擎不支持隔离,InnoDB 支持隔离。 事务 ACID (Atomicity、Consistency、Isolation、Durability,即 原子性、一致性、隔离性、持久性) 隔离性 为何需要隔离性? 当数据库上有多个事务同时执行的时候,就可能出现脏读(dirty read)、不可重复读 (non-repeatable read)、幻读(phantom...

刷机流程粗略记录

My MI

手机太老了,还在用红米 note4x,总是卡,手痒痒的不行,刷了个机。 短时间换手机可能性不大,估计以后还会用到,记录一下。 前期准备 先将卡刷包拷入到手机的内部存储或者 SD 卡。因为刷入 twrp 后,需要立即进行刷入卡刷包的操作,这样可以避免第三方的 REC 被小米官方 REC 覆盖。 手机解锁 手机开启开发者模式。 先下载 mi unlock 工具 unlock,登陆好 u...

MySQL 更新语句如何执行的

MySQL update

更新语句如何执行的 更新和查找是差不多的 redo log 和 binlog 两中日志的不同 redo log 是 InnDB 引擎特有的;binlog 是 MySQL 的 Server 层实现的,所有引擎都可以使用。 redo log 是物理日志,记录的是“在某个数据页上做了什么修改”;binlog 是逻辑日志,记录的是这个语句的原始逻辑,比如“给 ID=2 这一行的 c 字...