Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 我应该在固定长度的bytea PK列上设置存储平面吗?_Postgresql_Performance_Join_Storage_Primary Key - Fatal编程技术网

Postgresql 我应该在固定长度的bytea PK列上设置存储平面吗?

Postgresql 我应该在固定长度的bytea PK列上设置存储平面吗?,postgresql,performance,join,storage,primary-key,Postgresql,Performance,Join,Storage,Primary Key,我的Postgres表的主键是存储在bytea列中的SHA1校验和(总是20字节)(因为Postgres没有固定长度的二进制类型) 我是否应该改变表t改变列c设置存储平面,不让Postgres为了查找和连接性能而压缩和/或外包(TOAST)我的PK/FK?为什么(不)?我想说,这是一个微观优化,可能不会产生可测量的效果 首先,PostgreSQL只在行超过2000字节时才考虑压缩和切片值,因此只有当行经常超过该大小时才会产生影响 然后,即使主键列被烤熟了,也可能只有在单个表扫描中选择大量行时才能

我的Postgres表的主键是存储在
bytea
列中的SHA1校验和(总是20字节)(因为Postgres没有固定长度的二进制类型)


我是否应该改变表t改变列c设置存储平面,不让Postgres为了查找和连接性能而压缩和/或外包(TOAST)我的PK/FK?为什么(不)?

我想说,这是一个微观优化,可能不会产生可测量的效果

首先,PostgreSQL只在行超过2000字节时才考虑压缩和切片值,因此只有当行经常超过该大小时才会产生影响

然后,即使主键列被烤熟了,也可能只有在单个表扫描中选择大量行时才能测量差异。按索引只获取几行不会有太大区别


我会对这两种方法进行基准测试,但我认为很难衡量差异。I/O和其他成本可能会隐藏解压缩所需的少量额外CPU时间(请记住,行必须很大,TOAST才能首先启动)。

我想说,这是一种微优化,可能不会产生可测量的效果

首先,PostgreSQL只在行超过2000字节时才考虑压缩和切片值,因此只有当行经常超过该大小时才会产生影响

然后,即使主键列被烤熟了,也可能只有在单个表扫描中选择大量行时才能测量差异。按索引只获取几行不会有太大区别

我会对这两种方法进行基准测试,但我认为很难衡量差异。I/O和其他成本可能会隐藏解压缩所需的少量额外CPU时间(请记住,行必须很大,TOAST才能首先启动)