开发者社区 > 数据库 > 正文

数据组织结构有哪几个关键点?

数据组织结构有哪几个关键点?

展开
收起
vncamyi27xznk 2021-12-25 17:41:15 729 0
1 条回答
写回答
取消 提交回答
  • 第一个关键点:数据是存储在主键中,必须显式定义主键,如果不显式定义主键会出现两种情况: ·第一种情况是在使用 DTS 来传输数据时,无法判断数据是不是重复,是不是唯一的。主键的定义是非空、唯一。 ·第二种情况是把RDS for MySQL的备份还原到线下的数据时,没有主键的表,读取时字段对不上。因为阿里的MySQL, 为了避免出现没有定义主键而导致的问题,默认隐式的增加一个字段,把物理备份还原到本地时,这张表会多出一个字段,会导致恢复后这张表不可访问。 第二个关键点:表的每个数据块大小都是16KB,分支节点也是16KB,分支节点上的条目数越多,树越扁,树高越小,查询的越快。因为根和分支节点都需要内存运行,树高越高,需要读的16KB的块数就越多,导致查询会更慢。块的尺寸一定的情况下,里面带的条目数越多,树高越小,访问数据的代价越低。条目数取决于主键的数据类型,int类型4个字节,big int是8个字节,如果使用的是字符串,在utf8字符集的情况下,是char类型,要3个字节。所以关键点是主键尽量使int或者是big int这种整形,本身它很小,通常情况下一个16KB的块能放几百个int类型的条目,树高很容易控制在很小。 第三个关键点:本身它是一棵平衡树,平衡树的要求就在于,从根到任何一个叶子节点高度都要一样,树高是固定值,这棵树不断地被增、删、改的情况下,为了保证根到叶子节点的树高一致,建议用auto_increment正向递增或者使用sequence,比如在有 PolarDB-X 场景下,建议采用sequence对象来获取主键自增值,保证每次的写入的操作,尤其是插入操作,性能一致。

    答复内容摘自《深入MySQL实战》,这本电子书收录开发者藏经阁 下载连接:https://developer.aliyun.com/topic/download?id=1167

    2021-12-25 18:30:21
    赞同 展开评论 打赏
问答地址:

数据库领域前沿技术分享与交流

相关电子书

更多
高维向量检索技术在PG中的设计与实践 立即下载
为并行图数据处理提供高层抽象/语言 立即下载
典型模型-卷积神经网络入门 从概念原理到应用实现 立即下载