0
点赞
收藏
分享

微信扫一扫

TOAST行外存储、(集合运算、子查询、伪列)、单行与多行函数


TOAST行外存储

  • 什么是TOAST?

1、普通数据行的存储技术。

(1)KES数据块是数据文件存储中的基本单位,默认的大小为8KB。

(2)KES不允许一行数据跨块存储。

(3)KES无法直接存储非常大的字段值。

2、TOAST主要用于存储一个大字段的值。

(1)TOAST是超尺寸属性存储技术的缩写。

(2)TOAST技术将大型字段值压缩或切片成多个物理行,这种存储方式叫行外存储。

3、TOAST适用场景

TOAST行外存储、(集合运算、子查询、伪列)、单行与多行函数_子查询

 

  • TOAST存储方式解析

TOAST行外存储、(集合运算、子查询、伪列)、单行与多行函数_子查询_02

 

  1. 主表的content字段,不存储任何实际值,只存储Toast Pointer。
  2. Toast Pointer 指向【TOAST表】
  3. 【TOAST表】中存储的是【行外值】
  1. 【行外值】分裂成2k每个块【chunk_data】
  2. 【chunk_data】最大为TOAST_MAX_CHUNK_SIZE (2K)。
  3. 【chunk_data】作为独立的行存储在从属于所属表的TOAST表中。
  1. 如果一个表中有任何一个列使用了TOAST技术,那么该表将有一个与之关联的TOAST表。
  2. TOAST表的字段说明

TOAST行外存储、(集合运算、子查询、伪列)、单行与多行函数_集合运算_03

 

  1. TOAST表的索引说明

在chunk_id和chunk_seq上有一个唯一索引,提供对值的快速检索。

  • 计算toast空间用到的内置函数

TOAST行外存储、(集合运算、子查询、伪列)、单行与多行函数_国产数据库_04

 

  • TOAST的优势与缺点

优点:

  1. 可以存储超长超大字段,避免之前不能直接存储的限制。
  2. select 语句使用较短的键值进行匹配的,那么执行器的大多数工作都将使用主表完成。
  3. TOAST在物理上与普通表是分离的,检索查询时不检索到大字段会极大地加快速度。

缺点:

  1. 大字段的索引创建,有可能会失败。
  2. 大字段的更新慢。

集合运算、子查询、伪列

集合运算操作符概述

两个结果集做集合运算

例如:

SELECT ino,title from exam.instructor

EXCEPT(UNION、UNIONALL、INTERSEC)

SELECT ino,title FROM exam.instructor_history;

TOAST行外存储、(集合运算、子查询、伪列)、单行与多行函数_集合运算_05

 

子查询

单行子查询

例如:查询考试成绩为97的学员信息

select 字段

from exam.student #学员成绩表查学员信息

where sno=(select sno from exam.score where score=97);#子查询里查询成绩

TOAST行外存储、(集合运算、子查询、伪列)、单行与多行函数_集合运算_06

 

示例2:查询考试分数最低的学员信息

select 字段 from exam.student where sno=(select sno from exam.score where score = (select min(score)

TOAST行外存储、(集合运算、子查询、伪列)、单行与多行函数_子查询_07

多行子查询

示例:查询所有与学号为1001、1008的学员在同一个公司的学员信息

select 字段 from exam.student where company IN(select company from exam.student where sno=1001 or sno=1008); #使用IN可以返回多个结果

TOAST行外存储、(集合运算、子查询、伪列)、单行与多行函数_子查询_08

 

示例:查询比初级考试成绩中的最低分数要高的其他级别的考试成绩信息。

TOAST行外存储、(集合运算、子查询、伪列)、单行与多行函数_国产数据库_09

 

单行与多行函数

SQL函数分类

TOAST行外存储、(集合运算、子查询、伪列)、单行与多行函数_子查询_10

 

使用分组函数的注意事项

多列组合分组

TOAST行外存储、(集合运算、子查询、伪列)、单行与多行函数_子查询_11

 

TOAST行外存储、(集合运算、子查询、伪列)、单行与多行函数_国产数据库_12

举报

相关推荐

9.单行与多行子查询

Mysql 子查询、单行函数、事务

0 条评论