{"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"}],"derived_content_hash":"7e0f8160819fbe7e302d1f08e18e16aeb06af7d03ab0e5b33352e99cd10bcd1e","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"],"repair_provenance":{"original_source_revision":"english-manuals:ada1cadd2c9da3cb179ece8e09ecafbacb8d51d3148bb444d1c18db7c8e0f71a","receipt_sha256":"c10dc86ef1b02b46de8603151f3211c57fa3dd78c43d2f780b2fde03270fcbef","repair":"wiki-repair-20261023"},"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":"wiki-repair-20261023:078e4376da6f92d72e36f8524d3b7a42f42dce461587909e2a5e7d6aa429ee4f","unit":"","vartype":"integer"}},"Definition":{"Collection":"guc","Key":"maintenance_io_concurrency","SourceDatabase":"center","Version":"18","SourceTable":"guc","SourceKey":"maintenance_io_concurrency","SourceRevision":"wiki-repair-20261023:078e4376da6f92d72e36f8524d3b7a42f42dce461587909e2a5e7d6aa429ee4f","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).","description_zh":"与 effective_io_concurrency 类似，但用于为多个客户端会话执行的维护工作。 默认值为 16。对于位于特定表空间中的表，可以通过设置同名的表空间参数覆盖此值（见 ALTER TABLESPACE）。","description_zh_html":"\u003cp\u003e\n        与 \u003ccode class=\"varname\"\u003eeffective_io_concurrency\u003c/code\u003e 类似，但用于为多个客户端会话执行的维护工作。\n       \u003c/p\u003e\u003cp\u003e\n        默认值为 \u003ccode class=\"literal\"\u003e16\u003c/code\u003e。对于位于特定表空间中的表，可以通过设置同名的表空间参数覆盖此值（见 \u003ca class=\"xref\" href=\"/zh/docs/18/sql-altertablespace.html\" title=\"ALTER TABLESPACE\"\u003e\u003cspan class=\"refentrytitle\"\u003eALTER TABLESPACE\u003c/span\u003e\u003c/a\u003e）。\n       \u003c/p\u003e","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","translation_provenance":{"inputs":[{"kind":"current-pgdoc-translation","path":"/Users/vonng/pgsty/pgdoc/zh/18/html/runtime-config-resource.html","sha256":"f5fedbf88ec5f973aaf4e525c03e46dda2a2186dabee154e26780da96b2ac85a"}],"kind":"same-version-pgdoc","locale":"zh-Hans","source_revision":"b1b500221dbe5437cfca004d6b04d3f6e422765d","version":"18"},"unit":null,"vartype":"integer","zh_from":"same-version-pgdoc"},"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":"center","Version":"18","Locale":"en","Title":"maintenance_io_concurrency","Summary":"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).","BodyHTML":"\u003cp\u003eSimilar 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).\u003c/p\u003e","SourceRevision":"wiki-repair-20261023:078e4376da6f92d72e36f8524d3b7a42f42dce461587909e2a5e7d6aa429ee4f","ContentHash":"56e474075f6b55790a97bf0ba71ae1cfd51bb2af21811df30f2232cb053ad021","Payload":{"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)."}},"RequestedLocale":"en","Fallback":false,"Versions":["13","14","15","16","17","18","19","20"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
