PG中的blob cleanup
PG提供了一个很好的BLOB接口,得到了广泛应用。然而最近我们遇到了各种客户遇到的问题,有必要对PG如何处理blob进行一次思考,尤其是BLOB清理。
PG的BLOB接口
PG中可以使用各种方式存储二进制数据,最简单的方式是定义一个“bytea”(=byte array)数据类型。也就是定义一个bytea列:
test=# CREATE TABLE t_image (id int, name text, image bytea);
CREATE TABLE
test=# \d t_image
Table "public.t_image"
Column | Type | Collation | Nullable | Default
-------+---------+-----------+----------+---------
id | integer | | |
name | text | | |
image | bytea | | |
如你所见,这是一个普通列,可以像普通列一样使用。唯一值得一提的是必须在SQL级别使用的编码。PG使用一个变量来配置此行为:
test=# SHOW bytea_output;
bytea_output
--------------
hex
(1 row)
bytea_output有两个值,hex:表