找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3739

积分

0

好友

515

主题
发表于 9 小时前 | 查看: 1| 回复: 0

每日一题卡通插图

在设计 TiDB 数据库表结构时,SCHEMA 的定义直接关系到数据存储的效率、可维护性以及功能的正确性。一些关于表属性、索引和默认值的细微规则,往往是开发者容易混淆或出错的地方。下面这道题就集中了几个常见的知识点,我们来逐一分析。

题目:关于 TiDB 数据库中 SCHEMA 的设计,不正确的是?

A、PRE_SPLIT_REGIONS 是列属性,在使用时写在自增列的后面
B、非聚簇索引可以在建表之后添加或者删除
C、AUTO_RANDOMAUTO_INCREMENT 不可以同时出现在同一列中
D、NOW 函数可以作为时间和日期类型的默认值

选项解析与答案

A、PRE_SPLIT_REGIONS 是列属性,在使用时写在自增列的后面

这个说法是错误的,也是本题的正确答案。PRE_SPLIT_REGIONS 并非列属性,它是一个表级选项,主要用于在创建表时预分裂 Region,以优化写入热点。它是在建表语句的末尾,以 PRE_SPLIT_REGIONS = N 的形式指定,其中 N 表示预分裂的数量。因此,它不能写在某个自增列后面作为列属性使用。

B、非聚簇索引可以在建表之后添加或者删除

这个说法是正确的。在 TiDB 中,非聚簇索引(即二级索引)支持通过 CREATE INDEX 语句在表创建后添加,也可以通过 DROP INDEX 语句进行删除,提供了很大的灵活性。

C、AUTO_RANDOMAUTO_INCREMENT 不可以同时出现在同一列中

这个说法是正确的。AUTO_RANDOM 是 TiDB 用于解决 AUTO_INCREMENT 在分布式环境下可能产生的写入热点问题而引入的扩展属性。两者都用于自动生成唯一值,但机制和目的不同。同一列只能选择其中一种自动赋值机制,不能同时指定。

D、NOW 函数可以作为时间和日期类型的默认值

这个说法是正确的。在 TiDB 中,可以为 TIMESTAMPDATETIME 类型的列指定 DEFAULT CURRENT_TIMESTAMP(或同义的 NOW())作为默认值,这样在插入数据时若未显式指定该列的值,数据库会自动填入当前时间。

总结

通过以上分析,我们可以清晰地看到,不正确的设计是选项 APRE_SPLIT_REGIONS 是一个重要的表级性能优化选项,但必须正确理解其用法层级。

掌握这些 SCHEMA 设计中的细节,能帮助我们在使用 TiDB 时避开陷阱,设计出更高效、更稳健的数据表。如果你想深入探讨更多 数据库 设计模式或分布式系统实践,欢迎来 云栈社区 与更多开发者交流学习。




上一篇:Redis发布订阅深度解析:从电商场景看Pub/Sub的优缺点与选型
下一篇:Toga 开发指南:用 Python 构建原生跨平台桌面应用
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-4 20:51 , Processed in 0.466904 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表