{"Entry":{"collection":"guc","key":"io_max_combine_limit","name":"io_max_combine_limit","aliases":[],"metadata":{"baseline":false,"boot_human":"Not specified","boot_val":null,"category":"Resource Usage / I/O","category_zh":"","changed_in":[],"changes":[{"documentation_changed":false,"fields":{},"from":"17","status":"added","to":"18"}],"content_hash":"327e35285adbedeaa5888102e8ddb2ae08de3bd13a6a85e64e3eddfe3abba07f","context":"","default_changed_in":[],"default_history":[{"from":"18","to":"19","value":"128 KiB (16 × 8kB)"}],"editorial":{"advice":{"olap":"A larger clamp merely permits a larger user combine limit; it does not create adjacent I/O or add concurrency. Benchmark actual request sizes, sequential throughput, and mixed-workload fairness with both parameters set intentionally.","oltp":"Keep the PG18 server clamp at 128kB unless measurements show that larger combined requests improve eligible I/O without harming latency. Raising it alone changes nothing while io_combine_limit remains lower, and changing it requires a restart.","small":"Retain 128kB on small or mixed-use storage. Do not increase a restart-only global ceiling to fix queue-depth problems, which belong to the concurrency controls."},"mechanism":["io_max_combine_limit is the server-start ceiling that silently clamps the user-settable io_combine_limit. It protects the I/O subsystem from request sizes beyond the configured server policy.","This controls bytes per combined operation, not queue depth. The feasible maximum depends on operating system and BLCKSZ, typically 1MB on Unix and 128kB on Windows.","Raising io_combine_limit above this value has no effect until this startup parameter is also raised. Combined requests can still be smaller when adjacent work is unavailable. Its postmaster context fixes the value at server start; changing it requires a restart."],"pitfalls":["Treating the server byte-size clamp as an I/O concurrency limit.","Raising io_max_combine_limit while io_combine_limit remains lower and expecting a change.","Expecting larger combined requests when adjacent eligible operations do not exist.","Ignoring operating-system and BLCKSZ limits, especially the smaller typical Windows maximum.","Forgetting that a change requires a server restart."],"references":[{"title":"PostgreSQL 19 Beta 4: io_max_combine_limit","url":"https://www.postgresql.org/docs/19/runtime-config-resource.html#GUC-IO-MAX-COMBINE-LIMIT"},{"title":"PostgreSQL 19 release notes","url":"https://www.postgresql.org/docs/19/release-19.html"}],"related":["io_combine_limit","io_max_concurrency","io_method","shared_buffers"],"summary":"io_max_combine_limit — Server-wide limit that clamps io_combine_limit. Observed in PG18–19 Beta 4; its last measured boot default is 128 KiB (16 × 8kB) in PG19 Beta 4, with postmaster context. This is a beta-snapshot fact and can change before PostgreSQL 19 GA."},"enumvals":[],"first_version":"18","group":"Resource Usage","group_slug":"resource","imported_at":"2026-09-27T17:57:31.403213+08:00","intro_commit":{"authored_at":"2025-03-19T11:40:56+13:00","discussion":["https://postgr.es/m/CA%2BhUKG%2B2T9p-%2BzM6Eeou-RAJjTML6eit1qn26f9twznX59qtCA%40mail.gmail.com"],"hash":"10f6646847515b1ab02735c24b04abaf1996f65f","subject":"Introduce io_max_combine_limit.","url":"https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=10f6646847515b1ab02735c24b04abaf1996f65f"},"key":"io_max_combine_limit","last_version":"20","max_val":"","min_val":"","name":"io_max_combine_limit","position":182,"present_in":["18","19","20"],"short_desc":"Controls the largest I/O size in operations that combine I/O, and silently limits the user-settable parameter io_combine_limit.","short_desc_zh":"","source_rev":"english-manuals:34735a6f4ff9a98f6fc656674af163d9f563a22391a8adec8846a4060992efe7","unit":"","vartype":"integer"}},"Definition":{"Collection":"guc","Key":"io_max_combine_limit","SourceDatabase":"center","Version":"18","SourceTable":"guc","SourceKey":"io_max_combine_limit","SourceRevision":"english-manuals:34735a6f4ff9a98f6fc656674af163d9f563a22391a8adec8846a4060992efe7","Facts":{"boot_val":"16","category":"Resource Usage / I/O","context":"postmaster","description":"Controls the largest I/O size in operations that combine I/O, and silently limits the user-settable parameter io_combine_limit. This parameter can only be set at server start. If this value is specified without units, it is taken as blocks, that is BLCKSZ bytes, typically 8kB. The maximum possible size depends on the operating system and block size, but is typically 1MB on Unix and 128kB on Windows. The default is 128kB.","doc":{"anchor":"GUC-IO-MAX-COMBINE-LIMIT","file":"runtime-config-resource.html","lang":"en","sha256":"2e207c599f0884dfbe594558c478a2c7c132578981071e980e2015f31dfce28c","slug":"18"},"documented":true,"enumvals":null,"extra_desc":null,"lang":"en","max_val":"128","metadata_version":"18","min_val":"1","name":"io_max_combine_limit","short_desc":"Server-wide limit that clamps io_combine_limit.","source":"pg-settings-source-snapshot","unit":"8kB","vartype":"integer"},"ManualEvidence":{"doc":{"anchor":"GUC-IO-MAX-COMBINE-LIMIT","file":"runtime-config-resource.html","lang":"en","sha256":"2e207c599f0884dfbe594558c478a2c7c132578981071e980e2015f31dfce28c","slug":"18"}},"MeasuredEvidence":{"metadata_version":"18"}},"Text":{"Collection":"guc","Key":"io_max_combine_limit","SourceDatabase":"pgweb","Version":"18","Locale":"zh-Hans","Title":"io_max_combine_limit","Summary":"","BodyHTML":"\u003cp\u003e控制合并 I/O 操作时允许的最大 I/O 大小，并会静默限制用户可设置的参数 \u003ccode\u003eio_combine_limit\u003c/code\u003e。该参数只能在服务器启动时设置。如果该值未指定单位，则按块计算，也就是 \u003ccode\u003eBLCKSZ\u003c/code\u003e 字节，通常为 8kB。最大可能值取决于操作系统和块大小，但在 Unix 上通常为 1MB，在 Windows 上通常为 128kB。默认值是 128kB。\u003c/p\u003e","SourceRevision":"2026-09-11@29c86d9","ContentHash":"5c96432292b7f434d700034c172693fedd169cdaca3537b3d9a6678a6a5275bc","Payload":{"carried_from":"","carry_reason":"","doc_html":"\u003cp\u003e控制合并 I/O 操作时允许的最大 I/O 大小，并会静默限制用户可设置的参数 \u003ccode class=\"varname\"\u003eio_combine_limit\u003c/code\u003e。该参数只能在服务器启动时设置。如果该值未指定单位，则按块计算，也就是 \u003ccode class=\"symbol\"\u003eBLCKSZ\u003c/code\u003e 字节，通常为 8kB。最大可能值取决于操作系统和块大小，但在 Unix 上通常为 1MB，在 Windows 上通常为 128kB。默认值是 128kB。\u003c/p\u003e","doc_same_as":""}},"RequestedLocale":"zh-Hans","Fallback":false,"Versions":["18","19","20"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
