Postgresql数据库varchar()字符占⽤多少字节介绍如下所⽰:
create table tmp1
(
name varchar(3)
);
select pg_size_pretty(pg_relation_size('tmp1'));
-- 0 bytes
insert into tmp(name) values('欧阳⼦');
-- 8192 bytes
8192 bytes = 8KB = 1页(数据库的最⼩单位)
8页 = 1区 = 64KB(记不清磁头⼀次取1区还是1页数据了)
pg_relation_size()函数⽤于查询表占⽤空间.
当表创建的时候, 是不占空间的, 插⼊数据后, 数据库⾄少使⽤1KB去保存数据, 不够会继续增加.(不包含MateData)
⾸先postgresql中varchar()保存的是字符.
即可以插⼊3个中⽂, 也可以插⼊三个字母或者数字.
⼀般数据库都是UTF-8编码.
在UTF-8编码下, ⼀个中⽂ 3个字节. 字母或者英⽂ 1个字节.
另外
1KB = 1024B = 1024Bytes
1Bytes = 1B = 8bit
补充:postgres数据库varchar类型的最⼤长度
字符串长度最大是多少
在分析⼀个场景时,postgres中的⼀个字段存储很长的字符串时,是否可能存在问题。被问到varchar类型的最⼤长度,不是很清楚。
查了⼀下,记录⼀下。
名字描述
character varying(n), varchar(n)变长,有长度限制
character(n), char(n)定长,不⾜补空⽩
text变长,⽆长度限制
简单来说,varchar的长度可变,⽽char的长度不可变,对于postgresql数据库来说varchar和char的区别仅仅在于前者是变长,⽽后者是定长,最⼤长度都是10485760(1GB)
varchar不指定长度,可以存储最⼤长度(1GB)的字符串,⽽char不指定长度,默认则为1,这点需要注意。
text类型:在postgresql数据库⾥边,text和varchar⼏乎⽆性能差别,区别仅在于存储结构的不同。
对于char的使⽤,应该在确定字符串长度的情况下使⽤,否则应该选择varchar或者text。
其他⼈说的最⼤长度是10485760,我不是DBA,也没做过这个实验。但是有疑问,编码格式不为UTF-8时,是否还是10485760?
text类型是挺好⽤的,假如需要存储⼀个复杂且结构可能会变化的数据,搞成json字符串存储到text⾥也是很好的。感觉成了MongoDB
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。如有错误或未考虑完全的地⽅,望不吝赐教。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。