3.7.8 How to Deal With Hotspot Issues(如何处理数据热点问题)@2班+mark

出现热点,不一定一定会产生问题,tidb也有一定能力识别热点,通过调度来解决。

热点问题之一:顺序写。现象是写入集中在某个tikv实例,负载高,io压力大。往新表写数据也会出现这个问题,表新创建时只会存在一个region,只有达到一定量才会分裂,即使是随机写。

热点问题二:小的热表


热点问题三:region 分布倾斜

解决办法一:分区表,hash分区,可以很好避免顺序写带来的问题。不同的分区可以认为是不同的表。

解决办法二:shard_row_id_bits。可以在表创建前和后修改。写入数据时会有一定随机,不是严格的递增
create table t (c int) shard_row_id_bits = 4;
alter table t shard_row_id_bits = 4;

解决办法三:预分类region,效果最好。在写入前把region分布到所有tikv实例。

解决办法四:follower read,将读请求路由到读副本
set session variable tidb_replica_read

read from only followers

set @@tidb_replica_read=‘follower’;

read from all

set @@tidb_replica_read=‘leader-and-follower’

解决办法五:scatter range,给定一个表,pd 使它所有region在tikv 均匀分布
curl -x POST http://{tidb_host}:10000/tables/{db}/{table}/scatter
curl -x POST http://{tidb_host}:10000/tables/{db}/{table}/stop-scatter

解决办法六:shuffle leader/region。将所有region leader和副本打散.最后一招,工作效率较低

create scheduler

pd-ctl scheduler add shuffle-region-scheduler
pd-ctl scheduler add shuffle-leader-scheduler

stop scheduler

pd-ctl scheduler remove shuffle-region-scheduler
pd-ctl scheduler remove shuffle-leader-scheduler

image

同学你好,感谢参与 TiDB 4.0 课程的学习!

本篇笔记逻辑清晰、内容丰富,被评选为优质笔记,将额外获得 20 积分,并在 「TiDB 培训」分类下获得“置顶”权益,积分兑换规则将于近期开放,敬请关注!

期待您继续产出优质内容!

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。