"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3513],{3905:(t,e,a)=>{a.d(e,{Zo:()=>m,kt:()=>f});var o=a(67294);function n(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,o)}return a}function r(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?i(Object(a),!0).forEach((function(e){n(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function c(t,e){if(null==t)return{};var a,o,n=function(t,e){if(null==t)return{};var a,o,n={},i=Object.keys(t);for(o=0;o<i.length;o++)a=i[o],e.indexOf(a)>=0||(n[a]=t[a]);return n}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(o=0;o<i.length;o++)a=i[o],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(n[a]=t[a])}return n}var s=o.createContext({}),p=function(t){var e=o.useContext(s),a=e;return t&&(a="function"==typeof t?t(e):r(r({},e),t)),a},m=function(t){var e=p(t.components);return o.createElement(s.Provider,{value:e},t.children)},l="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return o.createElement(o.Fragment,{},e)}},d=o.forwardRef((function(t,e){var a=t.components,n=t.mdxType,i=t.originalType,s=t.parentName,m=c(t,["components","mdxType","originalType","parentName"]),l=p(a),d=n,f=l["".concat(s,".").concat(d)]||l[d]||u[d]||i;return a?o.createElement(f,r(r({ref:e},m),{},{components:a})):o.createElement(f,r({ref:e},m))}));function f(t,e){var a=arguments,n=e&&e.mdxType;if("string"==typeof t||n){var i=a.length,r=new Array(i);r[0]=d;var c={};for(var s in e)hasOwnProperty.call(e,s)&&(c[s]=e[s]);c.originalType=t,c[l]="string"==typeof t?t:n,r[1]=c;for(var p=2;p<i;p++)r[p]=a[p];return o.createElement.apply(null,r)}return o.createElement.apply(null,a)}d.displayName="MDXCreateElement"},30757:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>m,contentTitle:()=>s,default:()=>f,frontMatter:()=>c,metadata:()=>p,toc:()=>l});var o=a(87462),n=a(63366),i=(a(67294),a(3905)),r=["components"],c={id:"automatic-compaction",title:"Automatic compaction"},s=void 0,p={unversionedId:"data-management/automatic-compaction",id:"data-management/automatic-compaction",title:"Automatic compaction",description:"\x3c!--",source:"@site/docs/latest/data-management/automatic-compaction.md",sourceDirName:"data-management",slug:"/data-management/automatic-compaction",permalink:"/docs/latest/data-management/automatic-compaction",draft:!1,tags:[],version:"current",frontMatter:{id:"automatic-compaction",title:"Automatic compaction"},sidebar:"docs",previous:{title:"Compaction",permalink:"/docs/latest/data-management/compaction"},next:{title:"Overview and syntax",permalink:"/docs/latest/querying/sql"}},m={},l=[{value:"Enable automatic compaction",id:"enable-automatic-compaction",level:2},{value:"Web console",id:"web-console",level:3},{value:"Compaction configuration API",id:"compaction-configuration-api",level:3},{value:"Configure automatic compaction",id:"configure-automatic-compaction",level:2},{value:"Avoid conflicts with ingestion",id:"avoid-conflicts-with-ingestion",level:3},{value:"Set frequency of compaction runs",id:"set-frequency-of-compaction-runs",level:3},{value:"View automatic compaction statistics",id:"view-automatic-compaction-statistics",level:2},{value:"Examples",id:"examples",level:2},{value:"Change segment granularity",id:"change-segment-granularity",level:3},{value:"Update partitioning scheme",id:"update-partitioning-scheme",level:3},{value:"Learn more",id:"learn-more",level:2}],u={toc:l},d="wrapper";function f(t){var e=t.components,c=(0,n.Z)(t,r);return(0,i.kt)(d,(0,o.Z)({},u,c,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"In Apache Druid, compaction is a special type of ingestion task that reads data from a Druid datasource and writes it back into the same datasource. A common use case for this is to ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/operations/segment-optimization"},"optimally size segments")," after ingestion to improve query performance. Automatic compaction, or auto-compaction, refers to the system for automatic execution of compaction tasks managed by the ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/design/coordinator"},"Druid Coordinator"),"."),(0,i.kt)("p",null,"The Coordinator ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/configuration/#coordinator-operation"},"indexing period"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"druid.coordinator.period.indexingPeriod"),", controls the frequency of compaction tasks.\nThe default indexing period is 30 minutes, meaning that the Coordinator first checks for segments to compact at most 30 minutes from when auto-compaction is enabled.\nThis time period affects other Coordinator duties including merge and conversion tasks.\nTo configure the auto-compaction time period without interfering with ",(0,i.kt)("inlineCode",{parentName:"p"},"indexingPeriod"),", see ",(0,i.kt)("a",{parentName:"p",href:"#set-frequency-of-compaction-runs"},"Set frequency of compaction runs"),"."),(0,i.kt)("p",null,"At every invocation of auto-compaction, the Coordinator initiates a ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/design/coordinator#segment-search-policy-in-automatic-compaction"},"segment search")," to determine eligible segments to compact.\nWhen there are eligible segments to compact, the Coordinator issues compaction tasks based on available worker capacity.\nIf a compaction task takes longer than the indexing period, the Coordinator waits for it to finish before resuming the period for segment search."),(0,i.kt)("p",null,"As a best practice, you should set up auto-compaction for all Druid datasources. You can run compaction tasks manually for cases where you want to allocate more system resources. For example, you may choose to run multiple compaction tasks in parallel to compact an existing datasource for the first time. See ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/data-management/compaction"},"Compaction")," for additional details and use cases."),(0,i.kt)("p",null,"This topic guides you through setting up automatic compaction for your Druid cluster. See the ",(0,i.kt)("a",{parentName:"p",href:"#examples"},"examples")," for common use cases for automatic compaction."),(0,i.kt)("h2",{id:"enable-automatic-compaction"},"Enable automatic compaction"),(0,i.kt)("p",null,"You can enable automatic compaction for a datasource using the web console or programmatically via an API.\nThis process differs for manual compaction tasks, which can be submitted from the ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/operations/web-console"},"Tasks view of the web console")," or the ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/api-reference/tasks-api"},"Tasks API"),"."),(0,i.kt)("h3",{id:"web-console"},"Web console"),(0,i.kt)("p",null,"Use the web console to enable automatic compaction for a datasource as follows."),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Click ",(0,i.kt)("strong",{parentName:"li"},"Datasources")," in the top-level navigation."),(0,i.kt)("li",{parentName:"ol"},"In the ",(0,i.kt)("strong",{parentName:"li"},"Compaction")," column, click the edit icon for the datasource to compact."),(0,i.kt)("li",{parentName:"ol"},"In the ",(0,i.kt)("strong",{parentName:"li"},"Compaction config")," dialog, configure the auto-compaction settings. The dialog offers a form view as well as a JSON view. Editing the form updates the JSON specification, and editing the JSON updates the form field, if present. Form fields not present in the JSON indicate default values. You may add additional properties to the JSON for auto-compaction settings not displayed in the form. See ",(0,i.kt)("a",{parentName:"li",href:"#configure-automatic-compaction"},"Configure automatic compaction")," for supported settings for auto-compaction."),(0,i.kt)("li",{parentName:"ol"},"Click ",(0,i.kt)("strong",{parentName:"li"},"Submit"),"."),(0,i.kt)("li",{parentName:"ol"},"Refresh the ",(0,i.kt)("strong",{parentName:"li"},"Datasources")," view. The ",(0,i.kt)("strong",{parentName:"li"},"Compaction")," column for the datasource changes from \u201cNot enabled\u201d to \u201cAwaiting first run.\u201d")),(0,i.kt)("p",null,"The following screenshot shows the compaction config dialog for a datasource with auto-compaction enabled.\n",(0,i.kt)("img",{alt:"Compaction config in web console",src:a(45768).Z,width:"1250",height:"640"})),(0,i.kt)("p",null,"To disable auto-compaction for a datasource, click ",(0,i.kt)("strong",{parentName:"p"},"Delete")," from the ",(0,i.kt)("strong",{parentName:"p"},"Compaction config")," dialog. Druid does not retain your auto-compaction configuration."),(0,i.kt)("h3",{id:"compaction-configuration-api"},"Compaction configuration API"),(0,i.kt)("p",null,"Use the ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/api-reference/automatic-compaction-api#automatic-compaction-status"},"Automatic compaction API")," to configure automatic compaction.\nTo enable auto-compaction for a datasource, create a JSON object with the desired auto-compaction settings.\nSee ",(0,i.kt)("a",{parentName:"p",href:"#configure-automatic-compaction"},"Configure automatic compaction")," for the syntax of an auto-compaction spec.\nSend the JSON object as a payload in a ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/api-reference/automatic-compaction-api#automatic-compaction-configuration"},(0,i.kt)("inlineCode",{parentName:"a"},"POST")," request")," to ",(0,i.kt)("inlineCode",{parentName:"p"},"/druid/coordinator/v1/config/compaction"),".\nThe following example configures auto-compaction for the ",(0,i.kt)("inlineCode",{parentName:"p"},"wikipedia")," datasource:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sh"},'curl --location --request POST \'http://localhost:8081/druid/coordinator/v1/config/compaction\' \\\n--header \'Content-Type: application/json\' \\\n--data-raw \'{\n    "dataSource": "wikipedia",\n    "granularitySpec": {\n        "segmentGranularity": "DAY"\n    }\n}\'\n')),(0,i.kt)("p",null,"To disable auto-compaction for a datasource, send a ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/api-reference/automatic-compaction-api#automatic-compaction-configuration"},(0,i.kt)("inlineCode",{parentName:"a"},"DELETE")," request")," to ",(0,i.kt)("inlineCode",{parentName:"p"},"/druid/coordinator/v1/config/compaction/{dataSource}"),". Replace ",(0,i.kt)("inlineCode",{parentName:"p"},"{dataSource}")," with the name of the datasource for which to disable auto-compaction. For example:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sh"},"curl --location --request DELETE 'http://localhost:8081/druid/coordinator/v1/config/compaction/wikipedia'\n")),(0,i.kt)("h2",{id:"configure-automatic-compaction"},"Configure automatic compaction"),(0,i.kt)("p",null,"You can configure automatic compaction dynamically without restarting Druid.\nThe automatic compaction system uses the following syntax:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n    "dataSource": <task_datasource>,\n    "ioConfig": <IO config>,\n    "dimensionsSpec": <custom dimensionsSpec>,\n    "transformSpec": <custom transformSpec>,\n    "metricsSpec": <custom metricsSpec>,\n    "tuningConfig": <parallel indexing task tuningConfig>,\n    "granularitySpec": <compaction task granularitySpec>,\n    "skipOffsetFromLatest": <time period to avoid compaction>,\n    "taskPriority": <compaction task priority>,\n    "taskContext": <task context>\n}\n')),(0,i.kt)("p",null,"Most fields in the auto-compaction configuration correlate to a typical ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/ingestion/ingestion-spec"},"Druid ingestion spec"),".\nThe following properties only apply to auto-compaction:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"skipOffsetFromLatest")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"taskPriority")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"taskContext"))),(0,i.kt)("p",null,"Since the automatic compaction system provides a management layer on top of manual compaction tasks,\nthe auto-compaction configuration does not include task-specific properties found in a typical Druid ingestion spec.\nThe following properties are automatically set by the Coordinator:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"type"),": Set to ",(0,i.kt)("inlineCode",{parentName:"li"},"compact"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"id"),": Generated using the task type, datasource name, interval, and timestamp. The task ID is prefixed with ",(0,i.kt)("inlineCode",{parentName:"li"},"coordinator-issued"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"context"),": Set according to the user-provided ",(0,i.kt)("inlineCode",{parentName:"li"},"taskContext"),".")),(0,i.kt)("p",null,"Compaction tasks typically fetch all ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/data-management/compaction#compaction-io-configuration"},"relevant segments")," prior to launching any subtasks,\n",(0,i.kt)("em",{parentName:"p"},"unless")," the following properties are all set to non-null values. It is strongly recommended to set them to non-null values to\nmaximize performance and minimize disk usage of the ",(0,i.kt)("inlineCode",{parentName:"p"},"compact")," tasks launched by auto-compaction:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/latest/data-management/compaction#compaction-granularity-spec"},(0,i.kt)("inlineCode",{parentName:"a"},"granularitySpec")),", with non-null values for each of ",(0,i.kt)("inlineCode",{parentName:"li"},"segmentGranularity"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"queryGranularity"),", and ",(0,i.kt)("inlineCode",{parentName:"li"},"rollup")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/latest/data-management/compaction#compaction-dimensions-spec"},(0,i.kt)("inlineCode",{parentName:"a"},"dimensionsSpec"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"metricsSpec"))),(0,i.kt)("p",null,"For more details on each of the specs in an auto-compaction configuration, see ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/configuration/#automatic-compaction-dynamic-configuration"},"Automatic compaction dynamic configuration"),"."),(0,i.kt)("h3",{id:"avoid-conflicts-with-ingestion"},"Avoid conflicts with ingestion"),(0,i.kt)("p",null,"Compaction tasks may be interrupted when they interfere with ingestion. For example, this occurs when an ingestion task needs to write data to a segment for a time interval locked for compaction. If there are continuous failures that prevent compaction from making progress, consider one of the following strategies:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Set ",(0,i.kt)("inlineCode",{parentName:"li"},"skipOffsetFromLatest")," to reduce the chance of conflicts between ingestion and compaction. See more details in this section below."),(0,i.kt)("li",{parentName:"ul"},"Increase the priority value of compaction tasks relative to ingestion tasks. Only recommended for advanced users. This approach can cause ingestion jobs to fail or lag. To change the priority of compaction tasks, set ",(0,i.kt)("inlineCode",{parentName:"li"},"taskPriority")," to the desired priority value in the auto-compaction configuration. For details on the priority values of different task types, see ",(0,i.kt)("a",{parentName:"li",href:"/docs/latest/ingestion/tasks#lock-priority"},"Lock priority"),".")),(0,i.kt)("p",null,"The Coordinator compacts segments from newest to oldest. In the auto-compaction configuration, you can set a time period, relative to the end time of the most recent segment, for segments that should not be compacted. Assign this value to ",(0,i.kt)("inlineCode",{parentName:"p"},"skipOffsetFromLatest"),". Note that this offset is not relative to the current time but to the latest segment time. For example, if you want to skip over segments from five days prior to the end time of the most recent segment, assign ",(0,i.kt)("inlineCode",{parentName:"p"},'"skipOffsetFromLatest": "P5D"'),"."),(0,i.kt)("p",null,"To set ",(0,i.kt)("inlineCode",{parentName:"p"},"skipOffsetFromLatest"),", consider how frequently you expect the stream to receive late arriving data. If your stream only occasionally receives late arriving data, the auto-compaction system robustly compacts your data even though data is ingested outside the ",(0,i.kt)("inlineCode",{parentName:"p"},"skipOffsetFromLatest")," window. For most realtime streaming ingestion use cases, it is reasonable to set ",(0,i.kt)("inlineCode",{parentName:"p"},"skipOffsetFromLatest")," to a few hours or a day."),(0,i.kt)("h3",{id:"set-frequency-of-compaction-runs"},"Set frequency of compaction runs"),(0,i.kt)("p",null,"If you want the Coordinator to check for compaction more frequently than its indexing period, create a separate group to handle compaction duties.\nSet the time period of the duty group in the ",(0,i.kt)("inlineCode",{parentName:"p"},"coordinator/runtime.properties")," file.\nThe following example shows how to create a duty group named ",(0,i.kt)("inlineCode",{parentName:"p"},"compaction")," and set the auto-compaction period to 1 minute:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},'druid.coordinator.dutyGroups=["compaction"]\ndruid.coordinator.compaction.duties=["compactSegments"]\ndruid.coordinator.compaction.period=PT60S\n')),(0,i.kt)("h2",{id:"view-automatic-compaction-statistics"},"View automatic compaction statistics"),(0,i.kt)("p",null,"After the Coordinator has initiated auto-compaction, you can view compaction statistics for the datasource, including the number of bytes, segments, and intervals already compacted and those awaiting compaction. The Coordinator also reports the total bytes, segments, and intervals not eligible for compaction in accordance with its ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/design/coordinator#segment-search-policy-in-automatic-compaction"},"segment search policy"),"."),(0,i.kt)("p",null,"In the web console, the Datasources view displays auto-compaction statistics. The Tasks view shows the task information for compaction tasks that were triggered by the automatic compaction system."),(0,i.kt)("p",null,"To get statistics by API, send a ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/api-reference/automatic-compaction-api#automatic-compaction-status"},(0,i.kt)("inlineCode",{parentName:"a"},"GET")," request")," to ",(0,i.kt)("inlineCode",{parentName:"p"},"/druid/coordinator/v1/compaction/status"),". To filter the results to a particular datasource, pass the datasource name as a query parameter to the request\u2014for example, ",(0,i.kt)("inlineCode",{parentName:"p"},"/druid/coordinator/v1/compaction/status?dataSource=wikipedia"),"."),(0,i.kt)("h2",{id:"examples"},"Examples"),(0,i.kt)("p",null,"The following examples demonstrate potential use cases in which auto-compaction may improve your Druid performance. See more details in ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/data-management/compaction#compaction-strategies"},"Compaction strategies"),". The examples in this section do not change the underlying data."),(0,i.kt)("h3",{id:"change-segment-granularity"},"Change segment granularity"),(0,i.kt)("p",null,"You have a stream set up to ingest data with ",(0,i.kt)("inlineCode",{parentName:"p"},"HOUR")," segment granularity into the ",(0,i.kt)("inlineCode",{parentName:"p"},"wikistream")," datasource. You notice that your Druid segments are smaller than the ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/operations/segment-optimization"},"recommended segment size")," of 5 million rows per segment. You wish to automatically compact segments to ",(0,i.kt)("inlineCode",{parentName:"p"},"DAY")," granularity while leaving the latest week of data ",(0,i.kt)("em",{parentName:"p"},"not")," compacted because your stream consistently receives data within that time period."),(0,i.kt)("p",null,"The following auto-compaction configuration compacts existing ",(0,i.kt)("inlineCode",{parentName:"p"},"HOUR")," segments into ",(0,i.kt)("inlineCode",{parentName:"p"},"DAY")," segments while leaving the latest week of data not compacted:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n  "dataSource": "wikistream",\n  "granularitySpec": {\n    "segmentGranularity": "DAY"\n  },\n  "skipOffsetFromLatest": "P1W",\n}\n')),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"}," Auto-compaction skips datasources containing ALL granularity segments when the target granularity is different.")),(0,i.kt)("h3",{id:"update-partitioning-scheme"},"Update partitioning scheme"),(0,i.kt)("p",null,"For your ",(0,i.kt)("inlineCode",{parentName:"p"},"wikipedia")," datasource, you want to optimize segment access when regularly ingesting data without compromising compute time when querying the data. Your ingestion spec for batch append uses ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/ingestion/native-batch#dynamic-partitioning"},"dynamic partitioning")," to optimize for write-time operations, while your stream ingestion partitioning is configured by the stream service. You want to implement auto-compaction to reorganize the data with a suitable read-time partitioning using ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/ingestion/native-batch#multi-dimension-range-partitioning"},"multi-dimension range partitioning"),". Based on the dimensions frequently accessed in queries, you wish to partition on the following dimensions: ",(0,i.kt)("inlineCode",{parentName:"p"},"channel"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"countryName"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"namespace"),"."),(0,i.kt)("p",null,"The following auto-compaction configuration compacts updates the ",(0,i.kt)("inlineCode",{parentName:"p"},"wikipedia")," segments to use multi-dimension range partitioning:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n  "dataSource": "wikipedia",\n  "tuningConfig": {\n    "partitionsSpec": {\n      "type": "range",\n      "partitionDimensions": [\n        "channel",\n        "countryName",\n        "namespace"\n      ],\n      "targetRowsPerSegment": 5000000\n    }\n  }\n}\n')),(0,i.kt)("h2",{id:"learn-more"},"Learn more"),(0,i.kt)("p",null,"See the following topics for more information:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/latest/data-management/compaction"},"Compaction")," for an overview of compaction and how to set up manual compaction in Druid."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/latest/operations/segment-optimization"},"Segment optimization")," for guidance on evaluating and optimizing Druid segment size."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/latest/design/coordinator#automatic-compaction"},"Coordinator process")," for details on how the Coordinator plans compaction tasks.")))}f.isMDXComponent=!0},45768:(t,e,a)=>{a.d(e,{Z:()=>o});const o=a.p+"assets/images/compaction-config-2d5e391fe681a9c978060c383357b531.png"}}]);