- 博客(539)
- 收藏
- 关注
原创 062、监控指标之PD
大表清理后,出现了大量的空region, 空的region会干扰pd的调度。所以要及时的merge。store 上的region是否均衡。是否存在异常状态的TiKV。警告=》严重=》紧急。
2023-07-25 06:41:21 75
原创 061、监控指标之TiKV
这个图可以判断KV Rquest 多 ,这图包含网络+TiKV的返回耗时。如果要判断到底是网络还是TiKV处理多。写线程的数量不要超过: 90% * storage.scheduler_worker_pool_size。apply线程不要超过: 80% * raftstore.apply-pool-size。raft线程不要超过: 80% * raftstore.store-pool-size。region 如果超过5万个,可能会影响与pd的心跳。** TiDB写入流程**这个相当于是整体处理图。
2023-07-24 14:48:52 113
原创 060、监控指标之TiDB
连接虽然不做限制,但执行SQL前,需要获取Token,拿到token的sql才可以被处理,没有拿到的就需要等待。如果这个延迟很高,则表示SQL需要等很久才能拿到token。事务出的问题,往往是大事务出现了。Transaction - Transaction Statement Num: 事务内部的语句量。CPS: command 例如 select 1;optimistic: 乐观事务;duration: 就是所有SQL的平均执行时间。压测的时候会关注,平常基本不怎么关注。事务的平均响应时间。
2023-07-24 14:48:11 170
原创 059、集群优化之TiKV
当有阻塞或冲突的时候, sp会给这些写动作排序,获得latch的继续往下走(继续写),没有获得latch的等着。由于TiKV中采用2个RocksDB作为raft log和kv数据的存储,所以当memtable或者level 0的数量过多时,RocksDB就会对于写入进行减速,从而达到自我保护的目的,这个动作叫做write stall。它会将所有的读请求分一个优先级,默认都放在最高优先级L0 ,如果一直读不出来,则可能会降级, 保证快速的短的能尽量快速读出来。不建议关闭,新版本默认是开启的。
2023-07-23 11:22:09 104
原创 058、集群优化之PD
调度中还有这还缺来了merge,例如合并空region。store: 基本信息,容量,剩余空间,读写流量等region: 范围,副本分布,副本状态,数据量,读写流量等。
2023-07-23 11:21:38 199
原创 057、集群优化之TiDB及操作系统
对于数据库系统,选择时刻CPU以高性能(performance)的方式工作。CPU动态节能技术用于降低服务器功耗,通过选择系统空闲状态不同的电源管理策略,可以实现不同程度的降低服务器功耗。更低的功耗策略意味着CPU唤醒更慢、对性能影响更大。内存直接绑定在CPU上,CPU只有访问自身管理的内存物理地址时,才会有较短的响应时间。NUMA架构的服务器,通过绑定NUMA节点,尽可能地避免跨NUMA访问内存,提升tidb server性能。可使用numactl命令绑定。
2023-07-22 08:28:18 247
原创 056、查询优化之优化实战
索引扫描范围过大,无论优化器是选择index scan还是table scan,TiDB都倾向 TiKV corprocessor请求读取大量的数据。Coprocessor CPU 使用率飙升 -> CPU 资源耗尽 -> 集群的duration升高。大量数据删除 -> 加载到内存 -> 打满TiDB的内存 -> 导致OOM。现象:执行计划不稳定可能会导致业务的相应延迟升高,duration出现抖动的情况。- 使用sql hint的方式更改执行计划。方案一: 及时收集统计嘻嘻。
2023-07-22 08:27:39 66
原创 053、查询优化之执行计划
EXPLAIN 的输出id: 算子的ID。是算子在整个执行计划中唯一的标识,从上到下,从右至左estRows: 估算返回的行数,算子语句将会输出的数据条数task: 算子的种类root: TiDB执行的cop[tikv]: 下推到tikv上执行的access object: 访问的对象,例如索引或者表或者分区operator info : 算子详细信息EXPLAIN ANALYZE的输出EXPLAIN ANALYZE 会执行对应的SQL语句,记录其运行的信息,并且和执行计划一起返
2023-07-20 20:45:23 134
原创 052、查询优化之优化器原理
用户发出一条sql,通过协议层(mysql),传输到parse(将SQL解析成AST语法树这一样个东西),这个语法树是以树型的方式读取,这个AST接下来就到预处理(它主要是针对point query),如果是点查(这条语句可以直接通过唯一索引或者主键索引,只返回一行数据)的SQL 就不用逻辑优化或者物理优化,直接通过索引就把数据取出来了。所以如果在pre process中发现是点查就直接推到 执行器执行。
2023-07-20 20:44:14 176
原创 051、事务设计之TiDB事务实现方式
提交的第一阶段,会用三个CF 来存放这些数据信息,一类列簇对应一类键值对, 第一个CF(default)存放的是数据 的键值对。第二个存放的是锁信息。第三个对应的是提交信息。put 3_100: primary_tso 表示是在事务时间戳100的时候对3这个主键进行修改。注意增删改的操作,里面放的都是新数据。
2023-07-19 06:42:42 406
原创 050、事务设计之Percolator事务模型
如果此时其它行 无法加这个锁,则表示其他行正在被其它事务写入,则此时当前这个事务会报错,把指向的主行上面的锁也清掉。(相当于整个分布式事务直接回滚)快照隔离级别类似可重复读,事务能读到的数据都是事务开始那一刻能看到的数据。其它行也加锁(但这个锁的内容是指向主行),所以真正的锁只有一把在主行上。primary key: 选择任一一行作为主行,这里不是说主键。事务3的开始时间是晚于事务1和事务2的提交时间,所以都能看到。分布式时钟: 给事务分配时间标识。白色点:代表事务开始时间。黑色点:代表事务结束时间。
2023-07-19 06:42:11 1558
原创 049、事务设计之分布式基本原理
iso定义的隔离级别可串行化可重复读读已提交读未提交隔离级别区分的现象脏读: 一个事务读取另一个未提交的事务所做更改不可重复度 :同一事务中,前后执行相同的语句,出来的记录不一样幻读: 同一事务中,相同的查询出现了新的行记录TiDB支持以下事务隔离级别:Read Commited 和 Repeatable Read。悲观事务模式支持: Read Commited 和 Repeatable Read。设置会话隔离级别。
2023-07-18 05:04:07 160
原创 045、TiDB特性_读取数据副本
当系统中存在读取热点 Region 导致 leader 资源紧张成为整个系统读取瓶颈时,启用 Follower Read 功能可明显降低 leader 的负担,并且通过在多个 follower 之间均衡负载,显著地提升整体系统的吞吐能力。由于follower region可能不是最新数据,此时又想通过查询follower的region来降低热点的频率,此时可以通过设置TIDB_BOUNDED_STALENESS 来读取指定时间范围当中的最新数据。该事务将会基于所提供的历史时间来读取历史数据。
2023-07-16 20:16:06 340
原创 044、TiDB特性_PlacementPolicy
根据前面的描述,标签可以是用来描述 TiKV 属性的任意键值对,但 PD 无从得知哪些标签是用来标识地理位置的,而且也无从得知这些标签的层次关系。其中,location-labels 配置是一个字符串数组,每一项与 TiKV 的 labels 的 key 是对应的,且其中每个 key 的顺序代表了不同标签的层次关系。注意: 这个region 不是说tikv的存储单元,这个就是地区的意思,用于打标签,自定义的。PD 在副本调度时,会按照 label 层级,保证同一份数据的不同副本尽可能分散。
2023-07-16 20:15:05 427
原创 041、TiDB特性_在线索引
索引:指向行记录的指针以加快数据检索速度快速找到表里的行记录避免全表扫描提高查询性能Unique Key可以通过 CREATE INDEX 语句创建索引信息系统表: information_schema.tidb_indexes,索引名称: KEY_NAME获取索引的定义。
2023-07-14 08:52:50 1998
原创 038、TiDB特性_聚簇索引和非聚簇索引
主键⾮聚簇索引: ⾏数据的键由隐式分配的 _tidb_rowid 构成, 主键在 _tidb_rowid 上额外再建⽴索引,存储⼀⾏⾄少需要两个键值对。5、查看table region的数量,和region的start_key和end_key,记录每个region的written_bytes数据。性能比没有主键的差。3、查看每个region 的 start_key和end_key,和每个Region的written_bytes数据。实验2、 创建一个聚簇索引的表并查看每个region的key的范围。
2023-07-13 06:22:33 822
原创 036、TiDB特性_临时表
用户可通过 CREATE GLOBAL TEMPORARY TABLE 语句创建全局临时表,语句末尾要加上 ON COMMIT DELETE ROWS。可通过 DROP TABLE 或 DROP GLOBAL TEMPORARY TABLE 语句删除全局临时表。• 用户可通过 CREATE TEMPORARY TABLE 语句创建本地临时表,通过 DROP TABLE 或 DROP TEMPORARY TABLE 语句删除本地临时表。
2023-07-11 06:22:28 665
原创 034、TiDB特性_AUTO_RANDOM
如以上语句,由于未指定主键列的值( a 列),TiDB 会使⽤连续⾃增的⾏值作为⾏ ID,可能导致单个 TiKV 节点上产⽣写⼊热点,进⽽影响对外提供服务的性能。通过随机的产生主键,让数据分布在不同的region上。若要使⽤⼀个不同的 shard bits 的数量,可以在 AUTO_RANDOM 后⾯加⼀对括号,并在括号中指定想要的 shard bits 数量。该⾏值在⼆进制形式下,除去符号位的最⾼五位(称为 shard bits)由当前事务的开始时间决定,剩下的位数按照⾃增的顺序分配。
2023-07-10 16:16:24 1043
原创 033、TiDB特性_AUTO_INCREMENT
AUTO_INCREMENT: 是⽤于⾃动填充默认字段值的属性。注意:这个会报错,提示插入的是重复值。auto_increment 属性。
2023-07-10 09:02:02 1054
原创 030、SQL语句之数据类型与表达式
布尔类型,别名为 BOOL,和 TINYINT(1) 等价。零值被认为是 False,非零值认为是 True。在 TiDB 内部,True 存储为 1,False 存储为 0。枚举类型是一个字符串,它只能有一个值的字符串对象。M 表示比特位的长度,取值范围从1到64,其默认值是1。timestamp : 受时区影响,并且最大范围是2038年。NULL 是一个SQL关键字,用于定义允许缺失值的数据类型。用于精确数值:整数、小数或两者。10: 整数+小数一共多少位。用于近似值:整数、小数或两者。
2023-07-08 08:59:16 1050
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人