你好,我是格林梅数据库的新手。我知道默认的优化器是遗留的,要激活关键优化器,我们应该启用"set优化器= on“。
我想知道以下几点:
发布于 2017-06-15 16:36:53
阿努拉格。
将优化器设置为" on“,可以对原始Postgres优化器进行一组修改,以便更好地处理大型分区表、子查询和CTE SQL (有语句)上的查询。还有其他正在进行的修改,以使优化器代码在所有类型的SQL查询上更加模块化和更高效,但这正是最初的重点所在。我不是优化器团队(这里的关键数据领域工程师),所以可能还有其他人可以在这个主题上给出比我更深入的答案。
至于哪些查询受益最大,最好的答案是:“它取决于”:)。通常,使用优化器= on可以更有效和更快地处理非常大的分区表查询。与CTE查询和带有子选择的查询相同。我还看到了一些更标准的星型类型查询使用优化器= on运行得更快。
在这两种情况下,优化器都依赖于数据库中非常好的统计数据,因此您需要确保分析是在大型加载或删除/截断之后运行的。
您最好的选择是使用优化器运行和计时优化器(可以在会话级别设置)。dataset和数据库模式结构的大小通常会显示更快的时间,无论是打开还是关闭优化器,所以我会选择最适合您特定情况的设置。我和很多格林梅的顾客一起工作。有些优化器设置为默认打开,有些设置为off。找到对大部分查询最有效的默认设置,并在查询运行“缓慢”的情况下使用相反的设置,并查看是否获得了更好的结果。
我希望这能回答你的问题。
吉姆
发布于 2017-06-15 18:07:50
对于分区表,请确保运行analyze分区,因为PQO使用的是根分区上的stats,而不是Planner之类的叶分区。
https://stackoverflow.com/questions/44561917
复制相似问题