TiDB自身问题及使用姿势

1、TiDB自身问题

•版本迭代速度快,bug多,需多次升级,影响业务

•大版本内,控制在小版本差异多余5个版本+,才可能进行升级

•大版本稳定后,再进行升级,多数为 x.0.2之后

•老版本宕机对业务影响大

•及时升级,新版本改善很大,当前版本影响很小

•对机器硬件要求高,需要大量资源,例如CPU,内存,磁盘

•当前58使用的机器:磁盘闪存卡(不是限制),内存256G(不是限制),CPU32核(对性能有一定影响)

•优化器不稳定,存在走索引错误,导致查询时间长

•表统计信息不正确,DBA会定期analyze 表,修正统计信息

•关注表索引情况,分析慢SQL走索引信息

•与MySQL存在一定差异,部分SQL等不支持

•常用的均支持,存在部分函数不支持,推荐上线前进行SQL语句测试

•外键、触发器等不支持,程序实现

•磁盘使用越多,性能会有一定下降

•默认资源不变情况,磁盘使用越多,性能会有一定下降,推荐及时清理无用数据

•DBA会及时扩容资源

•参数调整、升级需要重启集群

•部分参数调整、升级版本需要重启集群,对业务有影响,但是会提升性能,低峰期操作

•部分扩容会影响性能

•TiDB、PD扩容不影响性能

•TiKV节点扩容需要均衡数据,有一定性能影响,速度可调,会比较慢的均衡

•快速提升集群性能较难

•可以快速提升TiDB节点数量,来应对高的入口流量

•如果底层TiKV性能不满足,扩容后需要等数据均衡完成,才能真正提升集群性能

•大集群备份难做

•小于3T集群,每天全备份;

•超3T以上集群,默认不备份

•超3T集群,会进行部分表级别备份

•当前只支持小于3T的集群的单表恢复到备份时间点

•DDL为串行执行

•表结构变更为串行执行

2、TiDB使用姿势及注意

•单机多实例

•58 TiDB Server、PD Server为独立虚拟机,相互之间影响很小

•为提供资源利用率,TiKV Server单机2-3实例部署,会有一定影响,要注意SQL

•单集群多库

•部分老集群存在单机群多库情况,库之间的慢SQL会相互影响,注意SQL效率

•新申请的库,如果体量小、流量小,可能会复用集群;量大的库会独立部署集群,要评估好库的增长、流量情况

•慢SQL影响大

•相比MySQL,TiDB因表条数巨大,导致慢SQL影响较大,日常要多注意SQL效率

•DBA有kill 超时SQL机制,默认超过90s即kill

•历史数据问题

•历史数据要注意保留时长,不用的历史数据及时清理

•清理数据,推荐按照主键循环分批次删除,单次2k条,sleep0.5s ,夜晚低峰期删除

•批量写入问题

•如果写入量大,可以尝试单次insert 多个value,推荐单次带10-20个value,太多的value性能会变差,导致慢SQL暴涨

•并发数问题

•并发数不是越多越好,推荐满足业务即可,不要过多设置

•连接重试

 •TiDB流量调整,集群升级等均会造成连接断开,有重试,影响小

•大表添加索引慢

•大表添加索引效率不高,推荐设计表时注意索引情况

•添加索引会对集群有一定性能影响,可调整速度,但还是存在影响

•不推荐超过50亿以上的表添加索引

•表主键推荐自增整型

•其他类型主键效率不好,且不方便运维

•MySQL迁移TiDB方便

•MySQL迁移TiDB,DBA会支持,做到实时同步,业务只需要改连接串即可

•推荐前期量小的业务,先使用MySQL,后期量大可以再迁移

•TiDB重要业务集群要周知DBA

•TiDB不推荐影响收入的、影响用户体验的业务使用。

•如果有一定影响的,推荐周知DBA,独立部署等

•任务配置注意

•拉取数据要注意限速,并发度不要调整过高,否则网卡打满,集群性能会下降等。

•有分析的业务可以使用列存TiFlash

•TiFlash为列存引擎,分析SQL效率高,需要独立配置,推荐提前周知DBA进行配置

•分析业务特别重的推荐测试对比TiFlash、DorisDB、ClickHouse

•纯分析的业务,分析SQL多的,量大的,推荐测试下3种分析型的数据库: TiFlash、DorisDB、ClickHouse,择优使用

•DDL不影响读写

•改表操作、加索引等不影响读写,为在线添加,会有一定性能影响

•上线前推荐测试好SQL

•如使用函数种类多的,推荐提前使用TiDB测试环境进行SQL功能测试,防止SQL不兼容

•只写不读的推荐使用ES

•纯的日志记录,推荐使用ES

•大的业务上线要提前申请TiDB

•因每套TiDB机器资源比较多,大的业务上线推荐提前1周申请TiDB

感谢反馈:+1::+1::+1: