上期回顾-高频面试题系列-HOT行数据更新时,索引也需要进行维护,如果是高并发的情况下,索引维护的代价很大,可能造成索引分裂。Pg为了避免这个问题,采用了HOT(堆内元组技术)解决这个问题。没有HOT更新后的索引,引用情况。堆元祖(5,1)id=,索引key=tid=(5,1),更新堆元祖后索引key=tid=(5,2)
当使用hot特性更新行时,如果更新后的行存储在同旧行同一个页面中,PostgreSQL不会插入相应的索引元组,而是分别设置老元组的HEAP_HOT_UPDATED标记位和新元组的HEAP_ONLY_TUPLE标记位,存储在t_informask2字段中。
a.修剪前1.索引找到行指针12.行指针1找到堆元祖13.堆元祖1的ctid找到堆元祖2,完成
b.修剪后1.索引找到行指针12.行指针1找到行指针23.行指针2找到堆元祖2,完成
多源连通
概述年,SQL标准中添加了访问远程数据的规范,称为SQL外部数据管理(SQL/MED)。此功能由PostgreSQL从9.1版本开始开发以实现SQL/MED的一部分。在SQL/MED中,远程服务器上的表称为外部表。PostgreSQL的外部数据包装器(FDW)是使用SQL/MED来管理类似于本地表的外部表。
postgresfdw是一种外部访问接口,它可以被用来访问存储在外部的数据,这些数据可以是外部的pg数据库,也可以oracle、mysql等数据库,甚至可以是文件。开放的外部数据源接口,使得PG支持丰富的外部数据源,例如可以通过FDW读写MySQL,redis,mongo,oracle,sqlserver,hive,