{"Entry":{"collection":"guc","key":"maintenance_io_concurrency","name":"maintenance_io_concurrency","aliases":[],"metadata":{"baseline":false,"boot_human":"Not specified","boot_val":null,"category":"Resource Usage / I/O","category_zh":"","changed_in":["17","18"],"changes":[{"documentation_changed":false,"fields":{},"from":"12","status":"added","to":"13"},{"documentation_changed":false,"fields":{"short_desc":{"from":"A variant of effective_io_concurrency that is used for maintenance work.","to":"A variant of \"effective_io_concurrency\" that is used for maintenance work."}},"from":"16","status":"changed","to":"17"},{"documentation_changed":true,"fields":{"boot_val":{"from":"10","to":"16"},"category":{"from":"Resource Usage / Asynchronous Behavior","to":"Resource Usage / I/O"},"extra_desc":{"from":null,"to":"0 disables simultaneous requests."}},"from":"17","status":"changed","to":"18"}],"content_hash":"3e542407039d7db718820cafb7c44e421d0ef7d4c98aa769c6fec274ac4d2864","context":"","default_changed_in":["18"],"default_history":[{"from":"13","to":"17","value":"10"},{"from":"18","to":"19","value":"16"}],"editorial":{"advice":{"olap":"Higher maintenance concurrency can shorten eligible scans or vacuum work on high-latency, high-IOPS storage, but it can also deepen the queue seen by analytical queries. Benchmark maintenance completion time and mixed-workload latency together; it does not change request size.","oltp":"For PG13–17, tune this as a maintenance-prefetch target only on supported storage; for PG18, tune it as an AIO concurrency target. Measure foreground tail latency while VACUUM or other eligible maintenance runs, and use a tablespace override for heterogeneous storage.","small":"Use the version- and platform-appropriate default unless maintenance is demonstrably I/O-stalled."},"mechanism":["maintenance_io_concurrency is the per-maintenance-operation target for storage concurrency used by work performed on behalf of many clients. A tablespace option of the same name can override it for that storage; it is neither a cluster-wide device cap nor a memory allocation.","In PG13–17 it chiefly controls maintenance prefetch on supported systems. The measured Linux-Docker boot value is 10, while unsupported platforms without effective prefetch-advice support defaulted to 0; those releases do not have the PG18 core-AIO execution model.","PostgreSQL 18 integrates the target with core AIO and uses a boot default of 16. io_max_concurrency separately clamps simultaneous execution by one process, io_method chooses the execution mechanism, and combine limits control bytes per request. Its user context permits scoped runtime changes."],"pitfalls":["Calling 10 the unconditional PG13–17 default when unsupported platforms used 0.","Back-projecting PG18 core-AIO semantics into PG13–17 prefetch behavior.","Treating the per-operation target as a cluster or device-wide cap.","Confusing concurrency with io_combine_limit's bytes-per-request dimension.","Using one value across tablespaces with materially different storage."],"references":[{"title":"PostgreSQL 19 Beta 4: maintenance_io_concurrency","url":"https://www.postgresql.org/docs/19/runtime-config-resource.html#GUC-MAINTENANCE-IO-CONCURRENCY"},{"title":"PostgreSQL 19 release notes","url":"https://www.postgresql.org/docs/19/release-19.html"}],"related":["effective_io_concurrency","io_method","io_max_concurrency","io_combine_limit","vacuum_buffer_usage_limit"],"summary":"maintenance_io_concurrency — A variant of \"effective_io_concurrency\" that is used for maintenance work. Observed in PG13–19 Beta 4; its last measured boot default is 16 in PG19 Beta 4, with user context. This is a beta-snapshot fact and can change before PostgreSQL 19 GA."},"enumvals":[],"first_version":"13","group":"Resource Usage","group_slug":"resource","imported_at":"2026-09-27T17:57:31.662939+08:00","intro_commit":{"authored_at":"2020-03-16T12:31:34+13:00","discussion":["https://postgr.es/m/CA%2BhUKGJUw08dPs_3EUcdO6M90GnjofPYrWp4YSLaBkgYwS-AqA%40mail.gmail.com"],"hash":"fc34b0d9de27ab5ac2887da00b3892bdabd89e45","subject":"Introduce a maintenance_io_concurrency setting.","url":"https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=fc34b0d9de27ab5ac2887da00b3892bdabd89e45"},"key":"maintenance_io_concurrency","last_version":"20","max_val":"","min_val":"","name":"maintenance_io_concurrency","position":259,"present_in":["13","14","15","16","17","18","19","20"],"short_desc":"Similar to effective_io_concurrency, but used for maintenance work that is done on behalf of many client sessions.","short_desc_zh":"","source_rev":"english-manuals:ada1cadd2c9da3cb179ece8e09ecafbacb8d51d3148bb444d1c18db7c8e0f71a","unit":"","vartype":"integer"}},"Definition":{"Collection":"guc","Key":"maintenance_io_concurrency","SourceDatabase":"center","Version":"18","SourceTable":"guc","SourceKey":"maintenance_io_concurrency","SourceRevision":"english-manuals:ada1cadd2c9da3cb179ece8e09ecafbacb8d51d3148bb444d1c18db7c8e0f71a","Facts":{"boot_val":"16","category":"Resource Usage / I/O","context":"user","description":"Similar to effective_io_concurrency, but used for maintenance work that is done on behalf of many client sessions. The default is 16. This value can be overridden for tables in a particular tablespace by setting the tablespace parameter of the same name (see ALTER TABLESPACE).","doc":{"anchor":"GUC-MAINTENANCE-IO-CONCURRENCY","file":"runtime-config-resource.html","lang":"en","sha256":"2e207c599f0884dfbe594558c478a2c7c132578981071e980e2015f31dfce28c","slug":"18"},"documented":true,"enumvals":null,"extra_desc":"0 disables simultaneous requests.","lang":"en","max_val":"1000","metadata_version":"18","min_val":"0","name":"maintenance_io_concurrency","short_desc":"A variant of \"effective_io_concurrency\" that is used for maintenance work.","source":"pg-settings-source-snapshot","unit":null,"vartype":"integer"},"ManualEvidence":{"doc":{"anchor":"GUC-MAINTENANCE-IO-CONCURRENCY","file":"runtime-config-resource.html","lang":"en","sha256":"2e207c599f0884dfbe594558c478a2c7c132578981071e980e2015f31dfce28c","slug":"18"}},"MeasuredEvidence":{"metadata_version":"18"}},"Text":{"Collection":"guc","Key":"maintenance_io_concurrency","SourceDatabase":"pgweb","Version":"18","Locale":"zh-Hans","Title":"maintenance_io_concurrency","Summary":"","BodyHTML":"\u003cp\u003e与 \u003ccode\u003eeffective_io_concurrency\u003c/code\u003e 类似，但用于为多个客户端会话执行的维护工作。\u003c/p\u003e\u003cp\u003e默认值为 \u003ccode\u003e16\u003c/code\u003e。对于位于特定表空间中的表，可以通过设置同名的表空间参数覆盖此值（见\u003ca href=\"/docs/18/sql-altertablespace.html\" title=\"ALTER TABLESPACE\" rel=\"nofollow\"\u003e\u003cspan\u003eALTER TABLESPACE\u003c/span\u003e\u003c/a\u003e）。\u003c/p\u003e","SourceRevision":"2026-09-11@29c86d9","ContentHash":"e97e66692609137e0bcaf02c82a79e03a7a6140d0f946a4127bcf9fa2de6eabe","Payload":{"carried_from":"","carry_reason":"","doc_html":"\u003cp\u003e与 \u003ccode class=\"varname\"\u003eeffective_io_concurrency\u003c/code\u003e 类似，但用于为多个客户端会话执行的维护工作。\u003c/p\u003e\u003cp\u003e默认值为 \u003ccode class=\"literal\"\u003e16\u003c/code\u003e。对于位于特定表空间中的表，可以通过设置同名的表空间参数覆盖此值（见\u003ca href=\"/docs/18/sql-altertablespace.html\" title=\"ALTER TABLESPACE\"\u003e\u003cspan class=\"refentrytitle\"\u003eALTER TABLESPACE\u003c/span\u003e\u003c/a\u003e）。\u003c/p\u003e","doc_same_as":""}},"RequestedLocale":"zh-Hans","Fallback":false,"Versions":["13","14","15","16","17","18","19","20"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
