SQL性能优化-表与索引的设计(更新中)

文章介绍了数据库中各种类型的表,包括普通堆表、分区表、列存表、临时表等,以及它们的特点和应用场景。同时,讨论了索引的分类,如聚簇索引、非聚簇索引、B树索引和哈希索引,并强调了选择合适表类型和索引的重要性。

表的分类

表就是存储数据的主要结构,按照不同的维度去区分,表的类别有很多。
最普通的堆表、按照一定规则进行数据拆分的分区表、按照列进行组织的列存表、底层存储进行了抽象整合的段页式表、底层使用原地更新模式的inplace-update表、会话内临时存在的临时表、结构全局存在但数据会话存在的全局临时表、不带预写日志的unlogged表…理论上在不同维度下可以进行交叉组合,例如列存分区表、非日志临时表、列存段页式表等,具体是否支持就看数据库厂家是否有做了。
因此选用合适的表是一切的基础。

  • 普通表
    OG内一般称呼普通表,就是在append引擎模式下的堆表,也是最常见的表。一张表就是一系列文件,其中主要包括主文件、fsm文件、toast文件。
    数据按照行进行存储,一条条数据又直接从后向前首尾相接直接堆放在一个8K的称作“页”的结构之中,每当一个页满了之后,主文件会扩充大小,扩出来新的页进行数据的存储。当某些行被删除时,页面会出现空洞和不满的情况,此时需要用fsm这个结构与vacuum等来进行管理。toast文件则是用来存储过长的数据的一种方式,详细见下。
    最普通的表,算是万用的表,其他的表都以此表为基础对照进行衡量。

    • toast表: toast表并不是我们可创建的一类表,是过大尺寸属性存储机制的一种解决方案,全程为(The oversizeed-attribute storage technique)。以附属表的形式存在着,当我们创建一张表的时候,一定条件下会同时创建一张toast表,若我们表内的某行数据,有一列尺寸过大,则这列数据会存放到附属toast表内,表里则存放一个指向toast表的指针。
  • 分区表
    分区表的意思是,将数据按照一定的范围进行拆分,虽然对我们展现的还是一张表,但实际上底层是分了好几张表。因此在原理上,这与行存列存、a\u store等是不冲突的,具体看数据库支不支持。
    分区的好处是在进行

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值