PostgreSQL 11.1-在执行时稳定分区修剪

PostgreSQL 11.1-在执行时稳定分区修剪,postgresql,database-partitioning,Postgresql,Database Partitioning,我们正在为我们的产品评估PostgreSQL 11,试图使用分区来简化真空工作 我们的系统每秒更新4251次,每秒删除约1000次,每秒插入约3221次,每天处理10亿次事务 我们面临的问题是分区修剪不能稳定地与更新一起工作,尽管我们有: part_key=我们的where子句中的值 启用分区修剪='on' 我们知道在11有一个新补丁,它应该支持(更快的分区修剪+执行时的分区修剪) 如何进行稳定的分区修剪?当它不起作用时,如何确定原因?哪些参数会影响它?如果您在PostgresSQL v11中设

我们正在为我们的产品评估PostgreSQL 11,试图使用分区来简化真空工作

我们的系统每秒更新4251次,每秒删除约1000次,每秒插入约3221次,每天处理10亿次事务

我们面临的问题是分区修剪不能稳定地与更新一起工作,尽管我们有:

  • part_key=我们的
    where
    子句中的值
  • 启用分区修剪='on'
    我们知道在11有一个新补丁,它应该支持(更快的分区修剪+执行时的分区修剪)


    如何进行稳定的分区修剪?当它不起作用时,如何确定原因?哪些参数会影响它?

    如果您在PostgresSQL v11中设置了
    启用分区修剪
    ,它将不会扫描那些由于
    WHERE
    条件而可以排除的分区

    这只适用于优化器或执行器可以轻松推断分区键条件的情况。因此,您需要在查询中设置一个简单的
    形式条件,其中
    =
    =
    在查询期间保持不变(例如,不包含任何
    VOLATILE
    函数)


    请提供一个例子,说明“不稳定工作”的含义,然后可以说明更多内容。

    您不使用Postgres 11最新次要版本11.2的任何原因请回答您的问题,并提供一个完整的查询,即完整的
    create table
    语句(包括分区定义)和使用
    explain(analyze,buffers)
    生成的执行计划,这两种情况(有分区修剪和没有分区修剪)都可以随意显示。您的问题是,不要在注释中发布代码