1.处理客户端连接(Protocol Layer)
2.SQL语句解析转换成执行计划(Parse Compile)
3.关系型数据与KV转换
4.SQL语句执行(Executor DisrtSQL(范围,全表)KV(点查))(事务:Transaction KV )
5.Online DDL执行 (schema load,worker,start job)
6.热点小表缓存(Cache table)(不常修改,查多)
7.垃圾回收(GC)
聚簇表:表id+主键形成唯一key
非聚簇表 :表id加rowid
GC清理的内容:MVCC机制产生的历史数据
GC life-time:默认10min
组成:1.SQL结果2.线程缓存3.元数据,统计信息
管理:1.tidb_mem_quota_query 管理缓存2.oom_action 报错或日志
1.表数据不大(64M)
2.只读表或者修改不频繁的表
3.表访问很频繁
租约方法:租约(5s)内,可读不可写 cachetable
租约外:在TiKV读写
下一个租约:在cachetable 读,不可写
开启热点小表缓存的表不可以执行DDL语句
如果在commit时候,TIKV挂掉,重启后回来查询所的信息
propose:tikv leader接收到事务
append:leader写入log
replicate:给foloowers同步append:followers 写入日志
committed:followers给leader返回日志写入成功(不要要接受所有followers,超过半数即可)(保证修改不丢失)
reply:写入rocksDB kv
election time out 假设 = 10s (默认在100ms到300ms):超过10s没有接收到leader心跳,就会重新选举
第一个到达 election time out的节点会candidate,向其他节点发送选举信息,有多个同时进行选举的话,就会开启下一次选举
为了避免出现多次选举不成功,会将electiontimeout=random 随机时间
问题:1.怎么确定读取到的是leader:发心跳2.读的一致性问题(下图)
夜市等待到该节点apply到读取时刻的事务节点序号,证明之前的事务都执行完成了(与3.4.2中的问题2原理一样)
可能存在follower read 比主节点读取快的情况,(follower的apply快)
本文发布于:2024-01-28 09:58:05,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064070896610.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |