当前位置 : 首页 » 文章分类 :  开发  »  TiDB

TiDB

TiDB学习笔记

PingCAP官方文档
https://pingcap.com/docs-cn/overview/

TiDB 的正确使用姿势
https://segmentfault.com/a/1190000008643974

自增主键

过度依赖单调递增的主键,AUTO INCREMENT ID
在传统的关系型数据库中,开发者经常会依赖自增 ID 来作为 PRIMARY KEY,但是其实大多数场景大家想要的只是一个不重复的 ID 而已,至于是不是自增其实无所谓,但是这个对于分布式数据库来说是不推荐的,随着插入的压力增大,会在这张表的尾部 Region 形成热点,而且这个热点并没有办法分散到多台机器。TiDB 在 GA 的版本中会对非自增 ID 主键进行优化,让 insert workload 尽可能分散。

建议:
如果业务没有必要使用单调递增 ID 作为主键,就别用,使用真正有意义的列作为主键(一般来说,例如:邮箱、用户名等)

使用随机的 UUID 或者对单调递增的 ID 进行 bit-reverse (位反转)

json类型

Json 类型可以存储 Json 这种半结构化的数据,相比于直接将 Json 存储为字符串,它的好处在于:

使用 Binary 格式进行序列化,对 Json 的内部字段的查询、解析加快;
多了 Json 合法性验证的步骤,只有合法的 Json 文档才可以放入这个字段中;
Json 字段本身上,并不能创建索引。相反,可以对 Json 文档中的某个子字段创建索引。例如:

CREATE TABLE city (
    id INT PRIMARY KEY,
    detail JSON,
    population INT AS (JSON_EXTRACT(detail, '$.population')
);
INSERT INTO city VALUES (1, '{"name": "Beijing", "population": 100}');
SELECT id FROM city WHERE population >= 100;

上一篇 MySQL-外键

下一篇 MySQL-事务与死锁

阅读
425
阅读预计2分钟
创建日期 2018-11-24
修改日期 2018-11-24
类别
标签
百度推荐