{"Entry":{"collection":"guc","key":"min_parallel_index_scan_size","name":"min_parallel_index_scan_size","aliases":[],"metadata":{"baseline":false,"boot_human":"Not specified","boot_val":null,"category":"Query Tuning / Planner Cost Constants","category_zh":"","changed_in":[],"changes":[{"documentation_changed":false,"fields":{},"from":"9.6","status":"added","to":"10"},{"documentation_changed":true,"fields":{},"from":"11","status":"changed","to":"12"},{"documentation_changed":true,"fields":{},"from":"12","status":"changed","to":"13"}],"content_hash":"d7514fbd03551836710d176cde67b9d425e231e3171950b614832a124236630a","context":"","default_changed_in":[],"default_history":[{"from":"10","to":"19","value":"512 KiB (64 × 8kB)"}],"editorial":{"advice":{"olap":"Keep the upstream threshold unless small but expensive scans are wrongly excluded. Lowering min_parallel_index_scan_size can raise planning and worker overhead when many queries run concurrently.","oltp":"A higher min_parallel_index_scan_size can reduce parallel startup on short OLTP scans, but confirm that reports and maintenance do not regress.","small":"Prefer a conservative or higher threshold on a small host where worker startup and memory contention dominate. Coordinate it with max_parallel_workers_per_gather rather than tuning it alone."},"mechanism":["min_parallel_index_scan_size is a planner eligibility floor: parallel scan paths are not considered unless index pages estimated to be visited reaches the configured size.","Crossing this floor does not guarantee a parallel plan. The planner still compares costs, checks parallel safety, and requests workers subject to max_parallel_workers_per_gather and the cluster worker pools.","The index threshold also participates in deciding whether an index can be vacuumed in parallel. Its user context permits session- or transaction-local changes; newly performed or newly planned work sees the value."],"pitfalls":["Assuming the threshold caps actual bytes read; it only controls planner eligibility.","Expecting a parallel plan merely because the size estimate crosses the threshold.","Lowering it without budgeting workers and per-node memory under concurrency.","Comparing the raw numeric value without applying its 8kB block unit."],"references":[{"title":"PostgreSQL 19 Beta 4: min_parallel_index_scan_size","url":"https://www.postgresql.org/docs/19/runtime-config-query.html#GUC-MIN-PARALLEL-INDEX-SCAN-SIZE"},{"title":"PostgreSQL 19 release notes","url":"https://www.postgresql.org/docs/19/release-19.html"}],"related":["max_parallel_workers_per_gather","parallel_setup_cost","parallel_tuple_cost","max_parallel_workers","enable_indexscan"],"summary":"min_parallel_index_scan_size — Sets the minimum amount of index data for a parallel scan. Observed in PG10–19 Beta 4; its last measured boot default is 512 KiB (64 × 8kB) in PG19 Beta 4, with user context. This is a beta-snapshot fact and can change before PostgreSQL 19 GA."},"enumvals":[],"first_version":"10","group":"Query Tuning","group_slug":"query","imported_at":"2026-09-27T17:57:31.778676+08:00","intro_commit":{"authored_at":"2017-02-15T13:37:24-05:00","discussion":["https://postgr.es/m/CAA4eK1KowGSYYVpd2qPpaPPA5R90r++QwDFbrRECTE9H_HvpOg@mail.gmail.com","https://postgr.es/m/CAA4eK1+TnM4pXQbvn7OXqam+k_HZqb0ROZUMxOiL6DWJYCyYow@mail.gmail.com"],"hash":"51ee6f3160d2e1515ed6197594bda67eb99dc2cc","subject":"Replace min_parallel_relation_size with two new GUCs.","url":"https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=51ee6f3160d2e1515ed6197594bda67eb99dc2cc"},"key":"min_parallel_index_scan_size","last_version":"20","max_val":"","min_val":"","name":"min_parallel_index_scan_size","position":294,"present_in":["10","11","12","13","14","15","16","17","18","19","20"],"short_desc":"Sets the minimum amount of index data that must be scanned in order for a parallel scan to be considered.","short_desc_zh":"","source_rev":"english-manuals:2b131290bf4eca74d73d096c1580640a951a50429c6dc6edfba02333e38ee1e5","unit":"","vartype":"integer"}},"Definition":{"Collection":"guc","Key":"min_parallel_index_scan_size","SourceDatabase":"center","Version":"18","SourceTable":"guc","SourceKey":"min_parallel_index_scan_size","SourceRevision":"english-manuals:2b131290bf4eca74d73d096c1580640a951a50429c6dc6edfba02333e38ee1e5","Facts":{"boot_val":"64","category":"Query Tuning / Planner Cost Constants","context":"user","description":"Sets the minimum amount of index data that must be scanned in order for a parallel scan to be considered. Note that a parallel index scan typically won't touch the entire index; it is the number of pages which the planner believes will actually be touched by the scan which is relevant. This parameter is also used to decide whether a particular index can participate in a parallel vacuum. See VACUUM. If this value is specified without units, it is taken as blocks, that is BLCKSZ bytes, typically 8kB. The default is 512 kilobytes (512kB).","doc":{"anchor":"GUC-MIN-PARALLEL-INDEX-SCAN-SIZE","file":"runtime-config-query.html","lang":"en","sha256":"33456ca7ef52bf28e93e34b932a411db7a1b95800179add2cf867dc6ec9144bc","slug":"18"},"documented":true,"enumvals":null,"extra_desc":"If the planner estimates that it will read a number of index pages too small to reach this limit, a parallel scan will not be considered.","lang":"en","max_val":"715827882","metadata_version":"18","min_val":"0","name":"min_parallel_index_scan_size","short_desc":"Sets the minimum amount of index data for a parallel scan.","source":"pg-settings-source-snapshot","unit":"8kB","vartype":"integer"},"ManualEvidence":{"doc":{"anchor":"GUC-MIN-PARALLEL-INDEX-SCAN-SIZE","file":"runtime-config-query.html","lang":"en","sha256":"33456ca7ef52bf28e93e34b932a411db7a1b95800179add2cf867dc6ec9144bc","slug":"18"}},"MeasuredEvidence":{"metadata_version":"18"}},"Text":{"Collection":"guc","Key":"min_parallel_index_scan_size","SourceDatabase":"pgweb","Version":"18","Locale":"zh-Hans","Title":"min_parallel_index_scan_size","Summary":"","BodyHTML":"\u003cp\u003e设置考虑使用并行扫描时必须扫描的最小索引数据量。注意，并行索引扫描通常不会访问整个索引；这里考虑的是规划器认为扫描实际会访问的页面数量。这个参数还用于决定特定的索引是否参与并行vacuum。参见\u003ca href=\"/docs/18/sql-vacuum.html\" title=\"VACUUM\" rel=\"nofollow\"\u003e\u003cspan\u003eVACUUM\u003c/span\u003e\u003c/a\u003e。如果指定值时没有单位，则以块为单位，即\u003ccode\u003eBLCKSZ\u003c/code\u003e字节，通常为8kB。默认值是512千字节（\u003ccode\u003e512kB\u003c/code\u003e）。\u003c/p\u003e","SourceRevision":"2026-09-11@29c86d9","ContentHash":"55c8d750d26ec33868a0645eb620fff02e2735bd91f0296855478e27036eeba1","Payload":{"carried_from":"","carry_reason":"","doc_html":"\u003cp\u003e设置考虑使用并行扫描时必须扫描的最小索引数据量。注意，并行索引扫描通常不会访问整个索引；这里考虑的是规划器认为扫描实际会访问的页面数量。这个参数还用于决定特定的索引是否参与并行vacuum。参见\u003ca href=\"/docs/18/sql-vacuum.html\" title=\"VACUUM\"\u003e\u003cspan class=\"refentrytitle\"\u003eVACUUM\u003c/span\u003e\u003c/a\u003e。如果指定值时没有单位，则以块为单位，即\u003ccode class=\"symbol\"\u003eBLCKSZ\u003c/code\u003e字节，通常为8kB。默认值是512千字节（\u003ccode class=\"literal\"\u003e512kB\u003c/code\u003e）。\u003c/p\u003e","doc_same_as":""}},"RequestedLocale":"zh-Hans","Fallback":false,"Versions":["10","11","12","13","14","15","16","17","18","19","20"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
