对于大量的key->值,PostgreSQL jsonb比hstore慢

时间:2017-03-14 13:57:33

标签: sql postgresql performance postgresql-9.6 nosql

我正在将复合类型转换为NoSQL类型之一,并且已经对hstore和jsonb进行了性能测试。由于某些原因,jsonb越慢,键值>值就越多。

我目前的类型如下:create type comp_type (key integer, value integer);

它作为数组create table test_table (id serial, values comp_type[]);

存储在表中

这很好,直到我需要获得在复合类型数组中具有某些键的行,并且执行此操作的唯一方法是unnest(),这是昂贵的。所以我决定将这种数据类型迁移到hstore或jsonb,因为它们都提供了我需要的运算符(?|)。

在seq扫描期间和使用gin索引时,hstore都更快。我承认hstore上的gin索引要比jsonb的等价物贵得多,但即便如此,只需在hstore上进行seq扫描比使用jsonb上的索引更快。

这就是现场演示的样子:http://rextester.com/KPNQ26624

实际数据具有更多的key->值对,因此性能会降低甚至更多,以至于jsonb作为简单的key->值存储只是毫无价值。 任何想法为什么会发生这种情况以及如何解决?

0 个答案:

没有答案