网站首页 > 技术文章 正文
一、TiDB支持的数据对象
TiDB不支持UDF、存储过程以及触发器
二、聚簇表和非聚簇表
1、聚簇表:key由 表编号_主键 组成
2、非聚簇表:系统自动生成rowid,key由 表编号_rowid 组成。
3、建表后支持添加或删除聚簇索引,不可以添加或删除聚簇索引,不支持聚簇索引和非聚簇索引的相互转换
4、对于非聚簇表,采用隐式自增的rowid,容易造成写入热点。增加SHARD_ROW_ID_BITS,配合使用pre_split_regions,从而实现表拆分到不同的region
三、分区表
1、Range分区:对于表的每个分区中包含的所有行,按分区表达式计算的值都落在给定的范围内。Range 必须是连续的,并且不能有重叠,通过使用 VALUES LESS THAN 进行定义。
2、List分区:对于表的每个分区中包含的所有行,按分区表达式计算的值属于给定的数据集合。每个分区定义的数据集合有任意个值,但不能有重复的值,
3、List COLUMNS 分区:是 List 分区的一种变体,可以将多个列用作分区键,并且可以将整数类型以外的数据类型的列用作分区列。
4、Hash分区:用于保证数据均匀地分散到一定数量的分区里面。在 Range 分区中你必须为每个分区指定值的范围;在 Hash 分区中,只需要指定分区的数量。
四、自增ID
1、AUTO_INCREMENT 隐式分配的原理:
(1)对于每一个自增列,都使用一个全局可见的键值对用于记录当前已分配的最大 ID。
(2)由于分布式环境下的节点通信存在一定开销,为了避免写请求放大的问题,每个 TiDB 节点在分配 ID 时,都申请一段 ID 作为缓存,用完之后再去取下一段,而不是每次分配都向存储节点申请。
(3)当前 预分配的ID段使用完毕,或TiDB重启,都会重新再次申请新的ID段。
2、目前在 TiDB 中使用 AUTO_INCREMENT 有以下限制:
(1)定义的列必须为主键或者索引的首列。
(2)只能定义在类型为整数、FLOAT 或 DOUBLE 的列上。
(3)不支持与列的默认值 DEFAULT 同时指定在同一列上。
(4)不支持使用 ALTER TABLE 来添加 AUTO_INCREMENT 属性。
(5)通过 session 变量 @@tidb_allow_remove_auto_inc 控制是否允许通过 ALTER TABLE MODIFY 或 ALTER TABLE CHANGE 来移除列的 AUTO_INCREMENT 属性,默认是不允许移除
3、AUTO_RANDOM 用于解决大批量写数据入 TiDB 时因含有整型自增主键列的表而产生的热点问题
适用与 聚簇表,自增主键
(1)该属性必须指定在整数类型的主键列上,否则会报错。
(2)当主键属性为 NONCLUSTERED 时,即使是整型主键列,也不支持使用 AUTO_RANDOM。
(3)不支持使用 ALTER TABLE 来修改 AUTO_RANDOM 属性,包括添加或移除该属性。
(4)不支持修改含有 AUTO_RANDOM 属性的主键列的列类型。
(5)不支持与 AUTO_INCREMENT 同时指定在同一列上。
(6)不支持与列的默认值 DEFAULT 同时指定在同一列上。
(7)插入数据时,不建议自行显式指定含有 AUTO_RANDOM 列的值。不恰当地显式赋值,可能会导致该表提前耗尽用于自动分配的数值。
五、设计建议
1、高兼容性schema
2、高性能schema
- 上一篇: 数据结构线性表(一)
- 下一篇: 编剧必备:人物设计表+人物关系图+情节结构表
猜你喜欢
- 2025-01-03 66套钢结构自动算量表,内置自动计算表格,很实用,工程人必备
- 2025-01-03 地基与基础工程构造做法讲解,三维示意图做得漂亮
- 2025-01-03 Creo技巧系列6——零件簇表的制作
- 2025-01-03 详细解剖劳力士“大心脏”—3135机心!
- 2025-01-03 如何用EXCEL制作一份简洁美观的工作计划表
- 2025-01-03 (六)结构施工图的识读(2)
- 2025-01-03 详解机械钟表的结构和工作原理(附图)
- 2025-01-03 Excel技巧:如何将Excel工作表设置成层级结构展示?
- 2025-01-03 结构专业楼梯设计
- 2025-01-03 主系表结构全解析(一)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)