【问题标题】:Row security policy & partitions in PostgreSQLPostgreSQL 中的行安全策略和分区
【发布时间】:2019-09-24 09:23:29
【问题描述】:

PostgreSQL 10.6 表在字段上启用了行安全策略,例如 id。该表有多个基于id 的分区。

在执行选择查询之前,该字段的值是使用SET 语句设置的。

但是当运行SELECT查询时,我从解释计划中看到PostgreSQL必须扫描所有分区,以查找与使用SET语句设置的值对应的右分区。

而如果 idWHERE 子句中传递,它会选择正确的分区而不扫描所有分区。

有没有办法让行安全策略选择类似于 where 子句的正确分区?

【问题讨论】:

    标签: postgresql database-partitioning postgres-10


    【解决方案1】:

    如果您的策略取决于正在设置的参数,您可能会使用current_setting() 来检索它。

    由于解析查询时值未知,PostgreSQL v10无法应用分区修剪

    根据您的查询,升级到 v11 可能会有所帮助,因为此版本增加了对查询执行时分区修剪的支持。

    【讨论】:

    • 谢谢,这很有帮助。将尝试升级到 v11
    猜你喜欢
    • 2022-07-07
    • 2022-01-03
    • 1970-01-01
    • 2019-02-17
    • 2014-02-17
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    相关资源
    最近更新 更多