-
当你 INSERT 一行记录到 PostgreSQL 时,数据并不会立即写到磁盘文件中,而是会先写入 Shared Buffer,过一段时间才会落盘。同样的,当你 SELECT 一些数据时,也不会每次都会实时从磁盘文件中读取,很大概率会从 Shared Buffer 直接获取。那么 Shared Buffer 内部的结构是怎样的呢?本文将会介绍 Shared Buffer 的工作原理,逐步揭开其神秘面纱。
-
假如你维护着一个社交媒体公司的图片服务,每天都会有几十亿张照片、缩略图需要存储,还需要快速响应对所有历史照片的随机查询请求,那么你会怎么进行系统设计呢?
-
-
-
PostgreSQL在存储一行数据时,会对各个字段进行对齐。在设计表结构时,需要合理安排字段顺序,减少磁盘空间占用。
postgres=# select typname, typalign, typlen from pg_type where typname in ('int4', 'int8', 'bool', 'float4', 'float8', 'bytea', 'text', 'timestamptz', 'serial', 'json', 'int8[]'); typname | typalign | typlen -------------+----------+-------- bool | c | 1 bytea | i | -1 int8 | d | 8 int4 | i | 4 text | i | -1 json | i | -1 float4 | i | 4 float8 | d | 8 timestamptz | d | 8 (9 rows)postgres=#
-
最近在使用kafkatool 作为查看Kafka消息的工具,但是只支持text、json、xml等常见格式。若想支持自定义的消息格式,例如protobuf,则需要自己编写插件。辛辛苦苦写好一个插件后,发现需要付费才能使用。向来都是白嫖的我,想到它既然是用Java写的,那么反编译一下,是不是有希望绕过付费呢?