你好,我正在阅读Postgres关于吐司的文档,但我没有发现任何关于吐司在MVCC方面是如何工作的东西。根据postgres公司的文档。
只有当要存储在表中的行值大于TOAST_TUPLE_THRESHOLD字节(通常为2 kB)时,才会触发to管理代码。
据我所知,如果字段足够大且具有可变长度,那么postgres不会直接将该字段存储在元组块中,而是存储对包含此字段的不同表(文件)的引用,其中包含chunk_id和sequence_id。但是,MVCC呢?假设我有一张桌子user(data jsonb , id int PK,name varchar(255))。通常,当行被更新时,新行将被创建为与当前事务相等的xmin。假设jsonb字段位于to表中,并且该字段未更新,postgres将为已更新的行创建新的烤面包实例,还是新行将具有对现有吐司值的新引用?
发布于 2020-08-27 20:26:35
请参阅这里
在更新操作期间,未更改字段的值通常保留为-原样;因此,如果不改变出线值,则行的更新将不会带来任何转帐成本。
https://stackoverflow.com/questions/63622558
复制相似问题