Automated deployment with doris branch master@ 62d380c4b9f246978fe714d290d2ec9e725f7816
diff --git a/404.html b/404.html
index 93777a2..d13499d 100644
--- a/404.html
+++ b/404.html
@@ -30,15 +30,15 @@
 
 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Montserrat:500">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Sans+SC:400"><title data-rh="true">Page Not Found - Apache Doris</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://doris.apache.org/404.html"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docsearch:docusaurus_tag" content="default"><meta data-rh="true" property="og:title" content="Page Not Found - Apache Doris"><link data-rh="true" rel="icon" href="/images/favicon.ico"><link data-rh="true" rel="canonical" href="https://doris.apache.org/404.html"><link data-rh="true" rel="alternate" href="https://doris.apache.org/404.html" hreflang="en-US"><link data-rh="true" rel="alternate" href="https://doris.apache.org/zh-CN/404.html" hreflang="zh-Hans-CN"><link data-rh="true" rel="alternate" href="https://doris.apache.org/404.html" hreflang="x-default"><link rel="stylesheet" href="https://cdnd.selectdb.com/assets/css/styles.0992b96a.css">
-<link rel="preload" href="https://cdnd.selectdb.com/assets/js/runtime~main.984cc420.js" as="script">
-<link rel="preload" href="https://cdnd.selectdb.com/assets/js/main.e413743d.js" as="script">
+<link rel="preload" href="https://cdnd.selectdb.com/assets/js/runtime~main.26fee1b1.js" as="script">
+<link rel="preload" href="https://cdnd.selectdb.com/assets/js/main.7428db35.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><div class="announcementBar_s0pr" style="background-color:#3C2FD4;color:#FFFFFF" role="banner"><div class="announcementBarPlaceholder_qxfj"></div><div class="announcementBarContent_dpRF"><a href="https://github.com/apache/doris" target="_blank" style="display: flex; width: 100%; align-items: center; justify-content: center; margin-left: 4px; text-decoration: none; color: white">Do you like Apache Doris?Give us a 🌟 on GitHub 
                         <img style="width: 1.2rem; height: 1.2rem; margin-left: 0.4rem;" src="/images/github-white-icon.svg">
                     </a></div><button type="button" class="clean-btn close announcementBarClose_iXyO" aria-label="Close"><svg viewBox="0 0 15 15" width="14" height="14"><g stroke="currentColor" stroke-width="3.1"><path d="M.75.75l13.5 13.5M14.25.75L.75 14.25"></path></g></svg></button></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="https://cdnd.selectdb.com/images/logo.svg" alt="Apache Doris" class="themedImage_ToTc themedImage--light_HNdA"><img src="https://cdnd.selectdb.com/images/logo.svg" alt="Apache Doris" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate"></b></a><a class="navbar__item navbar__link" style="text-align:center" href="/">Home</a><div class="navbar__item dropdown dropdown--hoverable"><a class="navbar__link" aria-haspopup="true" aria-expanded="false" role="button" href="/docs/get-starting/quick-start">Docs</a><ul class="dropdown__menu"><li><a class="dropdown__link" style="text-align:left" align="left" href="/docs/get-starting/quick-start">Getting Started</a></li><li><a class="dropdown__link" style="text-align:left" align="left" href="/docs/install/standard-deployment">Install and Deploy</a></li><li><a class="dropdown__link" style="text-align:left" align="left" href="/docs/faq/install-faq">FAQ</a></li></ul></div><a class="navbar__item navbar__link" style="text-align:center" href="/blog">Blogs</a><div class="navbar__item dropdown dropdown--hoverable"><a class="navbar__link" aria-haspopup="true" aria-expanded="false" role="button" href="/community/join-community">Community</a><ul class="dropdown__menu"><li><a class="dropdown__link" style="text-align:left" align="left" href="/community/join-community">Join Community</a></li><li><a class="dropdown__link" style="text-align:left" align="left" href="/community/team">Doris Team</a></li><li><a class="dropdown__link" style="text-align:left" align="left" href="/community/how-to-contribute/">How to Contribute</a></li><li><a class="dropdown__link" style="text-align:left" align="left" href="/community/developer-guide/debug-tool">Developer Guide</a></li></ul></div><a class="navbar__item navbar__link" style="text-align:center" href="/users">User Stories</a></div><div class="navbar__items navbar__items--right"><div class="versions">Version<!-- -->:<div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__link" aria-haspopup="true" aria-expanded="false" role="button" href="/docs/get-starting/quick-start">2.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" style="text-align:center" href="/docs/dev/get-starting/quick-start">dev</a></li><li><a class="dropdown__link" style="text-align:center" href="/docs/get-starting/quick-start">2.0</a></li><li><a class="dropdown__link" style="text-align:center" href="/docs/1.2/get-starting/">1.2</a></li></ul></div></div><a class="navbar__item navbar__link header-right-button-primary navbar-download-mobile" style="text-align:center" href="/download">Download</a><div class="navbar-search searchBox_ZlJk"><div class="navbar__search searchBarContainer_PzyC"><input placeholder="Search" aria-label="Search" class="navbar__search-input"><div class="loadingRing__K5d searchBarLoadingRing_e2f0"><div></div><div></div><div></div><div></div></div><div class="searchHintContainer_m7ml"><kbd class="searchHint_zuPL">ctrl</kbd><kbd class="searchHint_zuPL">K</kbd></div></div></div><a href="https://github.com/apache/doris" target="_blank" rel="noopener noreferrer" class="github-btn desktop header-right-button-github"></a><a class="header-right-button-primary navbar-download-desktop" href="/download">Download</a></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><div class="main-wrapper"><main class="container margin-vert--xl"><div class="row"><div class="col col--6 col--offset-3"><h1 class="hero__title">Page Not Found</h1><p>We could not find what you were looking for.</p><p>Please contact the owner of the site that linked you to the original URL and let them know their link is broken.</p></div></div></main></div></div><div class="footer"><div class="container"><div class="footer-box"><div class="left"><img src="/images/asf_logo_apache.svg" alt="" class="themedImage_ToTc themedImage--light_HNdA footer__logo"><img src="/images/asf_logo_apache.svg" alt="" class="themedImage_ToTc themedImage--dark_i4oU footer__logo"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">ASF</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Foundation<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="footer__link-item">License<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="footer__link-item">Events<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Sponsorship<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://privacy.apache.org/policies/privacy-policy-public.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Privacy<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Thanks<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">Resources</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/download">Download</a></li><li class="footer__item"><a class="footer__link-item" href="/learning">Docs</a></li><li class="footer__item"><a class="footer__link-item" href="/blog">Blogs</a></li><li class="footer__item"><a class="footer__link-item" href="/users">User Stories</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community Support</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/community/team">Doris Team</a></li><li class="footer__item"><a class="footer__link-item" href="/community/how-to-contribute/">How to Contribute</a></li><li class="footer__item"><a href="https://github.com/apache/doris/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Source Code<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://github.com/apache/doris/discussions" target="_blank" rel="noopener noreferrer" class="footer__link-item">Improvement Proposal<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://github.com/apache/doris/issues/16392" target="_blank" rel="noopener noreferrer" class="footer__link-item">Roadmap<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div></div><div class="right"><div class="footer__title">Connect with Us</div><div class="social-list"><div class="social"><a href="mailto:dev@doris.apache.org" target="_blank" title="mail" class="item"><svg width="2em" height="2em" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5.6003 6H26.3997C27.8186 6 28.982 7.10964 29 8.46946L16.0045 15.454L3.01202 8.47829C3.02405 7.11258 4.1784 6 5.6003 6ZM3.01202 11.1508L3 23.5011C3 24.8756 4.16938 26 5.6003 26H26.3997C27.8306 26 29 24.8756 29 23.5011V11.145L16.3111 17.8028C16.1157 17.9058 15.8813 17.9058 15.6889 17.8028L3.01202 11.1508V11.1508Z" fill="currentColor"></path></svg></a><a href="https://github.com/apache/doris" target="_blank" title="github" class="item"><svg width="2em" height="2em" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M16.0001 2.66675C8.63342 2.66675 2.66675 8.63341 2.66675 16.0001C2.66524 18.7991 3.54517 21.5276 5.1817 23.7983C6.81824 26.0691 9.12828 27.7668 11.7841 28.6508C12.4508 28.7668 12.7001 28.3668 12.7001 28.0161C12.7001 27.7001 12.6828 26.6508 12.6828 25.5334C9.33342 26.1508 8.46675 24.7174 8.20008 23.9668C8.04942 23.5828 7.40008 22.4001 6.83342 22.0828C6.36675 21.8334 5.70008 21.2161 6.81608 21.2001C7.86675 21.1828 8.61608 22.1668 8.86675 22.5668C10.0668 24.5828 11.9841 24.0161 12.7494 23.6668C12.8668 22.8001 13.2161 22.2174 13.6001 21.8841C10.6334 21.5508 7.53342 20.4001 7.53342 15.3001C7.53342 13.8494 8.04942 12.6507 8.90008 11.7161C8.76675 11.3827 8.30008 10.0161 9.03342 8.18275C9.03342 8.18275 10.1494 7.83342 12.7001 9.55075C13.7855 9.2495 14.907 9.09787 16.0334 9.10008C17.1668 9.10008 18.3001 9.24942 19.3668 9.54942C21.9161 7.81608 23.0334 8.18408 23.0334 8.18408C23.7668 10.0174 23.3001 11.3841 23.1668 11.7174C24.0161 12.6507 24.5334 13.8334 24.5334 15.3001C24.5334 20.4174 21.4174 21.5508 18.4508 21.8841C18.9334 22.3001 19.3508 23.1001 19.3508 24.3508C19.3508 26.1334 19.3334 27.5668 19.3334 28.0174C19.3334 28.3668 19.5841 28.7828 20.2508 28.6494C22.8975 27.7558 25.1973 26.0547 26.8266 23.7856C28.4559 21.5165 29.3327 18.7936 29.3334 16.0001C29.3334 8.63341 23.3668 2.66675 16.0001 2.66675V2.66675Z" fill="currentColor"></path></svg></a><a href="https://twitter.com/doris_apache" target="_blank" title="twitter" class="item"><svg width="2rem" height="2rem" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3 3H10.6067L29 29H21.3933L3 3ZM6.31485 4.69302L22.3127 27.307H25.6852L9.68727 4.69302H6.31485Z" fill="white"></path><path d="M14.202 18.8346L5.18225 29H3L13.2092 17.4314L14.202 18.8346ZM18.4342 14.0647L28.2518 3H25.9448L17.4314 12.6471L18.4342 14.0647Z" fill="white"></path></svg></a></div><div class="social"><a href="https://join.slack.com/t/apachedoriscommunity/shared_invite/zt-1x7x8fger-F7NoshFQn~djlvGdnEtxUQ" title="slack" target="_blank" class="item"><svg width="2em" height="2em" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_125_278)"><path d="M12.5875 16.6906C11.0844 16.6906 9.86562 17.9094 9.86562 19.4125V26.2375C9.86562 26.9594 10.1524 27.6517 10.6628 28.1622C11.1733 28.6726 11.8656 28.9594 12.5875 28.9594C13.3094 28.9594 14.0017 28.6726 14.5122 28.1622C15.0226 27.6517 15.3094 26.9594 15.3094 26.2375V19.4531C15.3094 17.9094 14.0906 16.6906 12.5875 16.6906ZM3 19.4531C3 20.175 3.28677 20.8673 3.79722 21.3778C4.30767 21.8882 4.99999 22.175 5.72187 22.175C6.44376 22.175 7.13608 21.8882 7.64653 21.3778C8.15698 20.8673 8.44375 20.175 8.44375 19.4531V16.7312H5.7625C4.25938 16.6906 3 17.9094 3 19.4531ZM12.5875 3C11.8656 3 11.1733 3.28677 10.6628 3.79722C10.1524 4.30767 9.86562 4.99999 9.86562 5.72187C9.86562 6.44376 10.1524 7.13608 10.6628 7.64653C11.1733 8.15698 11.8656 8.44375 12.5875 8.44375H15.3094V5.72187C15.3094 4.21875 14.0906 3 12.5875 3ZM5.72187 15.3094H12.5469C13.2688 15.3094 13.9611 15.0226 14.4715 14.5122C14.982 14.0017 15.2688 13.3094 15.2688 12.5875C15.2688 11.8656 14.982 11.1733 14.4715 10.6628C13.9611 10.1524 13.2688 9.86562 12.5469 9.86562H5.72187C4.99999 9.86562 4.30767 10.1524 3.79722 10.6628C3.28677 11.1733 3 11.8656 3 12.5875C3 13.3094 3.28677 14.0017 3.79722 14.5122C4.30767 15.0226 4.99999 15.3094 5.72187 15.3094ZM26.2375 9.86562C24.7344 9.86562 23.5156 11.0844 23.5156 12.5875V15.3094H26.2375C26.9594 15.3094 27.6517 15.0226 28.1622 14.5122C28.6726 14.0017 28.9594 13.3094 28.9594 12.5875C28.9594 11.8656 28.6726 11.1733 28.1622 10.6628C27.6517 10.1524 26.9594 9.86562 26.2375 9.86562ZM16.6906 5.72187V12.5875C16.6906 13.3094 16.9774 14.0017 17.4878 14.5122C17.9983 15.0226 18.6906 15.3094 19.4125 15.3094C20.1344 15.3094 20.8267 15.0226 21.3372 14.5122C21.8476 14.0017 22.1344 13.3094 22.1344 12.5875V5.72187C22.1344 4.99999 21.8476 4.30767 21.3372 3.79722C20.8267 3.28677 20.1344 3 19.4125 3C18.6906 3 17.9983 3.28677 17.4878 3.79722C16.9774 4.30767 16.6906 4.99999 16.6906 5.72187ZM22.1344 26.2781C22.1344 24.775 20.9156 23.5562 19.4125 23.5562H16.6906V26.2781C16.6906 27 16.9774 27.6923 17.4878 28.2028C17.9983 28.7132 18.6906 29 19.4125 29C20.1344 29 20.8267 28.7132 21.3372 28.2028C21.8476 27.6923 22.1344 27 22.1344 26.2781ZM26.2781 16.6906H19.4125C18.6906 16.6906 17.9983 16.9774 17.4878 17.4878C16.9774 17.9983 16.6906 18.6906 16.6906 19.4125C16.6906 20.1344 16.9774 20.8267 17.4878 21.3372C17.9983 21.8476 18.6906 22.1344 19.4125 22.1344H26.2375C27.7406 22.1344 28.9594 20.9156 28.9594 19.4125C29 17.9094 27.7812 16.6906 26.2781 16.6906Z" fill="currentColor"></path></g><defs><clipPath id="clip0_125_278"><rect width="26" height="26" fill="currentColor" transform="translate(3 3)"></rect></clipPath></defs></svg></a><a href="https://www.youtube.com/@apachedoris/channels" title="youtube" target="_blank" class="item"><svg width="2rem" height="2rem" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_3462_1106)"><path d="M30.3048 7.66776C30.7927 8.14769 31.1465 8.74331 31.3319 9.39705C31.7949 11.91 32.0182 14.46 31.9988 17.0138C32.0164 19.558 31.7931 22.0982 31.3319 24.6017C31.1465 25.2554 30.7927 25.851 30.3048 26.3309C29.8169 26.8109 29.2115 27.1589 28.5469 27.3413C26.026 28 16.0142 28 16.0142 28C16.0142 28 5.97317 28 3.48158 27.3413C2.81702 27.1589 2.21154 26.8109 1.72366 26.3309C1.23579 25.851 0.882017 25.2554 0.696547 24.6017C0.22555 22.0991 -0.00754264 19.5589 0.000288097 17.0138C-0.00936809 14.4591 0.223732 11.9091 0.696547 9.39705C0.882017 8.74331 1.23579 8.14769 1.72366 7.66776C2.21154 7.18784 2.81702 6.83983 3.48158 6.65738C6.00118 5.9869 16.0142 6.00002 16.0142 6.00002C16.0142 6.00002 26.0526 6.00002 28.5469 6.65738C29.2115 6.83983 29.8169 7.18784 30.3048 7.66776ZM12 23L22 17.0092L12 11V23Z" fill="white"></path></g><defs><clipPath id="clip0_3462_1106"><rect width="32" height="32" fill="white"></rect></clipPath></defs></svg></a><a href="https://www.linkedin.com/company/doris-apache/" title="linkedin" target="_blank" class="item"><svg width="2rem" height="2rem" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4.29925 26.9996H9.66738V11.6781H4.29925V26.9996ZM22.1628 11.1949C19.9409 11.1949 18.7157 11.9388 17.3054 13.7407V11.6777H11.9459V26.9996H17.305V18.6738C17.305 16.9168 18.145 15.1982 20.1535 15.1982C22.162 15.1982 22.6559 16.9164 22.6559 18.632V27H28V18.2902C28 12.2386 24.3854 11.1949 22.1628 11.1949ZM6.99325 4C5.3395 4 4 5.21047 4 6.7046C4 8.19759 5.3395 9.40617 6.99325 9.40617C8.6455 9.40617 9.985 8.19722 9.985 6.7046C9.985 5.21047 8.6455 4 6.99325 4Z" fill="white"></path></svg></a></div></div></div></div><div class="footer__copyright">Copyright © 2023 The Apache Software Foundation,Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" target="_blank">Apache License, Version 2.0</a>. Apache, Doris, Apache Doris, the Apache feather logo and the Apache Doris logo are trademarks of The Apache Software Foundation.</div></div></div></div>
-<script src="https://cdnd.selectdb.com/assets/js/runtime~main.984cc420.js"></script>
-<script src="https://cdnd.selectdb.com/assets/js/main.e413743d.js"></script>
+<script src="https://cdnd.selectdb.com/assets/js/runtime~main.26fee1b1.js"></script>
+<script src="https://cdnd.selectdb.com/assets/js/main.7428db35.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/assets/images/IoV-CAN-data-21c4722dff0b60c64dd2286cbf3df3be.jpeg b/assets/images/IoV-CAN-data-21c4722dff0b60c64dd2286cbf3df3be.jpeg
new file mode 100644
index 0000000..412d8af
--- /dev/null
+++ b/assets/images/IoV-CAN-data-21c4722dff0b60c64dd2286cbf3df3be.jpeg
Binary files differ
diff --git a/assets/images/IoV-DTC-data-query-7e0534a9aafd3005e1e08439acb288fc.png b/assets/images/IoV-DTC-data-query-7e0534a9aafd3005e1e08439acb288fc.png
new file mode 100644
index 0000000..b52ecff
--- /dev/null
+++ b/assets/images/IoV-DTC-data-query-7e0534a9aafd3005e1e08439acb288fc.png
Binary files differ
diff --git a/assets/images/IoV-Doris-based-data-warehouse-6eb6329ab3bedda6ed707f02219d85c7.png b/assets/images/IoV-Doris-based-data-warehouse-6eb6329ab3bedda6ed707f02219d85c7.png
new file mode 100644
index 0000000..293975f
--- /dev/null
+++ b/assets/images/IoV-Doris-based-data-warehouse-6eb6329ab3bedda6ed707f02219d85c7.png
Binary files differ
diff --git a/assets/images/IoV-Hive-based-data-warehouse-1bbef26f4fbb3012d0ae17fc3b1c4fa5.png b/assets/images/IoV-Hive-based-data-warehouse-1bbef26f4fbb3012d0ae17fc3b1c4fa5.png
new file mode 100644
index 0000000..bcf6b13
--- /dev/null
+++ b/assets/images/IoV-Hive-based-data-warehouse-1bbef26f4fbb3012d0ae17fc3b1c4fa5.png
Binary files differ
diff --git a/assets/js/1d5cfc48.a26d5e22.js b/assets/js/1d5cfc48.a26d5e22.js
new file mode 100644
index 0000000..ab006ed
--- /dev/null
+++ b/assets/js/1d5cfc48.a26d5e22.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoris_website=self.webpackChunkdoris_website||[]).push([[56945],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function s(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=n.createContext({}),c=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(a),h=r,m=u["".concat(l,".").concat(h)]||u[h]||d[h]||i;return a?n.createElement(m,o(o({ref:t},p),{},{components:a})):n.createElement(m,o({ref:t},p))}));function m(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:r,o[1]=s;for(var c=2;c<i;c++)o[c]=a[c];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}h.displayName="MDXCreateElement"},27953:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var n=a(87462),r=(a(67294),a(3905));const i={title:"Less Components, Higher Performance: Apache Doris Instead of ClickHouse, MySQL, Presto, and HBase",summary:"This post is about building a unified OLAP platform. An insurance company tries to build a data warehouse that can undertake all their customer-facing, analyst-facing, and management-facing data analysis workloads.",date:"2023-11-22",author:"Big Data Platform R&D Team of CIGNA&CMB",tags:["Best Practice"]},o=void 0,s={permalink:"/blog/less-components-higher-performance-apache-doris-instead-of-clickhouse-mysql-presto-and-hbase",source:"@site/blog/less-components-higher-performance-apache-doris-instead-of-clickhouse-mysql-presto-and-hbase.md",title:"Less Components, Higher Performance: Apache Doris Instead of ClickHouse, MySQL, Presto, and HBase",description:"\x3c!--",date:"2023-11-22T00:00:00.000Z",formattedDate:"November 22, 2023",tags:[{label:"Best Practice",permalink:"/blog/tags/best-practice"}],hasTruncateMarker:!1,authors:[{name:"Big Data Platform R&D Team of CIGNA&CMB"}],frontMatter:{title:"Less Components, Higher Performance: Apache Doris Instead of ClickHouse, MySQL, Presto, and HBase",summary:"This post is about building a unified OLAP platform. An insurance company tries to build a data warehouse that can undertake all their customer-facing, analyst-facing, and management-facing data analysis workloads.",date:"2023-11-22",author:"Big Data Platform R&D Team of CIGNA&CMB",tags:["Best Practice"]},prevItem:{title:"How Big Data Is Saving Lives in Real Time: IoV Data Analytics Helps Prevent Accidents",permalink:"/blog/how-big-data-is-saving-lives-in-real-time-iov-data-analytics-helps-prevent-accidents"},nextItem:{title:"Apache Doris Summit Asia 2023: What Can You Expect From Apache Doris as a Data Warehouse?",permalink:"/blog/apache-doris-summit-asia-2023-what-can-you-expect-from-apache-doris-as-a-data-warehouse"}},l={authorsImageUrls:[void 0]},c=[{value:"Component-Heavy Data Architecture",id:"component-heavy-data-architecture",level:2},{value:"Replacing Four Components with Apache Doris",id:"replacing-four-components-with-apache-doris",level:2},{value:"A Deeper Look into Apache Doris",id:"a-deeper-look-into-apache-doris",level:2}],p={toc:c},u="wrapper";function d(e){let{components:t,...i}=e;return(0,r.kt)(u,(0,n.Z)({},p,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"This post is about building a unified OLAP platform. An insurance company tries to build a data warehouse that can undertake all their customer-facing, analyst-facing, and management-facing data analysis workloads. The main tasks include: "),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Self-service insurance contract query"),": This is for insurance customers to check their contract details by their contract ID. It should also support filters such as coverage period, insurance types, and claim amount. "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Multi-dimensional analysis"),": Analysts develop their reports based on different data dimensions as they need, so they can extract insights to facilitate product innovation and their anti-fraud efforts. "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Dashboarding"),": This is to create visual overview of the insurance sales trends and the horizontal and vertical comparison of different metrics.")),(0,r.kt)("h2",{id:"component-heavy-data-architecture"},"Component-Heavy Data Architecture"),(0,r.kt)("p",null,"The user started with Lambda architecture, spliting their data pipeline into a batch processing link and a stream processing link. For real-time data streaming, they apply Flink CDC; for batch import, they incorporate Sqoop, Python, and DataX to build their own data integration tool named Hisen.  "),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"multi-component-data-warehouse-mysql-clickhouse-hbase-hive-presto",src:a(34739).Z,width:"1280",height:"640"})),(0,r.kt)("p",null,"Then, the real-time and offline data meets in the data warehousing layer, which is made up of five components."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"ClickHouse")),(0,r.kt)("p",null,"The data warehouse is of flat table design and ClickHouse is superb in flat table reading. But as business evolves, things become challenging in two ways:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"To support cross-table joins and point queries, the user requires the star schema, but that's difficult to implement in ClickHouse."),(0,r.kt)("li",{parentName:"ul"},"Changes in insurance contracts need to be updated in the data warehouse in real time. In ClickHouse, that is done by recreating a flat table to overwrite the old one, which is not fast enough.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"MySQL")),(0,r.kt)("p",null,"After calculation, data metrics are stored in MySQL, but as the data size grows, MySQL starts to struggle, with emerging problems like prolonged execution time and errors thrown."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Apache")," ",(0,r.kt)("strong",{parentName:"p"},"Hive")," ",(0,r.kt)("strong",{parentName:"p"},"+ Presto")),(0,r.kt)("p",null,"Hive is the main executor in the batch processing link. It can transform, aggregate, query offline data. Presto is a complement to Hive for interactive analysis."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Apache HBase")),(0,r.kt)("p",null,"HBase undertakes primary key queries. It reads customer status from MySQL and Hive, including customer credits, coverage period, and sum insured. However, since HBase does not support secondary indexes, it has limited capability in reading non-primary key columns. Plus, as a NoSQL database, HBase does not support SQL statements."),(0,r.kt)("p",null,"The components have to work in conjunction to serve all needs, making the data warehouse too much to take care of. It is not easy to get started with because engineers must be trained on all these components. Also, the complexity of architecture adds to the risks of latency. "),(0,r.kt)("p",null,"So the user tried to look for a tool that ticks more boxes in fulfilling their requirements. The first thing they need is real-time capabilities, including real-time writing, real-time updating, and real-time response to data queries. Secondly, they need more flexibility in data analysis to support customer-facing self-service queries, like multi-dimensional analysis, join queries of large tables, primary key indexes, roll-ups, and drill-downs. Then, for batch processing, they also want high throughput in data writing."),(0,r.kt)("p",null,"They eventually made up their mind with ",(0,r.kt)("a",{parentName:"p",href:"https://doris.apache.org/"},"Apache Doris"),". "),(0,r.kt)("h2",{id:"replacing-four-components-with-apache-doris"},"Replacing Four Components with Apache Doris"),(0,r.kt)("p",null," Apache Doris is capable of both real-time and offline data analysis, and it supports both high-throughput interactive analysis and high-concurrency point queries. That's why it can replace ClickHouse, MySQL, Presto, and Apache HBase and work as the unified query gateway for the entire data system. "),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"unified-data-warehouse-kafka-apache-doris-hive",src:a(26302).Z,width:"1280",height:"686"})),(0,r.kt)("p",null,"The improved data pipeline is a much cleaner Lambda architecture. "),(0,r.kt)("p",null,"Apache Doris provides a wide range of data ingestion methods. It's quick in data writing. On top of this, it also implements Merge-on-Write to improve its performance on concurrent point queries. "),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Reduced Cost")),(0,r.kt)("p",null,"The new architecture has reduced the user's cost in human efforts. For one thing, the much simpler data architecture leads to much easier maintenance; for another, developers no longer need to join the real-time and offline data in the data serving API."),(0,r.kt)("p",null,"The user can also save money with Doris because it supports tiered storage. It allows the user to put their huge amount of rarely accessed historical data in object storage, which is much cheaper to hoard data."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Higher Efficiency")),(0,r.kt)("p",null,"Apache Doris can reach a QPS of 10,000s and respond to billions of point queries within milliseconds, so the customer-facing queries are easy for it to handle. Tiered storage that separates hot data from cold data also increases their query efficiency."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Service Availability")),(0,r.kt)("p",null,"As a unified data warehouse for storage, computation, and data services, Apache Doris allows for easy disaster recovery. With less components, they don't have to worry about data loss or duplication. "),(0,r.kt)("p",null,"An important guarantee of service availability for the user is the Cross-Cluster Replication (CCR) capability of Apache Doris. It can synchronize data from cluster to cluster within minutes or even seconds, and it implements two mechanisms to ensure data reliability:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Binlog"),": This mechanism can automatically log the data changes and generate a LogID for each data modification operation. The incremental LogIDs make sure that data changes are traceable and orderly."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Data persistence"),": In the case of system meltdown or emergencies, data will be put into disks.")),(0,r.kt)("h2",{id:"a-deeper-look-into-apache-doris"},"A Deeper Look into Apache Doris"),(0,r.kt)("p",null,"Apache Doris can replace the ClickHouse, MySQL, Presto, and HBase because it has a comprehensive collection of capabilities all along the data processing pipeline. In data ingestion, it enables low-latency real-time writing based on its support for Flink CDC and Merge-on-Write. It guarantees Exactly-Once writing by its Label mechanism and transactional loading. In data queries, it supports both Star Schema and flat table aggregation, so it can provide high performance in bother multi-table joins and large single table queries. It also provides various ways to speed up different queries, like ",(0,r.kt)("a",{parentName:"p",href:"https://doris.apache.org/docs/dev/data-table/index/inverted-index/"},"inverted index")," for full-text search and range queries, short-circuit plan and prepared statements for point queries."))}d.isMDXComponent=!0},34739:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/multi-component-data-warehouse-mysql-clickhouse-hbase-hive-presto-6e3dbac016295bce3108943b4bddcf4c.png"},26302:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/unified-data-warehouse-kafka-apache-doris-hive-0c1accc90b4280a26b81be17b31e5a63.png"}}]);
\ No newline at end of file
diff --git a/assets/js/1d5cfc48.afa92123.js b/assets/js/1d5cfc48.afa92123.js
deleted file mode 100644
index 541daf0..0000000
--- a/assets/js/1d5cfc48.afa92123.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkdoris_website=self.webpackChunkdoris_website||[]).push([[56945],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function s(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=n.createContext({}),c=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(a),h=r,m=u["".concat(l,".").concat(h)]||u[h]||d[h]||i;return a?n.createElement(m,o(o({ref:t},p),{},{components:a})):n.createElement(m,o({ref:t},p))}));function m(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:r,o[1]=s;for(var c=2;c<i;c++)o[c]=a[c];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}h.displayName="MDXCreateElement"},27953:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var n=a(87462),r=(a(67294),a(3905));const i={title:"Less Components, Higher Performance: Apache Doris Instead of ClickHouse, MySQL, Presto, and HBase",summary:"This post is about building a unified OLAP platform. An insurance company tries to build a data warehouse that can undertake all their customer-facing, analyst-facing, and management-facing data analysis workloads.",date:"2023-11-22",author:"Big Data Platform R&D Team of CIGNA&CMB",tags:["Best Practice"]},o=void 0,s={permalink:"/blog/less-components-higher-performance-apache-doris-instead-of-clickhouse-mysql-presto-and-hbase",source:"@site/blog/less-components-higher-performance-apache-doris-instead-of-clickhouse-mysql-presto-and-hbase.md",title:"Less Components, Higher Performance: Apache Doris Instead of ClickHouse, MySQL, Presto, and HBase",description:"\x3c!--",date:"2023-11-22T00:00:00.000Z",formattedDate:"November 22, 2023",tags:[{label:"Best Practice",permalink:"/blog/tags/best-practice"}],hasTruncateMarker:!1,authors:[{name:"Big Data Platform R&D Team of CIGNA&CMB"}],frontMatter:{title:"Less Components, Higher Performance: Apache Doris Instead of ClickHouse, MySQL, Presto, and HBase",summary:"This post is about building a unified OLAP platform. An insurance company tries to build a data warehouse that can undertake all their customer-facing, analyst-facing, and management-facing data analysis workloads.",date:"2023-11-22",author:"Big Data Platform R&D Team of CIGNA&CMB",tags:["Best Practice"]},nextItem:{title:"Apache Doris Summit Asia 2023: What Can You Expect From Apache Doris as a Data Warehouse?",permalink:"/blog/apache-doris-summit-asia-2023-what-can-you-expect-from-apache-doris-as-a-data-warehouse"}},l={authorsImageUrls:[void 0]},c=[{value:"Component-Heavy Data Architecture",id:"component-heavy-data-architecture",level:2},{value:"Replacing Four Components with Apache Doris",id:"replacing-four-components-with-apache-doris",level:2},{value:"A Deeper Look into Apache Doris",id:"a-deeper-look-into-apache-doris",level:2}],p={toc:c},u="wrapper";function d(e){let{components:t,...i}=e;return(0,r.kt)(u,(0,n.Z)({},p,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"This post is about building a unified OLAP platform. An insurance company tries to build a data warehouse that can undertake all their customer-facing, analyst-facing, and management-facing data analysis workloads. The main tasks include: "),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Self-service insurance contract query"),": This is for insurance customers to check their contract details by their contract ID. It should also support filters such as coverage period, insurance types, and claim amount. "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Multi-dimensional analysis"),": Analysts develop their reports based on different data dimensions as they need, so they can extract insights to facilitate product innovation and their anti-fraud efforts. "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Dashboarding"),": This is to create visual overview of the insurance sales trends and the horizontal and vertical comparison of different metrics.")),(0,r.kt)("h2",{id:"component-heavy-data-architecture"},"Component-Heavy Data Architecture"),(0,r.kt)("p",null,"The user started with Lambda architecture, spliting their data pipeline into a batch processing link and a stream processing link. For real-time data streaming, they apply Flink CDC; for batch import, they incorporate Sqoop, Python, and DataX to build their own data integration tool named Hisen.  "),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"multi-component-data-warehouse-mysql-clickhouse-hbase-hive-presto",src:a(34739).Z,width:"1280",height:"640"})),(0,r.kt)("p",null,"Then, the real-time and offline data meets in the data warehousing layer, which is made up of five components."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"ClickHouse")),(0,r.kt)("p",null,"The data warehouse is of flat table design and ClickHouse is superb in flat table reading. But as business evolves, things become challenging in two ways:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"To support cross-table joins and point queries, the user requires the star schema, but that's difficult to implement in ClickHouse."),(0,r.kt)("li",{parentName:"ul"},"Changes in insurance contracts need to be updated in the data warehouse in real time. In ClickHouse, that is done by recreating a flat table to overwrite the old one, which is not fast enough.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"MySQL")),(0,r.kt)("p",null,"After calculation, data metrics are stored in MySQL, but as the data size grows, MySQL starts to struggle, with emerging problems like prolonged execution time and errors thrown."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Apache")," ",(0,r.kt)("strong",{parentName:"p"},"Hive")," ",(0,r.kt)("strong",{parentName:"p"},"+ Presto")),(0,r.kt)("p",null,"Hive is the main executor in the batch processing link. It can transform, aggregate, query offline data. Presto is a complement to Hive for interactive analysis."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Apache HBase")),(0,r.kt)("p",null,"HBase undertakes primary key queries. It reads customer status from MySQL and Hive, including customer credits, coverage period, and sum insured. However, since HBase does not support secondary indexes, it has limited capability in reading non-primary key columns. Plus, as a NoSQL database, HBase does not support SQL statements."),(0,r.kt)("p",null,"The components have to work in conjunction to serve all needs, making the data warehouse too much to take care of. It is not easy to get started with because engineers must be trained on all these components. Also, the complexity of architecture adds to the risks of latency. "),(0,r.kt)("p",null,"So the user tried to look for a tool that ticks more boxes in fulfilling their requirements. The first thing they need is real-time capabilities, including real-time writing, real-time updating, and real-time response to data queries. Secondly, they need more flexibility in data analysis to support customer-facing self-service queries, like multi-dimensional analysis, join queries of large tables, primary key indexes, roll-ups, and drill-downs. Then, for batch processing, they also want high throughput in data writing."),(0,r.kt)("p",null,"They eventually made up their mind with ",(0,r.kt)("a",{parentName:"p",href:"https://doris.apache.org/"},"Apache Doris"),". "),(0,r.kt)("h2",{id:"replacing-four-components-with-apache-doris"},"Replacing Four Components with Apache Doris"),(0,r.kt)("p",null," Apache Doris is capable of both real-time and offline data analysis, and it supports both high-throughput interactive analysis and high-concurrency point queries. That's why it can replace ClickHouse, MySQL, Presto, and Apache HBase and work as the unified query gateway for the entire data system. "),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"unified-data-warehouse-kafka-apache-doris-hive",src:a(26302).Z,width:"1280",height:"686"})),(0,r.kt)("p",null,"The improved data pipeline is a much cleaner Lambda architecture. "),(0,r.kt)("p",null,"Apache Doris provides a wide range of data ingestion methods. It's quick in data writing. On top of this, it also implements Merge-on-Write to improve its performance on concurrent point queries. "),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Reduced Cost")),(0,r.kt)("p",null,"The new architecture has reduced the user's cost in human efforts. For one thing, the much simpler data architecture leads to much easier maintenance; for another, developers no longer need to join the real-time and offline data in the data serving API."),(0,r.kt)("p",null,"The user can also save money with Doris because it supports tiered storage. It allows the user to put their huge amount of rarely accessed historical data in object storage, which is much cheaper to hoard data."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Higher Efficiency")),(0,r.kt)("p",null,"Apache Doris can reach a QPS of 10,000s and respond to billions of point queries within milliseconds, so the customer-facing queries are easy for it to handle. Tiered storage that separates hot data from cold data also increases their query efficiency."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Service Availability")),(0,r.kt)("p",null,"As a unified data warehouse for storage, computation, and data services, Apache Doris allows for easy disaster recovery. With less components, they don't have to worry about data loss or duplication. "),(0,r.kt)("p",null,"An important guarantee of service availability for the user is the Cross-Cluster Replication (CCR) capability of Apache Doris. It can synchronize data from cluster to cluster within minutes or even seconds, and it implements two mechanisms to ensure data reliability:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Binlog"),": This mechanism can automatically log the data changes and generate a LogID for each data modification operation. The incremental LogIDs make sure that data changes are traceable and orderly."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Data persistence"),": In the case of system meltdown or emergencies, data will be put into disks.")),(0,r.kt)("h2",{id:"a-deeper-look-into-apache-doris"},"A Deeper Look into Apache Doris"),(0,r.kt)("p",null,"Apache Doris can replace the ClickHouse, MySQL, Presto, and HBase because it has a comprehensive collection of capabilities all along the data processing pipeline. In data ingestion, it enables low-latency real-time writing based on its support for Flink CDC and Merge-on-Write. It guarantees Exactly-Once writing by its Label mechanism and transactional loading. In data queries, it supports both Star Schema and flat table aggregation, so it can provide high performance in bother multi-table joins and large single table queries. It also provides various ways to speed up different queries, like ",(0,r.kt)("a",{parentName:"p",href:"https://doris.apache.org/docs/dev/data-table/index/inverted-index/"},"inverted index")," for full-text search and range queries, short-circuit plan and prepared statements for point queries."))}d.isMDXComponent=!0},34739:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/multi-component-data-warehouse-mysql-clickhouse-hbase-hive-presto-6e3dbac016295bce3108943b4bddcf4c.png"},26302:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/unified-data-warehouse-kafka-apache-doris-hive-0c1accc90b4280a26b81be17b31e5a63.png"}}]);
\ No newline at end of file
diff --git a/assets/js/3c0271cd.918c7cd1.js b/assets/js/3c0271cd.918c7cd1.js
deleted file mode 100644
index f3f813f..0000000
--- a/assets/js/3c0271cd.918c7cd1.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkdoris_website=self.webpackChunkdoris_website||[]).push([[70493],{3905:(e,t,a)=>{a.d(t,{Zo:()=>_,kt:()=>p});var l=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,l)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?n(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):n(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function r(e,t){if(null==e)return{};var a,l,i=function(e,t){if(null==e)return{};var a,l,i={},n=Object.keys(e);for(l=0;l<n.length;l++)a=n[l],t.indexOf(a)>=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(l=0;l<n.length;l++)a=n[l],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var s=l.createContext({}),u=function(e){var t=l.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},_=function(e){var t=u(e.components);return l.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},d=l.forwardRef((function(e,t){var a=e.components,i=e.mdxType,n=e.originalType,s=e.parentName,_=r(e,["components","mdxType","originalType","parentName"]),c=u(a),d=i,p=c["".concat(s,".").concat(d)]||c[d]||m[d]||n;return a?l.createElement(p,o(o({ref:t},_),{},{components:a})):l.createElement(p,o({ref:t},_))}));function p(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=a.length,o=new Array(n);o[0]=d;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r[c]="string"==typeof e?e:i,o[1]=r;for(var u=2;u<n;u++)o[u]=a[u];return l.createElement.apply(null,o)}return l.createElement.apply(null,a)}d.displayName="MDXCreateElement"},60899:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>r,toc:()=>u});var l=a(87462),i=(a(67294),a(3905));const n={title:"BE Configuration",language:"en",toc_min_heading_level:2,toc_max_heading_level:4},o=void 0,r={unversionedId:"admin-manual/config/be-config",id:"admin-manual/config/be-config",title:"BE Configuration",description:"\x3c!--",source:"@site/docs/admin-manual/config/be-config.md",sourceDirName:"admin-manual/config",slug:"/admin-manual/config/be-config",permalink:"/docs/dev/admin-manual/config/be-config",draft:!1,tags:[],version:"current",frontMatter:{title:"BE Configuration",language:"en",toc_min_heading_level:2,toc_max_heading_level:4},sidebar:"docs",previous:{title:"FE Configuration",permalink:"/docs/dev/admin-manual/config/fe-config"},next:{title:"User Property",permalink:"/docs/dev/admin-manual/config/user-property"}},s={},u=[{value:"View configuration items",id:"view-configuration-items",level:2},{value:"Set configuration items",id:"set-configuration-items",level:2},{value:"Examples",id:"examples",level:2},{value:"Configurations",id:"configurations",level:2},{value:"Services",id:"services",level:3},{value:"<code>be_port</code>",id:"be_port",level:4},{value:"<code>heartbeat_service_port</code>",id:"heartbeat_service_port",level:4},{value:"<code>webserver_port</code>",id:"webserver_port",level:4},{value:"<code>brpc_port</code>",id:"brpc_port",level:4},{value:"<code>arrow_flight_sql_port</code>",id:"arrow_flight_sql_port",level:4},{value:"<code>enable_https</code>",id:"enable_https",level:4},{value:"<code>priority_networks</code>",id:"priority_networks",level:4},{value:"<code>storage_root_path</code>",id:"storage_root_path",level:4},{value:"<code>heartbeat_service_thread_count</code>",id:"heartbeat_service_thread_count",level:4},{value:"<code>ignore_broken_disk</code>",id:"ignore_broken_disk",level:4},{value:"<code>mem_limit</code>",id:"mem_limit",level:4},{value:"<code>cluster_id</code>",id:"cluster_id",level:4},{value:"<code>custom_config_dir</code>",id:"custom_config_dir",level:4},{value:"<code>trash_file_expire_time_sec</code>",id:"trash_file_expire_time_sec",level:4},{value:"<code>es_http_timeout_ms</code>",id:"es_http_timeout_ms",level:4},{value:"<code>es_scroll_keepalive</code>",id:"es_scroll_keepalive",level:4},{value:"<code>external_table_connect_timeout_sec</code>",id:"external_table_connect_timeout_sec",level:4},{value:"<code>status_report_interval</code>",id:"status_report_interval",level:4},{value:"<code>brpc_max_body_size</code>",id:"brpc_max_body_size",level:4},{value:"<code>brpc_socket_max_unwritten_bytes</code>",id:"brpc_socket_max_unwritten_bytes",level:4},{value:"<code>transfer_large_data_by_brpc</code>",id:"transfer_large_data_by_brpc",level:4},{value:"<code>brpc_num_threads</code>",id:"brpc_num_threads",level:4},{value:"<code>thrift_rpc_timeout_ms</code>",id:"thrift_rpc_timeout_ms",level:4},{value:"<code>thrift_client_retry_interval_ms</code>",id:"thrift_client_retry_interval_ms",level:4},{value:"<code>thrift_connect_timeout_seconds</code>",id:"thrift_connect_timeout_seconds",level:4},{value:"<code>thrift_server_type_of_fe</code>",id:"thrift_server_type_of_fe",level:4},{value:"<code>txn_commit_rpc_timeout_ms</code>",id:"txn_commit_rpc_timeout_ms",level:4},{value:"<code>txn_map_shard_size</code>",id:"txn_map_shard_size",level:4},{value:"<code>txn_shard_size</code>",id:"txn_shard_size",level:4},{value:"<code>unused_rowset_monitor_interval</code>",id:"unused_rowset_monitor_interval",level:4},{value:"<code>max_client_cache_size_per_host</code>",id:"max_client_cache_size_per_host",level:4},{value:"<code>string_type_length_soft_limit_bytes</code>",id:"string_type_length_soft_limit_bytes",level:4},{value:"<code>big_column_size_buffer</code>",id:"big_column_size_buffer",level:4},{value:"<code>small_column_size_buffer</code>",id:"small_column_size_buffer",level:4},{value:"<code>jsonb_type_length_soft_limit_bytes</code>",id:"jsonb_type_length_soft_limit_bytes",level:4},{value:"Query",id:"query",level:3},{value:"<code>fragment_pool_queue_size</code>",id:"fragment_pool_queue_size",level:4},{value:"<code>fragment_pool_thread_num_min</code>",id:"fragment_pool_thread_num_min",level:4},{value:"<code>fragment_pool_thread_num_max</code>",id:"fragment_pool_thread_num_max",level:4},{value:"<code>doris_max_pushdown_conjuncts_return_rate</code>",id:"doris_max_pushdown_conjuncts_return_rate",level:4},{value:"<code>doris_max_scan_key_num</code>",id:"doris_max_scan_key_num",level:4},{value:"<code>doris_scan_range_row_count</code>",id:"doris_scan_range_row_count",level:4},{value:"<code>doris_scanner_queue_size</code>",id:"doris_scanner_queue_size",level:4},{value:"<code>doris_scanner_row_num</code>",id:"doris_scanner_row_num",level:4},{value:"<code>doris_scanner_row_bytes</code>",id:"doris_scanner_row_bytes",level:4},{value:"<code>doris_scanner_thread_pool_queue_size</code>",id:"doris_scanner_thread_pool_queue_size",level:4},{value:"<code>doris_scanner_thread_pool_thread_num</code>",id:"doris_scanner_thread_pool_thread_num",level:4},{value:"<code>doris_max_remote_scanner_thread_pool_thread_num</code>",id:"doris_max_remote_scanner_thread_pool_thread_num",level:4},{value:"<code>enable_prefetch</code>",id:"enable_prefetch",level:4},{value:"<code>enable_quadratic_probing</code>",id:"enable_quadratic_probing",level:4},{value:"<code>exchg_node_buffer_size_bytes</code>",id:"exchg_node_buffer_size_bytes",level:4},{value:"<code>max_pushdown_conditions_per_column</code>",id:"max_pushdown_conditions_per_column",level:4},{value:"<code>max_send_batch_parallelism_per_job</code>",id:"max_send_batch_parallelism_per_job",level:4},{value:"<code>doris_scan_range_max_mb</code>",id:"doris_scan_range_max_mb",level:4},{value:"compaction",id:"compaction",level:3},{value:"<code>disable_auto_compaction</code>",id:"disable_auto_compaction",level:4},{value:"<code>enable_vertical_compaction</code>",id:"enable_vertical_compaction",level:4},{value:"<code>vertical_compaction_num_columns_per_group</code>",id:"vertical_compaction_num_columns_per_group",level:4},{value:"<code>vertical_compaction_max_row_source_memory_mb</code>",id:"vertical_compaction_max_row_source_memory_mb",level:4},{value:"<code>vertical_compaction_max_segment_size</code>",id:"vertical_compaction_max_segment_size",level:4},{value:"<code>enable_ordered_data_compaction</code>",id:"enable_ordered_data_compaction",level:4},{value:"<code>ordered_data_compaction_min_segment_size</code>",id:"ordered_data_compaction_min_segment_size",level:4},{value:"<code>max_base_compaction_threads</code>",id:"max_base_compaction_threads",level:4},{value:"<code>generate_compaction_tasks_interval_ms</code>",id:"generate_compaction_tasks_interval_ms",level:4},{value:"<code>base_compaction_min_rowset_num</code>",id:"base_compaction_min_rowset_num",level:4},{value:"<code>base_compaction_min_data_ratio</code>",id:"base_compaction_min_data_ratio",level:4},{value:"<code>total_permits_for_compaction_score</code>",id:"total_permits_for_compaction_score",level:4},{value:"<code>compaction_promotion_size_mbytes</code>",id:"compaction_promotion_size_mbytes",level:4},{value:"<code>compaction_promotion_ratio</code>",id:"compaction_promotion_ratio",level:4},{value:"<code>compaction_promotion_min_size_mbytes</code>",id:"compaction_promotion_min_size_mbytes",level:4},{value:"<code>compaction_min_size_mbytes</code>",id:"compaction_min_size_mbytes",level:4},{value:"<code>default_rowset_type</code>",id:"default_rowset_type",level:4},{value:"<code>cumulative_compaction_min_deltas</code>",id:"cumulative_compaction_min_deltas",level:4},{value:"<code>cumulative_compaction_max_deltas</code>",id:"cumulative_compaction_max_deltas",level:4},{value:"<code>base_compaction_trace_threshold</code>",id:"base_compaction_trace_threshold",level:4},{value:"<code>cumulative_compaction_trace_threshold</code>",id:"cumulative_compaction_trace_threshold",level:4},{value:"<code>compaction_task_num_per_disk</code>",id:"compaction_task_num_per_disk",level:4},{value:"<code>compaction_task_num_per_fast_disk</code>",id:"compaction_task_num_per_fast_disk",level:4},{value:"<code>cumulative_compaction_rounds_for_each_base_compaction_round</code>",id:"cumulative_compaction_rounds_for_each_base_compaction_round",level:4},{value:"<code>cumulative_compaction_policy</code>",id:"cumulative_compaction_policy",level:4},{value:"<code>max_cumu_compaction_threads</code>",id:"max_cumu_compaction_threads",level:4},{value:"<code>enable_segcompaction</code>",id:"enable_segcompaction",level:4},{value:"<code>segcompaction_batch_size</code>",id:"segcompaction_batch_size",level:4},{value:"<code>segcompaction_candidate_max_rows</code>",id:"segcompaction_candidate_max_rows",level:4},{value:"<code>segcompaction_candidate_max_bytes</code>",id:"segcompaction_candidate_max_bytes",level:4},{value:"<code>segcompaction_task_max_rows</code>",id:"segcompaction_task_max_rows",level:4},{value:"<code>segcompaction_task_max_bytes</code>",id:"segcompaction_task_max_bytes",level:4},{value:"<code>segcompaction_num_threads</code>",id:"segcompaction_num_threads",level:4},{value:"<code>disable_compaction_trace_log</code>",id:"disable_compaction_trace_log",level:4},{value:"<code>pick_rowset_to_compact_interval_sec</code>",id:"pick_rowset_to_compact_interval_sec",level:4},{value:"<code>max_single_replica_compaction_threads</code>",id:"max_single_replica_compaction_threads",level:4},{value:"<code>update_replica_infos_interval_seconds</code>",id:"update_replica_infos_interval_seconds",level:4},{value:"Load",id:"load",level:3},{value:"<code>enable_stream_load_record</code>",id:"enable_stream_load_record",level:4},{value:"<code>load_data_reserve_hours</code>",id:"load_data_reserve_hours",level:4},{value:"<code>push_worker_count_high_priority</code>",id:"push_worker_count_high_priority",level:4},{value:"<code>push_worker_count_normal_priority</code>",id:"push_worker_count_normal_priority",level:4},{value:"<code>enable_single_replica_load</code>",id:"enable_single_replica_load",level:4},{value:"<code>load_error_log_reserve_hours</code>",id:"load_error_log_reserve_hours",level:4},{value:"<code>load_process_max_memory_limit_percent</code>",id:"load_process_max_memory_limit_percent",level:4},{value:"<code>load_process_soft_mem_limit_percent</code>",id:"load_process_soft_mem_limit_percent",level:4},{value:"<code>routine_load_thread_pool_size</code>",id:"routine_load_thread_pool_size",level:4},{value:"<code>slave_replica_writer_rpc_timeout_sec</code>",id:"slave_replica_writer_rpc_timeout_sec",level:4},{value:"<code>max_segment_num_per_rowset</code>",id:"max_segment_num_per_rowset",level:4},{value:"<code>high_priority_flush_thread_num_per_store</code>",id:"high_priority_flush_thread_num_per_store",level:4},{value:"<code>routine_load_consumer_pool_size</code>",id:"routine_load_consumer_pool_size",level:4},{value:"<code>multi_table_batch_plan_threshold</code>",id:"multi_table_batch_plan_threshold",level:4},{value:"<code>single_replica_load_download_num_workers</code>",id:"single_replica_load_download_num_workers",level:4},{value:"<code>load_task_high_priority_threshold_second</code>",id:"load_task_high_priority_threshold_second",level:4},{value:"<code>min_load_rpc_timeout_ms</code>",id:"min_load_rpc_timeout_ms",level:4},{value:"<code>kafka_api_version_request</code>",id:"kafka_api_version_request",level:4},{value:"<code>kafka_broker_version_fallback</code>",id:"kafka_broker_version_fallback",level:4},{value:"<code>max_consumer_num_per_group</code>",id:"max_consumer_num_per_group",level:4},{value:"<code>streaming_load_max_mb</code>",id:"streaming_load_max_mb",level:4},{value:"<code>streaming_load_json_max_mb</code>",id:"streaming_load_json_max_mb",level:4},{value:"Thread",id:"thread",level:3},{value:"<code>delete_worker_count</code>",id:"delete_worker_count",level:4},{value:"<code>clear_transaction_task_worker_count</code>",id:"clear_transaction_task_worker_count",level:4},{value:"<code>clone_worker_count</code>",id:"clone_worker_count",level:4},{value:"<code>be_service_threads</code>",id:"be_service_threads",level:4},{value:"<code>download_worker_count</code>",id:"download_worker_count",level:4},{value:"<code>drop_tablet_worker_count</code>",id:"drop_tablet_worker_count",level:4},{value:"<code>flush_thread_num_per_store</code>",id:"flush_thread_num_per_store",level:4},{value:"<code>num_threads_per_core</code>",id:"num_threads_per_core",level:4},{value:"<code>num_threads_per_disk</code>",id:"num_threads_per_disk",level:4},{value:"<code>number_slave_replica_download_threads</code>",id:"number_slave_replica_download_threads",level:4},{value:"<code>publish_version_worker_count</code>",id:"publish_version_worker_count",level:4},{value:"<code>upload_worker_count</code>",id:"upload_worker_count",level:4},{value:"<code>webserver_num_workers</code>",id:"webserver_num_workers",level:4},{value:"<code>send_batch_thread_pool_thread_num</code>",id:"send_batch_thread_pool_thread_num",level:4},{value:"<code>send_batch_thread_pool_queue_size</code>",id:"send_batch_thread_pool_queue_size",level:4},{value:"<code>make_snapshot_worker_count</code>",id:"make_snapshot_worker_count",level:4},{value:"<code>release_snapshot_worker_count</code>",id:"release_snapshot_worker_count",level:4},{value:"Memory",id:"memory",level:3},{value:"<code>disable_mem_pools</code>",id:"disable_mem_pools",level:4},{value:"<code>buffer_pool_clean_pages_limit</code>",id:"buffer_pool_clean_pages_limit",level:4},{value:"<code>buffer_pool_limit</code>",id:"buffer_pool_limit",level:4},{value:"<code>chunk_reserved_bytes_limit</code>",id:"chunk_reserved_bytes_limit",level:4},{value:"<code>madvise_huge_pages</code>",id:"madvise_huge_pages",level:4},{value:"<code>max_memory_sink_batch_count</code>",id:"max_memory_sink_batch_count",level:4},{value:"<code>memory_max_alignment</code>",id:"memory_max_alignment",level:4},{value:"<code>mmap_buffers</code>",id:"mmap_buffers",level:4},{value:"<code>memtable_mem_tracker_refresh_interval_ms</code>",id:"memtable_mem_tracker_refresh_interval_ms",level:4},{value:"<code>download_cache_buffer_size</code>",id:"download_cache_buffer_size",level:4},{value:"<code>zone_map_row_num_threshold</code>",id:"zone_map_row_num_threshold",level:4},{value:"<code>enable_tcmalloc_hook</code>",id:"enable_tcmalloc_hook",level:4},{value:"<code>memory_mode</code>",id:"memory_mode",level:4},{value:"<code>max_sys_mem_available_low_water_mark_bytes</code>",id:"max_sys_mem_available_low_water_mark_bytes",level:4},{value:"<code>memory_limitation_per_thread_for_schema_change_bytes</code>",id:"memory_limitation_per_thread_for_schema_change_bytes",level:4},{value:"<code>mem_tracker_consume_min_size_bytes</code>",id:"mem_tracker_consume_min_size_bytes",level:4},{value:"<code>cache_clean_interval</code>",id:"cache_clean_interval",level:4},{value:"<code>min_buffer_size</code>",id:"min_buffer_size",level:4},{value:"<code>write_buffer_size</code>",id:"write_buffer_size",level:4},{value:"<code>remote_storage_read_buffer_mb</code>",id:"remote_storage_read_buffer_mb",level:4},{value:"<code>file_cache_type</code>",id:"file_cache_type",level:4},{value:"<code>file_cache_alive_time_sec</code>",id:"file_cache_alive_time_sec",level:4},{value:"<code>file_cache_max_size_per_disk</code>",id:"file_cache_max_size_per_disk",level:4},{value:"<code>max_sub_cache_file_size</code>",id:"max_sub_cache_file_size",level:4},{value:"<code>download_cache_thread_pool_thread_num</code>",id:"download_cache_thread_pool_thread_num",level:4},{value:"<code>download_cache_thread_pool_queue_size</code>",id:"download_cache_thread_pool_queue_size",level:4},{value:"<code>generate_cache_cleaner_task_interval_sec</code>",id:"generate_cache_cleaner_task_interval_sec",level:4},{value:"<code>path_gc_check</code>",id:"path_gc_check",level:4},{value:"<code>path_gc_check_interval_second</code>",id:"path_gc_check_interval_second",level:4},{value:"<code>path_gc_check_step</code>",id:"path_gc_check_step",level:4},{value:"<code>path_gc_check_step_interval_ms</code>",id:"path_gc_check_step_interval_ms",level:4},{value:"<code>path_scan_interval_second</code>",id:"path_scan_interval_second",level:4},{value:"<code>scan_context_gc_interval_min</code>",id:"scan_context_gc_interval_min",level:4},{value:"Storage",id:"storage",level:3},{value:"<code>default_num_rows_per_column_file_block</code>",id:"default_num_rows_per_column_file_block",level:4},{value:"<code>disable_storage_page_cache</code>",id:"disable_storage_page_cache",level:4},{value:"<code>disk_stat_monitor_interval</code>",id:"disk_stat_monitor_interval",level:4},{value:"<code>max_free_io_buffers</code>",id:"max_free_io_buffers",level:4},{value:"<code>max_garbage_sweep_interval</code>",id:"max_garbage_sweep_interval",level:4},{value:"<code>max_percentage_of_error_disk</code>",id:"max_percentage_of_error_disk",level:4},{value:"<code>read_size</code>",id:"read_size",level:4},{value:"<code>min_garbage_sweep_interval</code>",id:"min_garbage_sweep_interval",level:4},{value:"<code>pprof_profile_dir</code>",id:"pprof_profile_dir",level:4},{value:"<code>small_file_dir</code>",id:"small_file_dir",level:4},{value:"<code>user_function_dir</code>",id:"user_function_dir",level:4},{value:"<code>storage_flood_stage_left_capacity_bytes</code>",id:"storage_flood_stage_left_capacity_bytes",level:4},{value:"<code>storage_flood_stage_usage_percent</code>",id:"storage_flood_stage_usage_percent",level:4},{value:"<code>storage_medium_migrate_count</code>",id:"storage_medium_migrate_count",level:4},{value:"<code>storage_page_cache_limit</code>",id:"storage_page_cache_limit",level:4},{value:"<code>storage_page_cache_shard_size</code>",id:"storage_page_cache_shard_size",level:4},{value:"<code>index_page_cache_percentage</code>",id:"index_page_cache_percentage",level:4},{value:"<code>segment_cache_capacity</code>",id:"segment_cache_capacity",level:4},{value:"<code>storage_strict_check_incompatible_old_format</code>",id:"storage_strict_check_incompatible_old_format",level:4},{value:"<code>sync_tablet_meta</code>",id:"sync_tablet_meta",level:4},{value:"<code>pending_data_expire_time_sec</code>",id:"pending_data_expire_time_sec",level:4},{value:"<code>ignore_rowset_stale_unconsistent_delete</code>",id:"ignore_rowset_stale_unconsistent_delete",level:4},{value:"<code>create_tablet_worker_count</code>",id:"create_tablet_worker_count",level:4},{value:"<code>check_consistency_worker_count</code>",id:"check_consistency_worker_count",level:4},{value:"<code>max_tablet_version_num</code>",id:"max_tablet_version_num",level:4},{value:"<code>number_tablet_writer_threads</code>",id:"number_tablet_writer_threads",level:4},{value:"<code>tablet_map_shard_size</code>",id:"tablet_map_shard_size",level:4},{value:"<code>tablet_meta_checkpoint_min_interval_secs</code>",id:"tablet_meta_checkpoint_min_interval_secs",level:4},{value:"<code>tablet_meta_checkpoint_min_new_rowsets_num</code>",id:"tablet_meta_checkpoint_min_new_rowsets_num",level:4},{value:"<code>tablet_stat_cache_update_interval_second</code>",id:"tablet_stat_cache_update_interval_second",level:4},{value:"<code>tablet_rowset_stale_sweep_time_sec</code>",id:"tablet_rowset_stale_sweep_time_sec",level:4},{value:"<code>tablet_writer_open_rpc_timeout_sec</code>",id:"tablet_writer_open_rpc_timeout_sec",level:4},{value:"<code>tablet_writer_ignore_eovercrowded</code>",id:"tablet_writer_ignore_eovercrowded",level:4},{value:"<code>streaming_load_rpc_max_alive_time_sec</code>",id:"streaming_load_rpc_max_alive_time_sec",level:4},{value:"<code>alter_tablet_worker_count</code>",id:"alter_tablet_worker_count",level:4},{value:"<code>alter_index_worker_count</code>",id:"alter_index_worker_count",level:3},{value:"<code>ignore_load_tablet_failure</code>",id:"ignore_load_tablet_failure",level:4},{value:"<code>report_disk_state_interval_seconds</code>",id:"report_disk_state_interval_seconds",level:4},{value:"<code>result_buffer_cancelled_interval_time</code>",id:"result_buffer_cancelled_interval_time",level:4},{value:"<code>snapshot_expire_time_sec</code>",id:"snapshot_expire_time_sec",level:4},{value:"<code>compress_rowbatches</code>",id:"compress_rowbatches",level:4},{value:"<code>jvm_max_heap_size</code>",id:"jvm_max_heap_size",level:4},{value:"Log",id:"log",level:3},{value:"<code>sys_log_dir</code>",id:"sys_log_dir",level:4},{value:"<code>sys_log_level</code>",id:"sys_log_level",level:4},{value:"<code>sys_log_roll_mode</code>",id:"sys_log_roll_mode",level:4},{value:"<code>sys_log_roll_num</code>",id:"sys_log_roll_num",level:4},{value:"<code>sys_log_verbose_level</code>",id:"sys_log_verbose_level",level:4},{value:"<code>sys_log_verbose_modules</code>",id:"sys_log_verbose_modules",level:4},{value:"<code>aws_log_level</code>",id:"aws_log_level",level:4},{value:"<code>log_buffer_level</code>",id:"log_buffer_level",level:4},{value:"Else",id:"else",level:3},{value:"<code>report_tablet_interval_seconds</code>",id:"report_tablet_interval_seconds",level:4},{value:"<code>report_task_interval_seconds</code>",id:"report_task_interval_seconds",level:4},{value:"<code>periodic_counter_update_period_ms</code>",id:"periodic_counter_update_period_ms",level:4},{value:"<code>enable_metric_calculator</code>",id:"enable_metric_calculator",level:4},{value:"<code>enable_system_metrics</code>",id:"enable_system_metrics",level:4},{value:"<code>enable_token_check</code>",id:"enable_token_check",level:4},{value:"<code>max_runnings_transactions_per_txn_map</code>",id:"max_runnings_transactions_per_txn_map",level:4},{value:"<code>max_download_speed_kbps</code>",id:"max_download_speed_kbps",level:4},{value:"<code>download_low_speed_time</code>",id:"download_low_speed_time",level:4},{value:"<code>download_low_speed_limit_kbps</code>",id:"download_low_speed_limit_kbps",level:4},{value:"<code>doris_cgroups</code>",id:"doris_cgroups",level:4},{value:"<code>priority_queue_remaining_tasks_increased_frequency</code>",id:"priority_queue_remaining_tasks_increased_frequency",level:4},{value:"<code>jdbc_drivers_dir</code>",id:"jdbc_drivers_dir",level:4},{value:"<code>enable_parse_multi_dimession_array</code>",id:"enable_parse_multi_dimession_array",level:4},{value:"<code>enable_simdjson_reader</code>",id:"enable_simdjson_reader",level:4},{value:"<code>enable_query_memory_overcommit</code>",id:"enable_query_memory_overcommit",level:4},{value:"<code>user_files_secure_path</code>",id:"user_files_secure_path",level:4},{value:"<code>brpc_streaming_client_batch_bytes</code>",id:"brpc_streaming_client_batch_bytes",level:4},{value:"<code>grace_shutdown_wait_seconds</code>",id:"grace_shutdown_wait_seconds",level:4},{value:"<code>enable_java_support</code>",id:"enable_java_support",level:4},{value:"<code>olap_table_sink_send_interval_microseconds</code>",id:"olap_table_sink_send_interval_microseconds",level:4},{value:"<code>olap_table_sink_send_interval_auto_partition_factor</code>",id:"olap_table_sink_send_interval_auto_partition_factor",level:4}],_={toc:u},c="wrapper";function m(e){let{components:t,...a}=e;return(0,i.kt)(c,(0,l.Z)({},_,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"be-configuration"},"BE Configuration"),(0,i.kt)("p",null,"This document mainly introduces the relevant configuration items of BE."),(0,i.kt)("p",null,"The BE configuration file ",(0,i.kt)("inlineCode",{parentName:"p"},"be.conf")," is usually stored in the ",(0,i.kt)("inlineCode",{parentName:"p"},"conf/")," directory of the BE deployment path. In version 0.14, another configuration file ",(0,i.kt)("inlineCode",{parentName:"p"},"be_custom.conf")," will be introduced. The configuration file is used to record the configuration items that are dynamically configured and persisted by the user during operation."),(0,i.kt)("p",null,"After the BE process is started, it will read the configuration items in ",(0,i.kt)("inlineCode",{parentName:"p"},"be.conf")," first, and then read the configuration items in ",(0,i.kt)("inlineCode",{parentName:"p"},"be_custom.conf"),". The configuration items in ",(0,i.kt)("inlineCode",{parentName:"p"},"be_custom.conf")," will overwrite the same configuration items in ",(0,i.kt)("inlineCode",{parentName:"p"},"be.conf"),"."),(0,i.kt)("p",null,"The location of the ",(0,i.kt)("inlineCode",{parentName:"p"},"be_custom.conf")," file can be configured in ",(0,i.kt)("inlineCode",{parentName:"p"},"be.conf")," through the ",(0,i.kt)("inlineCode",{parentName:"p"},"custom_config_dir")," configuration item."),(0,i.kt)("h2",{id:"view-configuration-items"},"View configuration items"),(0,i.kt)("p",null,"Users can view the current configuration items by visiting BE's web page:"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"http://be_host:be_webserver_port/varz")),(0,i.kt)("h2",{id:"set-configuration-items"},"Set configuration items"),(0,i.kt)("p",null,"There are two ways to configure BE configuration items:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Static configuration"),(0,i.kt)("p",{parentName:"li"},"Add and set configuration items in the ",(0,i.kt)("inlineCode",{parentName:"p"},"conf/be.conf")," file. The configuration items in ",(0,i.kt)("inlineCode",{parentName:"p"},"be.conf")," will be read when BE starts. Configuration items not in ",(0,i.kt)("inlineCode",{parentName:"p"},"be.conf")," will use default values.")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Dynamic configuration"),(0,i.kt)("p",{parentName:"li"},"After BE starts, the configuration items can be dynamically set with the following commands."),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre"},"curl -X POST http://{be_ip}:{be_http_port}/api/update_config?{key}={value}\n")),(0,i.kt)("p",{parentName:"li"},"In version 0.13 and before, the configuration items modified in this way will become invalid after the BE process restarts. In 0.14 and later versions, the modified configuration can be persisted through the following command. The modified configuration items are stored in the ",(0,i.kt)("inlineCode",{parentName:"p"},"be_custom.conf")," file."),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre"},"curl -X POST http://{be_ip}:{be_http_port}/api/update_config?{key}={value}\\&persist=true\n")))),(0,i.kt)("h2",{id:"examples"},"Examples"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Modify ",(0,i.kt)("inlineCode",{parentName:"p"},"max_base_compaction_threads")," statically"),(0,i.kt)("p",{parentName:"li"},"By adding in the ",(0,i.kt)("inlineCode",{parentName:"p"},"be.conf")," file:"),(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"max_base_compaction_threads=5")),(0,i.kt)("p",{parentName:"li"},"Then restart the BE process to take effect the configuration.")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Modify ",(0,i.kt)("inlineCode",{parentName:"p"},"streaming_load_max_mb")," dynamically"),(0,i.kt)("p",{parentName:"li"},"After BE starts, the configuration item ",(0,i.kt)("inlineCode",{parentName:"p"},"streaming_load_max_mb")," is dynamically set by the following command:"),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre"},"curl -X POST http://{be_ip}:{be_http_port}/api/update_config?streaming_load_max_mb=1024\n")),(0,i.kt)("p",{parentName:"li"},"The return value is as follows, indicating that the setting is successful."),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre"},'{\n    "status": "OK",\n    "msg": ""\n}\n')),(0,i.kt)("p",{parentName:"li"},"The configuration will become invalid after the BE restarts. If you want to persist the modified results, use the following command:"),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre"},"curl -X POST http://{be_ip}:{be_http_port}/api/update_config?streaming_load_max_mb=1024\\&persist=true\n")))),(0,i.kt)("h2",{id:"configurations"},"Configurations"),(0,i.kt)("h3",{id:"services"},"Services"),(0,i.kt)("h4",{id:"be_port"},(0,i.kt)("inlineCode",{parentName:"h4"},"be_port")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description:  The port of the thrift server on BE which used to receive requests from FE"),(0,i.kt)("li",{parentName:"ul"},"Default value: 9060")),(0,i.kt)("h4",{id:"heartbeat_service_port"},(0,i.kt)("inlineCode",{parentName:"h4"},"heartbeat_service_port")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Heartbeat service port (thrift) on BE, used to receive heartbeat from FE"),(0,i.kt)("li",{parentName:"ul"},"Default value: 9050")),(0,i.kt)("h4",{id:"webserver_port"},(0,i.kt)("inlineCode",{parentName:"h4"},"webserver_port")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Service port of http server on BE"),(0,i.kt)("li",{parentName:"ul"},"Default value: 8040")),(0,i.kt)("h4",{id:"brpc_port"},(0,i.kt)("inlineCode",{parentName:"h4"},"brpc_port")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The port of BRPC on BE, used for communication between BEs"),(0,i.kt)("li",{parentName:"ul"},"Default value: 8060")),(0,i.kt)("h4",{id:"arrow_flight_sql_port"},(0,i.kt)("inlineCode",{parentName:"h4"},"arrow_flight_sql_port")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The port of Arrow Flight SQL server on BE, used for communication between Arrow Flight Client and BE"),(0,i.kt)("li",{parentName:"ul"},"Default value: -1")),(0,i.kt)("h4",{id:"enable_https"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_https")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Whether https is supported. If so, configure ",(0,i.kt)("inlineCode",{parentName:"li"},"ssl_certificate_path")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"ssl_private_key_path")," in be.conf."),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"priority_networks"},(0,i.kt)("inlineCode",{parentName:"h4"},"priority_networks")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Declare a selection strategy for those servers with many IPs. Note that at most one ip should match this list. This is a semicolon-separated list in CIDR notation, such as 10.10.10.0/24. If there is no IP matching this rule, one will be randomly selected"),(0,i.kt)("li",{parentName:"ul"},"Default value: blank")),(0,i.kt)("h4",{id:"storage_root_path"},(0,i.kt)("inlineCode",{parentName:"h4"},"storage_root_path")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Type: string")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Description: data root path, separate by ';'.you can specify the storage medium of each root path, HDD or SSD. you can add capacity limit at the end of each root path, separate by ','.If the user does not use a mix of SSD and HDD disks, they do not need to configure the configuration methods in Example 1 and Example 2 below, but only need to specify the storage directory; they also do not need to modify the default storage media configuration of FE."),(0,i.kt)("p",{parentName:"li"},"eg.1: ",(0,i.kt)("inlineCode",{parentName:"p"},"storage_root_path=/home/disk1/doris.HDD;/home/disk2/doris.SSD;/home/disk2/doris")),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"1./home/disk1/doris.HDD, indicates that the storage medium is HDD;"),(0,i.kt)("li",{parentName:"ul"},"2./home/disk2/doris.SSD, indicates that the storage medium is SSD;"),(0,i.kt)("li",{parentName:"ul"},"3./home/disk2/doris, indicates that the storage medium is HDD by default")),(0,i.kt)("p",{parentName:"li"},"eg.2: ",(0,i.kt)("inlineCode",{parentName:"p"},"storage_root_path=/home/disk1/doris,medium:hdd;/home/disk2/doris,medium:ssd")),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"1./home/disk1/doris,medium:hdd\uff0cindicates that the storage medium is HDD;"),(0,i.kt)("li",{parentName:"ul"},"2./home/disk2/doris,medium:ssd\uff0cindicates that the storage medium is SSD;"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Default value: ${DORIS_HOME}/storage"))),(0,i.kt)("h4",{id:"heartbeat_service_thread_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"heartbeat_service_thread_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of threads that execute the heartbeat service on BE. the default is 1, it is not recommended to modify"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1")),(0,i.kt)("h4",{id:"ignore_broken_disk"},(0,i.kt)("inlineCode",{parentName:"h4"},"ignore_broken_disk")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Type: bool")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Description: When BE starts, check ",(0,i.kt)("inlineCode",{parentName:"p"},"storage_root_path")," All paths under configuration."),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ignore_broken_disk=true"))),(0,i.kt)("p",{parentName:"li"},"If the path does not exist or the file (bad disk) cannot be read or written under the path, the path will be ignored. If there are other available paths, the startup will not be interrupted."),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ignore_broken_disk=false"))),(0,i.kt)("p",{parentName:"li"},"If the path does not exist or the file (bad disk) cannot be read or written under the path, the system will abort the startup failure and exit.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Default value: false"))),(0,i.kt)("h4",{id:"mem_limit"},(0,i.kt)("inlineCode",{parentName:"h4"},"mem_limit")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: string"),(0,i.kt)("li",{parentName:"ul"},"Description: Limit the percentage of the server's maximum memory used by the BE process. It is used to prevent BE memory from occupying too the machine's memory. This parameter must be greater than 0. When the percentage is greater than 100%, the value will default to 100%."),(0,i.kt)("li",{parentName:"ul"},"Default value: 90%")),(0,i.kt)("h4",{id:"cluster_id"},(0,i.kt)("inlineCode",{parentName:"h4"},"cluster_id")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Configure the cluster id to which the BE belongs.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"This value is usually delivered by the FE to the BE by the heartbeat, no need to configure. When it is confirmed that a BE belongs to a certain Drois cluster, it can be configured. The cluster_id file under the data directory needs to be modified to make sure same as this parament."))),(0,i.kt)("li",{parentName:"ul"},"Default value: -1")),(0,i.kt)("h4",{id:"custom_config_dir"},(0,i.kt)("inlineCode",{parentName:"h4"},"custom_config_dir")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Configure the location of the ",(0,i.kt)("inlineCode",{parentName:"li"},"be_custom.conf")," file. The default is in the ",(0,i.kt)("inlineCode",{parentName:"li"},"conf/")," directory.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"In some deployment environments, the ",(0,i.kt)("inlineCode",{parentName:"li"},"conf/")," directory may be overwritten due to system upgrades. This will cause the user modified configuration items to be overwritten. At this time, we can store ",(0,i.kt)("inlineCode",{parentName:"li"},"be_custom.conf")," in another specified directory to prevent the configuration file from being overwritten."))),(0,i.kt)("li",{parentName:"ul"},"Default value: blank")),(0,i.kt)("h4",{id:"trash_file_expire_time_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"trash_file_expire_time_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The interval for cleaning the recycle bin is 72 hours. When the disk space is insufficient, the file retention period under trash may not comply with this parameter"),(0,i.kt)("li",{parentName:"ul"},"Default value: 259200")),(0,i.kt)("h4",{id:"es_http_timeout_ms"},(0,i.kt)("inlineCode",{parentName:"h4"},"es_http_timeout_ms")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The timeout period for connecting to ES via http."),(0,i.kt)("li",{parentName:"ul"},"Default value: 5000 (ms)")),(0,i.kt)("h4",{id:"es_scroll_keepalive"},(0,i.kt)("inlineCode",{parentName:"h4"},"es_scroll_keepalive")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: es scroll Keeplive hold time"),(0,i.kt)("li",{parentName:"ul"},"Default value: 5 (m)")),(0,i.kt)("h4",{id:"external_table_connect_timeout_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"external_table_connect_timeout_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The timeout when establishing connection with external table such as ODBC table."),(0,i.kt)("li",{parentName:"ul"},"Default value: 5 seconds")),(0,i.kt)("h4",{id:"status_report_interval"},(0,i.kt)("inlineCode",{parentName:"h4"},"status_report_interval")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Interval between profile reports"),(0,i.kt)("li",{parentName:"ul"},"Default value: 5 seconds")),(0,i.kt)("h4",{id:"brpc_max_body_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"brpc_max_body_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Description: This configuration is mainly used to modify the parameter ",(0,i.kt)("inlineCode",{parentName:"p"},"max_body_size")," of brpc."),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Sometimes the query fails and an error message of ",(0,i.kt)("inlineCode",{parentName:"li"},"body_size is too large"),' will appear in the BE log. This may happen when the SQL mode is "multi distinct + no group by + more than 1T of data".This error indicates that the packet size of brpc exceeds the configured value. At this time, you can avoid this error by increasing the configuration.')))),(0,i.kt)("h4",{id:"brpc_socket_max_unwritten_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"brpc_socket_max_unwritten_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: This configuration is mainly used to modify the parameter ",(0,i.kt)("inlineCode",{parentName:"li"},"socket_max_unwritten_bytes")," of brpc.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Sometimes the query fails and an error message of ",(0,i.kt)("inlineCode",{parentName:"li"},"The server is overcrowded")," will appear in the BE log. This means there are too many messages to buffer at the sender side, which may happen when the SQL needs to send large bitmap value. You can avoid this error by increasing the configuration.")))),(0,i.kt)("h4",{id:"transfer_large_data_by_brpc"},(0,i.kt)("inlineCode",{parentName:"h4"},"transfer_large_data_by_brpc")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: This configuration is used to control whether to serialize the protoBuf request and embed the Tuple/Block data into the controller attachment and send it through http brpc when the length of the Tuple/Block data is greater than 1.8G. To avoid errors when the length of the protoBuf request exceeds 2G: Bad request, error_text=","[E1003]","Fail to compress request. In the past version, after putting Tuple/Block data in the attachment, it was sent through the default baidu_std brpc, but when the attachment exceeds 2G, it will be truncated. There is no 2G limit for sending through http brpc."),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"brpc_num_threads"},(0,i.kt)("inlineCode",{parentName:"h4"},"brpc_num_threads")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: This configuration is mainly used to modify the number of bthreads for brpc. The default value is set to -1, which means the number of bthreads is #cpu-cores.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"User can set this configuration to a larger value to get better QPS performance. For more information, please refer to ",(0,i.kt)("inlineCode",{parentName:"li"},"https://github.com/apache/incubator-brpc/blob/master/docs/cn/benchmark.md")))),(0,i.kt)("li",{parentName:"ul"},"Default value: -1")),(0,i.kt)("h4",{id:"thrift_rpc_timeout_ms"},(0,i.kt)("inlineCode",{parentName:"h4"},"thrift_rpc_timeout_ms")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: thrift default timeout time"),(0,i.kt)("li",{parentName:"ul"},"Default value: 60000")),(0,i.kt)("h4",{id:"thrift_client_retry_interval_ms"},(0,i.kt)("inlineCode",{parentName:"h4"},"thrift_client_retry_interval_ms")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: Used to set retry interval for thrift client in be to avoid avalanche disaster in fe thrift server, the unit is ms."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1000")),(0,i.kt)("h4",{id:"thrift_connect_timeout_seconds"},(0,i.kt)("inlineCode",{parentName:"h4"},"thrift_connect_timeout_seconds")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The default thrift client connection timeout time"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3 (m)")),(0,i.kt)("h4",{id:"thrift_server_type_of_fe"},(0,i.kt)("inlineCode",{parentName:"h4"},"thrift_server_type_of_fe")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Type: string")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Description:This configuration indicates the service model used by FE's Thrift service. The type is string and is case-insensitive. This parameter needs to be consistent with the setting of fe's thrift_server_type parameter. Currently there are two values for this parameter, ",(0,i.kt)("inlineCode",{parentName:"p"},"THREADED")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"THREAD_POOL"),"."),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"If the parameter is ",(0,i.kt)("inlineCode",{parentName:"p"},"THREADED"),", the model is a non-blocking I/O model.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"If the parameter is ",(0,i.kt)("inlineCode",{parentName:"p"},"THREAD_POOL"),", the model is a blocking I/O model."))))),(0,i.kt)("h4",{id:"txn_commit_rpc_timeout_ms"},(0,i.kt)("inlineCode",{parentName:"h4"},"txn_commit_rpc_timeout_ms")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description:txn submit rpc timeout"),(0,i.kt)("li",{parentName:"ul"},"Default value: 60,000 (ms)")),(0,i.kt)("h4",{id:"txn_map_shard_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"txn_map_shard_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: txn_map_lock fragment size, the value is 2^n, n=0,1,2,3,4. This is an enhancement to improve the performance of managing txn"),(0,i.kt)("li",{parentName:"ul"},"Default value: 128")),(0,i.kt)("h4",{id:"txn_shard_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"txn_shard_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: txn_lock shard size, the value is 2^n, n=0,1,2,3,4, this is an enhancement function that can improve the performance of submitting and publishing txn"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1024")),(0,i.kt)("h4",{id:"unused_rowset_monitor_interval"},(0,i.kt)("inlineCode",{parentName:"h4"},"unused_rowset_monitor_interval")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Time interval for clearing expired Rowset"),(0,i.kt)("li",{parentName:"ul"},"Default value: 30 (s)")),(0,i.kt)("h4",{id:"max_client_cache_size_per_host"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_client_cache_size_per_host")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The maximum number of client caches per host. There are multiple client caches in BE, but currently we use the same cache size configuration. If necessary, use different configurations to set up different client-side caches"),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"string_type_length_soft_limit_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"string_type_length_soft_limit_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The soft limit of the maximum length of String type."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1,048,576")),(0,i.kt)("h4",{id:"big_column_size_buffer"},(0,i.kt)("inlineCode",{parentName:"h4"},"big_column_size_buffer")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: When using the odbc external table, if a column type of the odbc source table is HLL, CHAR or VARCHAR, and the length of the column value exceeds this value, the query will report an error 'column value length longer than buffer length'. You can increase this value"),(0,i.kt)("li",{parentName:"ul"},"Default value: 65535")),(0,i.kt)("h4",{id:"small_column_size_buffer"},(0,i.kt)("inlineCode",{parentName:"h4"},"small_column_size_buffer")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description:  When using the odbc external table, if a column type of the odbc source table is not HLL, CHAR or VARCHAR, and the length of the column value exceeds this value, the query will report an error 'column value length longer than buffer length'. You can increase this value"),(0,i.kt)("li",{parentName:"ul"},"Default value: 100")),(0,i.kt)("h4",{id:"jsonb_type_length_soft_limit_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"jsonb_type_length_soft_limit_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The soft limit of the maximum length of JSONB type."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1,048,576")),(0,i.kt)("h3",{id:"query"},"Query"),(0,i.kt)("h4",{id:"fragment_pool_queue_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"fragment_pool_queue_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The upper limit of query requests that can be processed on a single node"),(0,i.kt)("li",{parentName:"ul"},"Default value: 4096")),(0,i.kt)("h4",{id:"fragment_pool_thread_num_min"},(0,i.kt)("inlineCode",{parentName:"h4"},"fragment_pool_thread_num_min")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Query the number of threads. By default, the minimum number of threads is 64."),(0,i.kt)("li",{parentName:"ul"},"Default value: 64")),(0,i.kt)("h4",{id:"fragment_pool_thread_num_max"},(0,i.kt)("inlineCode",{parentName:"h4"},"fragment_pool_thread_num_max")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Follow up query requests create threads dynamically, with a maximum of 512 threads created."),(0,i.kt)("li",{parentName:"ul"},"Default value: 2048")),(0,i.kt)("h4",{id:"doris_max_pushdown_conjuncts_return_rate"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_max_pushdown_conjuncts_return_rate")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description:  When BE performs HashJoin, it will adopt a dynamic partitioning method to push the join condition to OlapScanner. When the data scanned by OlapScanner is larger than 32768 rows, BE will check the filter condition. If the filter rate of the filter condition is lower than this configuration, Doris will stop using the dynamic partition clipping condition for data filtering."),(0,i.kt)("li",{parentName:"ul"},"Default value: 90")),(0,i.kt)("h4",{id:"doris_max_scan_key_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_max_scan_key_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int"),(0,i.kt)("li",{parentName:"ul"},"Description: Used to limit the maximum number of scan keys that a scan node can split in a query request. When a conditional query request reaches the scan node, the scan node will try to split the conditions related to the key column in the query condition into multiple scan key ranges. After that, these scan key ranges will be assigned to multiple scanner threads for data scanning. A larger value usually means that more scanner threads can be used to increase the parallelism of the scanning operation. However, in high concurrency scenarios, too many threads may bring greater scheduling overhead and system load, and will slow down the query response speed. An empirical value is 50. This configuration can be configured separately at the session level. For details, please refer to the description of ",(0,i.kt)("inlineCode",{parentName:"li"},"max_scan_key_num")," in ",(0,i.kt)("a",{parentName:"li",href:"../../advanced/variables.md"},"Variables"),".",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"When the concurrency cannot be improved in high concurrency scenarios, try to reduce this value and observe the impact."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 48")),(0,i.kt)("h4",{id:"doris_scan_range_row_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_scan_range_row_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: When BE performs data scanning, it will split the same scanning range into multiple ScanRanges. This parameter represents the scan data range of each ScanRange. This parameter can limit the time that a single OlapScanner occupies the io thread."),(0,i.kt)("li",{parentName:"ul"},"Default value: 524288")),(0,i.kt)("h4",{id:"doris_scanner_queue_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_scanner_queue_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The length of the RowBatch buffer queue between TransferThread and OlapScanner. When Doris performs data scanning, it is performed asynchronously. The Rowbatch scanned by OlapScanner will be placed in the scanner buffer queue, waiting for the upper TransferThread to take it away."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1024")),(0,i.kt)("h4",{id:"doris_scanner_row_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_scanner_row_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The maximum number of data rows returned by each scanning thread in a single execution"),(0,i.kt)("li",{parentName:"ul"},"Default value: 16384")),(0,i.kt)("h4",{id:"doris_scanner_row_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_scanner_row_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: single read execute fragment row bytes",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Note: If there are too many columns in the table, you can adjust this config if you encounter a ",(0,i.kt)("inlineCode",{parentName:"li"},"select *")," stuck"))),(0,i.kt)("li",{parentName:"ul"},"Default value: 10485760")),(0,i.kt)("h4",{id:"doris_scanner_thread_pool_queue_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_scanner_thread_pool_queue_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The queue length of the Scanner thread pool. In Doris' scanning tasks, each Scanner will be submitted as a thread task to the thread pool waiting to be scheduled, and after the number of submitted tasks exceeds the length of the thread pool queue, subsequent submitted tasks will be blocked until there is a empty slot in the queue."),(0,i.kt)("li",{parentName:"ul"},"Default value: 102400")),(0,i.kt)("h4",{id:"doris_scanner_thread_pool_thread_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_scanner_thread_pool_thread_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of threads in the Scanner thread pool. In Doris' scanning tasks, each Scanner will be submitted as a thread task to the thread pool to be scheduled. This parameter determines the size of the Scanner thread pool."),(0,i.kt)("li",{parentName:"ul"},"Default value: 48")),(0,i.kt)("h4",{id:"doris_max_remote_scanner_thread_pool_thread_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_max_remote_scanner_thread_pool_thread_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Max thread number of Remote scanner thread pool. Remote scanner thread pool is used for scan task of all external data sources."),(0,i.kt)("li",{parentName:"ul"},"Default: 512")),(0,i.kt)("h4",{id:"enable_prefetch"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_prefetch")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: When using PartitionedHashTable for aggregation and join calculations, whether to perform HashBuket prefetch. Recommended to be set to true"),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"enable_quadratic_probing"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_quadratic_probing")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: When a Hash conflict occurs when using PartitionedHashTable, enable to use the square detection method to resolve the Hash conflict. If the value is false, linear detection is used to resolve the Hash conflict. For the square detection method, please refer to: ",(0,i.kt)("a",{parentName:"li",href:"https://en.wikipedia.org/wiki/Quadratic_probing"},"quadratic_probing")),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"exchg_node_buffer_size_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"exchg_node_buffer_size_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The size of the Buffer queue of the ExchangeNode node, in bytes. After the amount of data sent from the Sender side is larger than the Buffer size of ExchangeNode, subsequent data sent will block until the Buffer frees up space for writing."),(0,i.kt)("li",{parentName:"ul"},"Default value: 10485760")),(0,i.kt)("h4",{id:"max_pushdown_conditions_per_column"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_pushdown_conditions_per_column")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Type: int")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Description: Used to limit the maximum number of conditions that can be pushed down to the storage engine for a single column in a query request. During the execution of the query plan, the filter conditions on some columns can be pushed down to the storage engine, so that the index information in the storage engine can be used for data filtering, reducing the amount of data that needs to be scanned by the query. Such as equivalent conditions, conditions in IN predicates, etc. In most cases, this parameter only affects queries containing IN predicates. Such as ",(0,i.kt)("inlineCode",{parentName:"p"},"WHERE colA IN (1,2,3,4, ...)"),". A larger number means that more conditions in the IN predicate can be pushed to the storage engine, but too many conditions may cause an increase in random reads, and in some cases may reduce query efficiency. This configuration can be individually configured for session level. For details, please refer to the description of ",(0,i.kt)("inlineCode",{parentName:"p"},"max_pushdown_conditions_per_column")," in ",(0,i.kt)("a",{parentName:"p",href:"../../advanced/variables.md"},"Variables"),".")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Default value: 1024")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Example"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"The table structure is' id INT, col2 INT, col3 varchar (32),... '."),(0,i.kt)("li",{parentName:"ul"},"The query request is'WHERE id IN (v1, v2, v3, ...)")))),(0,i.kt)("h4",{id:"max_send_batch_parallelism_per_job"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_send_batch_parallelism_per_job")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int"),(0,i.kt)("li",{parentName:"ul"},"Description: Max send batch parallelism for OlapTableSink. The value set by the user for ",(0,i.kt)("inlineCode",{parentName:"li"},"send_batch_parallelism")," is not allowed to exceed ",(0,i.kt)("inlineCode",{parentName:"li"},"max_send_batch_parallelism_per_job"),", if exceed, the value of ",(0,i.kt)("inlineCode",{parentName:"li"},"send_batch_parallelism")," would be ",(0,i.kt)("inlineCode",{parentName:"li"},"max_send_batch_parallelism_per_job"),"."),(0,i.kt)("li",{parentName:"ul"},"Default value: 5")),(0,i.kt)("h4",{id:"doris_scan_range_max_mb"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_scan_range_max_mb")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The maximum amount of data read by each OlapScanner."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1024")),(0,i.kt)("h3",{id:"compaction"},"compaction"),(0,i.kt)("h4",{id:"disable_auto_compaction"},(0,i.kt)("inlineCode",{parentName:"h4"},"disable_auto_compaction")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Whether disable automatic compaction task",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Generally it needs to be turned off. When you want to manually operate the compaction task in the debugging or test environment, you can turn on the configuration."))),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"enable_vertical_compaction"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_vertical_compaction")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Whether to enable vertical compaction"),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"vertical_compaction_num_columns_per_group"},(0,i.kt)("inlineCode",{parentName:"h4"},"vertical_compaction_num_columns_per_group")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: In vertical compaction, column number for every group"),(0,i.kt)("li",{parentName:"ul"},"Default value: 5")),(0,i.kt)("h4",{id:"vertical_compaction_max_row_source_memory_mb"},(0,i.kt)("inlineCode",{parentName:"h4"},"vertical_compaction_max_row_source_memory_mb")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: In vertical compaction, max memory usage for row_source_buffer,The unit is MB."),(0,i.kt)("li",{parentName:"ul"},"Default value: 200")),(0,i.kt)("h4",{id:"vertical_compaction_max_segment_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"vertical_compaction_max_segment_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: In vertical compaction, max dest segment file size, The unit is m bytes."),(0,i.kt)("li",{parentName:"ul"},"Default value: 268435456")),(0,i.kt)("h4",{id:"enable_ordered_data_compaction"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_ordered_data_compaction")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Whether to enable ordered data compaction"),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"ordered_data_compaction_min_segment_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"ordered_data_compaction_min_segment_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: In ordered data compaction, min segment size for input rowset, The unit is m bytes."),(0,i.kt)("li",{parentName:"ul"},"Default value: 10485760")),(0,i.kt)("h4",{id:"max_base_compaction_threads"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_base_compaction_threads")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The maximum of thread number in base compaction thread pool."),(0,i.kt)("li",{parentName:"ul"},"Default value: 4")),(0,i.kt)("h4",{id:"generate_compaction_tasks_interval_ms"},(0,i.kt)("inlineCode",{parentName:"h4"},"generate_compaction_tasks_interval_ms")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Minimal interval (ms) to generate compaction tasks"),(0,i.kt)("li",{parentName:"ul"},"Default value: 10 (ms)")),(0,i.kt)("h4",{id:"base_compaction_min_rowset_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"base_compaction_min_rowset_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: One of the triggering conditions of BaseCompaction: The limit of the number of Cumulative files to be reached. After reaching this limit, BaseCompaction will be triggered"),(0,i.kt)("li",{parentName:"ul"},"Default value: 5")),(0,i.kt)("h4",{id:"base_compaction_min_data_ratio"},(0,i.kt)("inlineCode",{parentName:"h4"},"base_compaction_min_data_ratio")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: One of the trigger conditions of BaseCompaction: Cumulative file size reaches the proportion of Base file"),(0,i.kt)("li",{parentName:"ul"},"Default value: 0.3 (30%)")),(0,i.kt)("h4",{id:"total_permits_for_compaction_score"},(0,i.kt)("inlineCode",{parentName:"h4"},"total_permits_for_compaction_score")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},'Description: The upper limit of "permits" held by all compaction tasks. This config can be set to limit memory consumption for compaction.'),(0,i.kt)("li",{parentName:"ul"},"Default value: 10000"),(0,i.kt)("li",{parentName:"ul"},"Dynamically modifiable: Yes")),(0,i.kt)("h4",{id:"compaction_promotion_size_mbytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"compaction_promotion_size_mbytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: The total disk size of the output rowset of cumulative compaction exceeds this configuration size, and the rowset will be used for base compaction. The unit is m bytes.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Generally, if the configuration is less than 2G, in order to prevent the cumulative compression time from being too long, resulting in the version backlog."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 1024")),(0,i.kt)("h4",{id:"compaction_promotion_ratio"},(0,i.kt)("inlineCode",{parentName:"h4"},"compaction_promotion_ratio")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: double"),(0,i.kt)("li",{parentName:"ul"},"Description: When the total disk size of the cumulative compaction output rowset exceeds the configuration ratio of the base version rowset, the rowset will be used for base compaction.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Generally, it is recommended that the configuration should not be higher than 0.1 and lower than 0.02."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 0.05")),(0,i.kt)("h4",{id:"compaction_promotion_min_size_mbytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"compaction_promotion_min_size_mbytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: If the total disk size of the output rowset of the cumulative compaction is lower than this configuration size, the rowset will not undergo base compaction and is still in the cumulative compaction process. The unit is m bytes.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Generally, the configuration is within 512m. If the configuration is too large, the size of the early base version is too small, and base compaction has not been performed."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 64")),(0,i.kt)("h4",{id:"compaction_min_size_mbytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"compaction_min_size_mbytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: When the cumulative compaction is merged, the selected rowsets to be merged have a larger disk size than this configuration, then they are divided and merged according to the level policy. When it is smaller than this configuration, merge directly. The unit is m bytes.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Generally, the configuration is within 128m. Over configuration will cause more cumulative compaction write amplification."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 64")),(0,i.kt)("h4",{id:"default_rowset_type"},(0,i.kt)("inlineCode",{parentName:"h4"},"default_rowset_type")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: string"),(0,i.kt)("li",{parentName:"ul"},'Description: Identifies the storage format selected by BE by default. The configurable parameters are: "',(0,i.kt)("strong",{parentName:"li"},"ALPHA"),'", "',(0,i.kt)("strong",{parentName:"li"},"BETA"),'". Mainly play the following two roles',(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"When the storage_format of the table is set to Default, select the storage format of BE through this configuration."),(0,i.kt)("li",{parentName:"ul"},"Select the storage format of when BE performing Compaction"))),(0,i.kt)("li",{parentName:"ul"},"Default value: BETA")),(0,i.kt)("h4",{id:"cumulative_compaction_min_deltas"},(0,i.kt)("inlineCode",{parentName:"h4"},"cumulative_compaction_min_deltas")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Cumulative compaction strategy: the minimum number of incremental files"),(0,i.kt)("li",{parentName:"ul"},"Default value: 5")),(0,i.kt)("h4",{id:"cumulative_compaction_max_deltas"},(0,i.kt)("inlineCode",{parentName:"h4"},"cumulative_compaction_max_deltas")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Cumulative compaction strategy: the maximum number of incremental files"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1000")),(0,i.kt)("h4",{id:"base_compaction_trace_threshold"},(0,i.kt)("inlineCode",{parentName:"h4"},"base_compaction_trace_threshold")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Threshold to logging base compaction's trace information, in seconds"),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("p",null,"Base compaction is a long time cost background task, this configuration is the threshold to logging trace information. Trace information in log file looks like:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"W0610 11:26:33.804431 56452 storage_engine.cpp:552] execute base compaction cost 0.00319222\nBaseCompaction:546859:\n  - filtered_rows: 0\n   - input_row_num: 10\n   - input_rowsets_count: 10\n   - input_rowsets_data_size: 2.17 KB\n   - input_segments_num: 10\n   - merge_rowsets_latency: 100000.510ms\n   - merged_rows: 0\n   - output_row_num: 10\n   - output_rowset_data_size: 224.00 B\n   - output_segments_num: 1\n0610 11:23:03.727535 (+     0us) storage_engine.cpp:554] start to perform base compaction\n0610 11:23:03.728961 (+  1426us) storage_engine.cpp:560] found best tablet 546859\n0610 11:23:03.728963 (+     2us) base_compaction.cpp:40] got base compaction lock\n0610 11:23:03.729029 (+    66us) base_compaction.cpp:44] rowsets picked\n0610 11:24:51.784439 (+108055410us) compaction.cpp:46] got concurrency lock and start to do compaction\n0610 11:24:51.784818 (+   379us) compaction.cpp:74] prepare finished\n0610 11:26:33.359265 (+101574447us) compaction.cpp:87] merge rowsets finished\n0610 11:26:33.484481 (+125216us) compaction.cpp:102] output rowset built\n0610 11:26:33.484482 (+     1us) compaction.cpp:106] check correctness finished\n0610 11:26:33.513197 (+ 28715us) compaction.cpp:110] modify rowsets finished\n0610 11:26:33.513300 (+   103us) base_compaction.cpp:49] compaction finished\n0610 11:26:33.513441 (+   141us) base_compaction.cpp:56] unused rowsets have been moved to GC queue\n")),(0,i.kt)("h4",{id:"cumulative_compaction_trace_threshold"},(0,i.kt)("inlineCode",{parentName:"h4"},"cumulative_compaction_trace_threshold")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Threshold to logging cumulative compaction's trace information, in seconds",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Similar to ",(0,i.kt)("inlineCode",{parentName:"li"},"base_compaction_trace_threshold"),"."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 2")),(0,i.kt)("h4",{id:"compaction_task_num_per_disk"},(0,i.kt)("inlineCode",{parentName:"h4"},"compaction_task_num_per_disk")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of compaction tasks which execute in parallel for a disk(HDD)."),(0,i.kt)("li",{parentName:"ul"},"Default value: 4")),(0,i.kt)("h4",{id:"compaction_task_num_per_fast_disk"},(0,i.kt)("inlineCode",{parentName:"h4"},"compaction_task_num_per_fast_disk")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of compaction tasks which execute in parallel for a fast disk(SSD)."),(0,i.kt)("li",{parentName:"ul"},"Default value: 8")),(0,i.kt)("h4",{id:"cumulative_compaction_rounds_for_each_base_compaction_round"},(0,i.kt)("inlineCode",{parentName:"h4"},"cumulative_compaction_rounds_for_each_base_compaction_round")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: How many rounds of cumulative compaction for each round of base compaction when compaction tasks generation."),(0,i.kt)("li",{parentName:"ul"},"Default value: 9")),(0,i.kt)("h4",{id:"cumulative_compaction_policy"},(0,i.kt)("inlineCode",{parentName:"h4"},"cumulative_compaction_policy")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: string"),(0,i.kt)("li",{parentName:"ul"},"Description: Configure the merge strategy in the cumulative compression phase. Currently, two merge strategies are implemented, num_based and size_based",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},'For details, "ordinary" is the initial version of the cumulative compression consolidation policy. After a cumulative compression, the base compression process is directly performed. size_The general policy is the optimized version of the ordinary policy. Version merging can only be performed when the disk volume of the rowset is the same order of magnitude. After merging, qualified rowsets are promoted to the base compaction stage. In the case of a large number of small batch imports, it can reduce the write magnification of base compact, balance the read magnification and space magnification, and reduce the data of file versions.'))),(0,i.kt)("li",{parentName:"ul"},"Default value: size_based")),(0,i.kt)("h4",{id:"max_cumu_compaction_threads"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_cumu_compaction_threads")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The maximum of thread number in cumulative compaction thread pool."),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"enable_segcompaction"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_segcompaction")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Enable to use segment compaction during loading to avoid -238 error"),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"segcompaction_batch_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"segcompaction_batch_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Max number of segments allowed in a single segcompaction task."),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"segcompaction_candidate_max_rows"},(0,i.kt)("inlineCode",{parentName:"h4"},"segcompaction_candidate_max_rows")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Max row count allowed in a single source segment, bigger segments will be skipped."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1048576")),(0,i.kt)("h4",{id:"segcompaction_candidate_max_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"segcompaction_candidate_max_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: Max file size allowed in a single source segment, bigger segments will be skipped."),(0,i.kt)("li",{parentName:"ul"},"Default value: 104857600")),(0,i.kt)("h4",{id:"segcompaction_task_max_rows"},(0,i.kt)("inlineCode",{parentName:"h4"},"segcompaction_task_max_rows")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Max total row count allowed in a single segcompaction task."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1572864")),(0,i.kt)("h4",{id:"segcompaction_task_max_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"segcompaction_task_max_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: Max total file size allowed in a single segcompaction task."),(0,i.kt)("li",{parentName:"ul"},"Default value: 157286400")),(0,i.kt)("h4",{id:"segcompaction_num_threads"},(0,i.kt)("inlineCode",{parentName:"h4"},"segcompaction_num_threads")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Global segcompaction thread pool size."),(0,i.kt)("li",{parentName:"ul"},"Default value: 5")),(0,i.kt)("h4",{id:"disable_compaction_trace_log"},(0,i.kt)("inlineCode",{parentName:"h4"},"disable_compaction_trace_log")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: disable the trace log of compaction",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"If set to true, the ",(0,i.kt)("inlineCode",{parentName:"li"},"cumulative_compaction_trace_threshold")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"base_compaction_trace_threshold")," won't work and log is disabled."))),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"pick_rowset_to_compact_interval_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"pick_rowset_to_compact_interval_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: select the time interval in seconds for rowset to be compacted."),(0,i.kt)("li",{parentName:"ul"},"Default value: 86400")),(0,i.kt)("h4",{id:"max_single_replica_compaction_threads"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_single_replica_compaction_threads")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The maximum of thread number in single replica compaction thread pool."),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"update_replica_infos_interval_seconds"},(0,i.kt)("inlineCode",{parentName:"h4"},"update_replica_infos_interval_seconds")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Minimal interval (s) to update peer replica infos"),(0,i.kt)("li",{parentName:"ul"},"Default value: 60 (s)")),(0,i.kt)("h3",{id:"load"},"Load"),(0,i.kt)("h4",{id:"enable_stream_load_record"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_stream_load_record")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description:Whether to enable stream load record function, the default is false."),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"load_data_reserve_hours"},(0,i.kt)("inlineCode",{parentName:"h4"},"load_data_reserve_hours")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Used for mini load. The mini load data file will be deleted after this time"),(0,i.kt)("li",{parentName:"ul"},"Default value: 4 (h)")),(0,i.kt)("h4",{id:"push_worker_count_high_priority"},(0,i.kt)("inlineCode",{parentName:"h4"},"push_worker_count_high_priority")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Import the number of threads for processing HIGH priority tasks"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h4",{id:"push_worker_count_normal_priority"},(0,i.kt)("inlineCode",{parentName:"h4"},"push_worker_count_normal_priority")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Import the number of threads for processing NORMAL priority tasks"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h4",{id:"enable_single_replica_load"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_single_replica_load")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Whether to enable the single-copy data import function"),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"load_error_log_reserve_hours"},(0,i.kt)("inlineCode",{parentName:"h4"},"load_error_log_reserve_hours")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The load error log will be deleted after this time"),(0,i.kt)("li",{parentName:"ul"},"Default value: 48 (h)")),(0,i.kt)("h4",{id:"load_process_max_memory_limit_percent"},(0,i.kt)("inlineCode",{parentName:"h4"},"load_process_max_memory_limit_percent")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The percentage of the upper memory limit occupied by all imported threads on a single node, the default is 50%",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Set these default values very large, because we don't want to affect load performance when users upgrade Doris. If necessary, the user should set these configurations correctly"))),(0,i.kt)("li",{parentName:"ul"},"Default value: 50 (%)")),(0,i.kt)("h4",{id:"load_process_soft_mem_limit_percent"},(0,i.kt)("inlineCode",{parentName:"h4"},"load_process_soft_mem_limit_percent")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The soft limit refers to the proportion of the load memory limit of a single node. For example, the load memory limit for all load tasks is 20GB, and the soft limit defaults to 50% of this value, that is, 10GB. When the load memory usage exceeds the soft limit, the job with the largest memory consuption will be selected to be flushed to release the memory space, the default is 50%"),(0,i.kt)("li",{parentName:"ul"},"Default value: 50 (%)")),(0,i.kt)("h4",{id:"routine_load_thread_pool_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"routine_load_thread_pool_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The thread pool size of the routine load task. This should be greater than the FE configuration'max_concurrent_task_num_per_be'"),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"slave_replica_writer_rpc_timeout_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"slave_replica_writer_rpc_timeout_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: This configuration is mainly used to modify timeout of brpc between master replica and slave replica, used for single replica load."),(0,i.kt)("li",{parentName:"ul"},"Default value: 60")),(0,i.kt)("h4",{id:"max_segment_num_per_rowset"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_segment_num_per_rowset")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Used to limit the number of segments in the newly generated rowset when importing. If the threshold is exceeded, the import will fail with error -238. Too many segments will cause compaction to take up a lot of memory and cause OOM errors."),(0,i.kt)("li",{parentName:"ul"},"Default value: 200")),(0,i.kt)("h4",{id:"high_priority_flush_thread_num_per_store"},(0,i.kt)("inlineCode",{parentName:"h4"},"high_priority_flush_thread_num_per_store")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of flush threads per store path allocated for the high priority import task."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1")),(0,i.kt)("h4",{id:"routine_load_consumer_pool_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"routine_load_consumer_pool_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of caches for the data consumer used by the routine load."),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"multi_table_batch_plan_threshold"},(0,i.kt)("inlineCode",{parentName:"h4"},"multi_table_batch_plan_threshold")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: For single-stream-multi-table load. When receive a batch of messages from kafka, if the size of batch is more than this threshold, we will request plans for all related tables."),(0,i.kt)("li",{parentName:"ul"},"Default value: 200")),(0,i.kt)("h4",{id:"single_replica_load_download_num_workers"},(0,i.kt)("inlineCode",{parentName:"h4"},"single_replica_load_download_num_workers")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description:This configuration is mainly used to modify the number of http worker threads for segment download, used for single replica load. When the load concurrency increases, you can adjust this parameter to ensure that the Slave replica synchronizes data files from the Master replica timely. If needed, ",(0,i.kt)("inlineCode",{parentName:"li"},"webserver_num_workers")," should also be increased for better IO performance."),(0,i.kt)("li",{parentName:"ul"},"Default value: 64")),(0,i.kt)("h4",{id:"load_task_high_priority_threshold_second"},(0,i.kt)("inlineCode",{parentName:"h4"},"load_task_high_priority_threshold_second")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: When the timeout of an import task is less than this threshold, Doris will consider it to be a high priority task. High priority tasks use a separate pool of flush threads."),(0,i.kt)("li",{parentName:"ul"},"Default: 120")),(0,i.kt)("h4",{id:"min_load_rpc_timeout_ms"},(0,i.kt)("inlineCode",{parentName:"h4"},"min_load_rpc_timeout_ms")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The minimum timeout for each rpc in the load job."),(0,i.kt)("li",{parentName:"ul"},"Default: 20")),(0,i.kt)("h4",{id:"kafka_api_version_request"},(0,i.kt)("inlineCode",{parentName:"h4"},"kafka_api_version_request")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: If the dependent Kafka version is lower than 0.10.0.0, this value should be set to false."),(0,i.kt)("li",{parentName:"ul"},"Default: true")),(0,i.kt)("h4",{id:"kafka_broker_version_fallback"},(0,i.kt)("inlineCode",{parentName:"h4"},"kafka_broker_version_fallback")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: If the dependent Kafka version is lower than 0.10.0.0, the value set by the fallback version kafka_broker_version_fallback will be used if the value of kafka_api_version_request is set to false, and the valid values are: 0.9.0.x, 0.8.x.y."),(0,i.kt)("li",{parentName:"ul"},"Default: 0.10.0")),(0,i.kt)("h4",{id:"max_consumer_num_per_group"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_consumer_num_per_group")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The maximum number of consumers in a data consumer group, used for routine load"),(0,i.kt)("li",{parentName:"ul"},"Default: 3")),(0,i.kt)("h4",{id:"streaming_load_max_mb"},(0,i.kt)("inlineCode",{parentName:"h4"},"streaming_load_max_mb")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: Used to limit the maximum amount of csv data allowed in one Stream load.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Stream Load is generally suitable for loading data less than a few GB, not suitable for loading too large data."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 10240 (MB)"),(0,i.kt)("li",{parentName:"ul"},"Dynamically modifiable: Yes")),(0,i.kt)("h4",{id:"streaming_load_json_max_mb"},(0,i.kt)("inlineCode",{parentName:"h4"},"streaming_load_json_max_mb")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: it is used to limit the maximum amount of json data allowed in one Stream load. The unit is MB.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Some data formats, such as JSON, cannot be split. Doris must read all the data into the memory before parsing can begin. Therefore, this value is used to limit the maximum amount of data that can be loaded in a single Stream load."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 100"),(0,i.kt)("li",{parentName:"ul"},"Dynamically modifiable: Yes")),(0,i.kt)("h3",{id:"thread"},"Thread"),(0,i.kt)("h4",{id:"delete_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"delete_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of threads performing data deletion tasks"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h4",{id:"clear_transaction_task_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"clear_transaction_task_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of threads used to clean up transactions"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1")),(0,i.kt)("h4",{id:"clone_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"clone_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of threads used to perform cloning tasks"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h4",{id:"be_service_threads"},(0,i.kt)("inlineCode",{parentName:"h4"},"be_service_threads")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of execution threads of the thrift server service on BE which represents the number of threads that can be used to execute FE requests."),(0,i.kt)("li",{parentName:"ul"},"Default value: 64")),(0,i.kt)("h4",{id:"download_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"download_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The number of download threads."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1")),(0,i.kt)("h4",{id:"drop_tablet_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"drop_tablet_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of threads to delete tablet"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h4",{id:"flush_thread_num_per_store"},(0,i.kt)("inlineCode",{parentName:"h4"},"flush_thread_num_per_store")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The number of threads used to refresh the memory table per store"),(0,i.kt)("li",{parentName:"ul"},"Default value: 2")),(0,i.kt)("h4",{id:"num_threads_per_core"},(0,i.kt)("inlineCode",{parentName:"h4"},"num_threads_per_core")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Control the number of threads that each core runs. Usually choose 2 times or 3 times the number of cores. This keeps the core busy without causing excessive jitter"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h4",{id:"num_threads_per_disk"},(0,i.kt)("inlineCode",{parentName:"h4"},"num_threads_per_disk")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The maximum number of threads per disk is also the maximum queue depth of each disk"),(0,i.kt)("li",{parentName:"ul"},"Default value: 0")),(0,i.kt)("h4",{id:"number_slave_replica_download_threads"},(0,i.kt)("inlineCode",{parentName:"h4"},"number_slave_replica_download_threads")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of threads for slave replica synchronize data, used for single replica load."),(0,i.kt)("li",{parentName:"ul"},"Default value: 64")),(0,i.kt)("h4",{id:"publish_version_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"publish_version_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: the count of thread to publish version"),(0,i.kt)("li",{parentName:"ul"},"Default value: 8")),(0,i.kt)("h4",{id:"upload_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"upload_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Maximum number of threads for uploading files"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1")),(0,i.kt)("h4",{id:"webserver_num_workers"},(0,i.kt)("inlineCode",{parentName:"h4"},"webserver_num_workers")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Webserver default number of worker threads"),(0,i.kt)("li",{parentName:"ul"},"Default value: 48")),(0,i.kt)("h4",{id:"send_batch_thread_pool_thread_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"send_batch_thread_pool_thread_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of threads in the SendBatch thread pool. In NodeChannels' sending data tasks, the SendBatch operation of each NodeChannel will be submitted as a thread task to the thread pool to be scheduled. This parameter determines the size of the SendBatch thread pool."),(0,i.kt)("li",{parentName:"ul"},"Default value: 64")),(0,i.kt)("h4",{id:"send_batch_thread_pool_queue_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"send_batch_thread_pool_queue_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The queue length of the SendBatch thread pool. In NodeChannels' sending data tasks,  the SendBatch operation of each NodeChannel will be submitted as a thread task to the thread pool waiting to be scheduled, and after the number of submitted tasks exceeds the length of the thread pool queue, subsequent submitted tasks will be blocked until there is a empty slot in the queue."),(0,i.kt)("li",{parentName:"ul"},"Default value: 102400")),(0,i.kt)("h4",{id:"make_snapshot_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"make_snapshot_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of threads making snapshots"),(0,i.kt)("li",{parentName:"ul"},"Default value: 5")),(0,i.kt)("h4",{id:"release_snapshot_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"release_snapshot_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of threads releasing snapshots"),(0,i.kt)("li",{parentName:"ul"},"Default value: 5")),(0,i.kt)("h3",{id:"memory"},"Memory"),(0,i.kt)("h4",{id:"disable_mem_pools"},(0,i.kt)("inlineCode",{parentName:"h4"},"disable_mem_pools")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Whether to disable the memory cache pool."),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"buffer_pool_clean_pages_limit"},(0,i.kt)("inlineCode",{parentName:"h4"},"buffer_pool_clean_pages_limit")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Clean up pages that may be saved by the buffer pool"),(0,i.kt)("li",{parentName:"ul"},"Default value: 50%")),(0,i.kt)("h4",{id:"buffer_pool_limit"},(0,i.kt)("inlineCode",{parentName:"h4"},"buffer_pool_limit")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: string"),(0,i.kt)("li",{parentName:"ul"},"Description: The largest allocatable memory of the buffer pool",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"The maximum amount of memory available in the BE buffer pool. The buffer pool is a new memory management structure of BE, which manages the memory by the buffer page and enables spill data to disk. The memory for all concurrent queries will be allocated from the buffer pool. The current buffer pool only works on ",(0,i.kt)("strong",{parentName:"li"},"AggregationNode")," and ",(0,i.kt)("strong",{parentName:"li"},"ExchangeNode"),"."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 20%")),(0,i.kt)("h4",{id:"chunk_reserved_bytes_limit"},(0,i.kt)("inlineCode",{parentName:"h4"},"chunk_reserved_bytes_limit")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The reserved bytes limit of Chunk Allocator, usually set as a percentage of mem_limit. defaults to bytes if no unit is given, the number of bytes must be a multiple of 2. must larger than 0. and if larger than physical memory size, it will be set to physical memory size. increase this variable can improve performance, but will acquire more free memory which can not be used by other modules."),(0,i.kt)("li",{parentName:"ul"},"Default value: 20%")),(0,i.kt)("h4",{id:"madvise_huge_pages"},(0,i.kt)("inlineCode",{parentName:"h4"},"madvise_huge_pages")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Whether to use linux memory huge pages."),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"max_memory_sink_batch_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_memory_sink_batch_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The maximum external scan cache batch count, which means that the cache max_memory_cache_batch_count ",(0,i.kt)("em",{parentName:"li"}," batch_size row, the default is 20, and the default value of batch_size is 1024, which means that 20 ")," 1024 rows will be cached"),(0,i.kt)("li",{parentName:"ul"},"Default value: 20")),(0,i.kt)("h4",{id:"memory_max_alignment"},(0,i.kt)("inlineCode",{parentName:"h4"},"memory_max_alignment")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Maximum alignment memory"),(0,i.kt)("li",{parentName:"ul"},"Default value: 16")),(0,i.kt)("h4",{id:"mmap_buffers"},(0,i.kt)("inlineCode",{parentName:"h4"},"mmap_buffers")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Whether to use mmap to allocate memory"),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"memtable_mem_tracker_refresh_interval_ms"},(0,i.kt)("inlineCode",{parentName:"h4"},"memtable_mem_tracker_refresh_interval_ms")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Interval in milliseconds between memtable flush mgr refresh iterations"),(0,i.kt)("li",{parentName:"ul"},"Default value: 100")),(0,i.kt)("h4",{id:"download_cache_buffer_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"download_cache_buffer_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: The size of the buffer used to receive data when downloading the cache."),(0,i.kt)("li",{parentName:"ul"},"Default value: 10485760")),(0,i.kt)("h4",{id:"zone_map_row_num_threshold"},(0,i.kt)("inlineCode",{parentName:"h4"},"zone_map_row_num_threshold")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: If the number of rows in a page is less than this value, no zonemap will be created to reduce data expansion"),(0,i.kt)("li",{parentName:"ul"},"Default value: 20")),(0,i.kt)("h4",{id:"enable_tcmalloc_hook"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_tcmalloc_hook")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Whether Hook TCmalloc new/delete, currently consume/release tls mem tracker in Hook."),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"memory_mode"},(0,i.kt)("inlineCode",{parentName:"h4"},"memory_mode")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: string"),(0,i.kt)("li",{parentName:"ul"},"Description: Control gc of tcmalloc, in performance mode doirs releases memory of tcmalloc cache when usgae >= 90% ",(0,i.kt)("em",{parentName:"li"}," mem_limit, otherwise, doris releases memory of tcmalloc cache when usage >= 50% ")," mem_limit;"),(0,i.kt)("li",{parentName:"ul"},"Default value: performance")),(0,i.kt)("h4",{id:"max_sys_mem_available_low_water_mark_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_sys_mem_available_low_water_mark_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: The maximum low water mark of the system ",(0,i.kt)("inlineCode",{parentName:"li"},"/proc/meminfo/MemAvailable"),", Unit byte, default 1.6G, actual low water mark=min(1.6G, MemTotal * 10%), avoid wasting too much memory on machines with large memory larger than 16G. Turn up max. On machines with more than 16G memory, more memory buffers will be reserved for Full GC. Turn down max. will use as much memory as possible."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1717986918")),(0,i.kt)("h4",{id:"memory_limitation_per_thread_for_schema_change_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"memory_limitation_per_thread_for_schema_change_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Maximum memory allowed for a single schema change task"),(0,i.kt)("li",{parentName:"ul"},"Default value: 2147483648 (2GB)")),(0,i.kt)("h4",{id:"mem_tracker_consume_min_size_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"mem_tracker_consume_min_size_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The minimum length of TCMalloc Hook when consume/release MemTracker. Consume size smaller than this value will continue to accumulate to avoid frequent calls to consume/release of MemTracker. Decreasing this value will increase the frequency of consume/release. Increasing this value will cause MemTracker statistics to be inaccurate. Theoretically, the statistical value of a MemTracker differs from the true value = ( mem_tracker_consume_min_size_bytes * the number of BE threads where the MemTracker is located)."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1,048,576")),(0,i.kt)("h4",{id:"cache_clean_interval"},(0,i.kt)("inlineCode",{parentName:"h4"},"cache_clean_interval")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: File handle cache cleaning interval, used to clean up file handles that have not been used for a long time.Also the clean interval of Segment Cache."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1800 (s)")),(0,i.kt)("h4",{id:"min_buffer_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"min_buffer_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Minimum read buffer size"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1024 (byte)")),(0,i.kt)("h4",{id:"write_buffer_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"write_buffer_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The size of the buffer before flashing",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Imported data is first written to a memory block on the BE, and only written back to disk when this memory block reaches the threshold. The default size is 100MB. too small a threshold may result in a large number of small files on the BE. This threshold can be increased to reduce the number of files. However, too large a threshold may cause RPC timeouts"))),(0,i.kt)("li",{parentName:"ul"},"Default value: 104,857,600")),(0,i.kt)("h4",{id:"remote_storage_read_buffer_mb"},(0,i.kt)("inlineCode",{parentName:"h4"},"remote_storage_read_buffer_mb")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The cache size used when reading files on hdfs or object storage.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Increasing this value can reduce the number of calls to read remote data, but it will increase memory overhead."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 16 (MB)")),(0,i.kt)("h4",{id:"file_cache_type"},(0,i.kt)("inlineCode",{parentName:"h4"},"file_cache_type")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: string"),(0,i.kt)("li",{parentName:"ul"},"Description: Type of cache file.",(0,i.kt)("inlineCode",{parentName:"li"},"whole_file_cache"),": download the entire segment file, ",(0,i.kt)("inlineCode",{parentName:"li"},"sub_file_cache"),': the segment file is divided into multiple files by size. if set "", no cache, please set this parameter when caching is required.'),(0,i.kt)("li",{parentName:"ul"},'Default value: ""')),(0,i.kt)("h4",{id:"file_cache_alive_time_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"file_cache_alive_time_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: Save time of cache file"),(0,i.kt)("li",{parentName:"ul"},"Default value: 604800 (1 week)")),(0,i.kt)("h4",{id:"file_cache_max_size_per_disk"},(0,i.kt)("inlineCode",{parentName:"h4"},"file_cache_max_size_per_disk")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: The cache occupies the disk size. Once this setting is exceeded, the cache that has not been accessed for the longest time will be deleted. If it is 0, the size is not limited. unit is bytes."),(0,i.kt)("li",{parentName:"ul"},"Default value: 0")),(0,i.kt)("h4",{id:"max_sub_cache_file_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_sub_cache_file_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: Cache files using sub",(0,i.kt)("em",{parentName:"li"}," file")," The maximum size of the split file during cache"),(0,i.kt)("li",{parentName:"ul"},"Default value: 104857600 (100MB)")),(0,i.kt)("h4",{id:"download_cache_thread_pool_thread_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"download_cache_thread_pool_thread_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of threads in the DownloadCache thread pool. In the download cache task of FileCache, the download cache operation will be submitted to the thread pool as a thread task and wait to be scheduled. This parameter determines the size of the DownloadCache thread pool."),(0,i.kt)("li",{parentName:"ul"},"Default value: 48")),(0,i.kt)("h4",{id:"download_cache_thread_pool_queue_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"download_cache_thread_pool_queue_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of threads in the DownloadCache thread pool. In the download cache task of FileCache, the download cache operation will be submitted to the thread pool as a thread task and wait to be scheduled. After the number of submitted tasks exceeds the length of the thread pool queue, subsequent submitted tasks will be blocked until there is a empty slot in the queue."),(0,i.kt)("li",{parentName:"ul"},"Default value: 102400")),(0,i.kt)("h4",{id:"generate_cache_cleaner_task_interval_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"generate_cache_cleaner_task_interval_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type\uff1aint64"),(0,i.kt)("li",{parentName:"ul"},"Description\uff1aCleaning interval of cache files, in seconds"),(0,i.kt)("li",{parentName:"ul"},"Default\uff1a43200\uff0812 hours\uff09")),(0,i.kt)("h4",{id:"path_gc_check"},(0,i.kt)("inlineCode",{parentName:"h4"},"path_gc_check")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type\uff1abool"),(0,i.kt)("li",{parentName:"ul"},"Description\uff1aWhether to enable the recycle scan data thread check"),(0,i.kt)("li",{parentName:"ul"},"Default\uff1atrue")),(0,i.kt)("h4",{id:"path_gc_check_interval_second"},(0,i.kt)("inlineCode",{parentName:"h4"},"path_gc_check_interval_second")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description\uff1aRecycle scan data thread check interval"),(0,i.kt)("li",{parentName:"ul"},"Default\uff1a86400 (s)")),(0,i.kt)("h4",{id:"path_gc_check_step"},(0,i.kt)("inlineCode",{parentName:"h4"},"path_gc_check_step")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Default\uff1a1000")),(0,i.kt)("h4",{id:"path_gc_check_step_interval_ms"},(0,i.kt)("inlineCode",{parentName:"h4"},"path_gc_check_step_interval_ms")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Default\uff1a10 (ms)")),(0,i.kt)("h4",{id:"path_scan_interval_second"},(0,i.kt)("inlineCode",{parentName:"h4"},"path_scan_interval_second")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Default\uff1a86400")),(0,i.kt)("h4",{id:"scan_context_gc_interval_min"},(0,i.kt)("inlineCode",{parentName:"h4"},"scan_context_gc_interval_min")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description\uff1aThis configuration is used for the context gc thread scheduling cycle. Note: The unit is minutes, and the default is 5 minutes"),(0,i.kt)("li",{parentName:"ul"},"Default\uff1a5")),(0,i.kt)("h3",{id:"storage"},"Storage"),(0,i.kt)("h4",{id:"default_num_rows_per_column_file_block"},(0,i.kt)("inlineCode",{parentName:"h4"},"default_num_rows_per_column_file_block")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Configure how many rows of data are contained in a single RowBlock."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1024")),(0,i.kt)("h4",{id:"disable_storage_page_cache"},(0,i.kt)("inlineCode",{parentName:"h4"},"disable_storage_page_cache")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Disable to use page cache for index caching, this configuration only takes effect in BETA storage format, usually it is recommended to false"),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"disk_stat_monitor_interval"},(0,i.kt)("inlineCode",{parentName:"h4"},"disk_stat_monitor_interval")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Disk status check interval"),(0,i.kt)("li",{parentName:"ul"},"Default value: 5\uff08s\uff09")),(0,i.kt)("h4",{id:"max_free_io_buffers"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_free_io_buffers")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: For each io buffer size, the maximum number of buffers that IoMgr will reserve ranges from 1024B to 8MB buffers, up to about 2GB buffers."),(0,i.kt)("li",{parentName:"ul"},"Default value: 128")),(0,i.kt)("h4",{id:"max_garbage_sweep_interval"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_garbage_sweep_interval")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The maximum interval for disk garbage cleaning"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3600 (s)")),(0,i.kt)("h4",{id:"max_percentage_of_error_disk"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_percentage_of_error_disk")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The storage engine allows the percentage of damaged hard disks to exist. After the damaged hard disk exceeds the changed ratio, BE will automatically exit."),(0,i.kt)("li",{parentName:"ul"},"Default value: 0")),(0,i.kt)("h4",{id:"read_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"read_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The read size is the read size sent to the os. There is a trade-off between latency and the whole process, getting to keep the disk busy but not introducing seeks. For 8 MB reads, random io and sequential io have similar performance."),(0,i.kt)("li",{parentName:"ul"},"Default value: 8388608")),(0,i.kt)("h4",{id:"min_garbage_sweep_interval"},(0,i.kt)("inlineCode",{parentName:"h4"},"min_garbage_sweep_interval")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The minimum interval between disk garbage cleaning"),(0,i.kt)("li",{parentName:"ul"},"Default value: 180 (s)")),(0,i.kt)("h4",{id:"pprof_profile_dir"},(0,i.kt)("inlineCode",{parentName:"h4"},"pprof_profile_dir")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: pprof profile save directory"),(0,i.kt)("li",{parentName:"ul"},"Default value: ${DORIS_HOME}/log")),(0,i.kt)("h4",{id:"small_file_dir"},(0,i.kt)("inlineCode",{parentName:"h4"},"small_file_dir")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Save files downloaded by SmallFileMgr"),(0,i.kt)("li",{parentName:"ul"},"Default value: ${DORIS_HOME}/lib/small_file/")),(0,i.kt)("h4",{id:"user_function_dir"},(0,i.kt)("inlineCode",{parentName:"h4"},"user_function_dir")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: udf function directory"),(0,i.kt)("li",{parentName:"ul"},"Default value: ${DORIS_HOME}/lib/udf")),(0,i.kt)("h4",{id:"storage_flood_stage_left_capacity_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"storage_flood_stage_left_capacity_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The min bytes that should be left of a data dir."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1073741824")),(0,i.kt)("h4",{id:"storage_flood_stage_usage_percent"},(0,i.kt)("inlineCode",{parentName:"h4"},"storage_flood_stage_usage_percent")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The storage_flood_stage_usage_percent and storage_flood_stage_left_capacity_bytes configurations limit the maximum usage of the capacity of the data directory."),(0,i.kt)("li",{parentName:"ul"},"Default value: 90 \uff0890%\uff09")),(0,i.kt)("h4",{id:"storage_medium_migrate_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"storage_medium_migrate_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: the count of thread to clone"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1")),(0,i.kt)("h4",{id:"storage_page_cache_limit"},(0,i.kt)("inlineCode",{parentName:"h4"},"storage_page_cache_limit")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Cache for storage page size"),(0,i.kt)("li",{parentName:"ul"},"Default value: 20%")),(0,i.kt)("h4",{id:"storage_page_cache_shard_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"storage_page_cache_shard_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Shard size of StoragePageCache, the value must be power of two. It's recommended to set it to a value close to the number of BE cores in order to reduce lock contentions."),(0,i.kt)("li",{parentName:"ul"},"Default value: 16")),(0,i.kt)("h4",{id:"index_page_cache_percentage"},(0,i.kt)("inlineCode",{parentName:"h4"},"index_page_cache_percentage")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Index page cache as a percentage of total storage page cache, value range is ","[0, 100]"),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"segment_cache_capacity"},(0,i.kt)("inlineCode",{parentName:"h4"},"segment_cache_capacity")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Max number of segment cache (the key is rowset id) entries. -1 is for backward compatibility as fd_number * 2/5."),(0,i.kt)("li",{parentName:"ul"},"Default value: -1")),(0,i.kt)("h4",{id:"storage_strict_check_incompatible_old_format"},(0,i.kt)("inlineCode",{parentName:"h4"},"storage_strict_check_incompatible_old_format")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Used to check incompatible old format strictly"),(0,i.kt)("li",{parentName:"ul"},"Default value: true"),(0,i.kt)("li",{parentName:"ul"},"Dynamically modify: false")),(0,i.kt)("h4",{id:"sync_tablet_meta"},(0,i.kt)("inlineCode",{parentName:"h4"},"sync_tablet_meta")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Whether the storage engine opens sync and keeps it to the disk"),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"pending_data_expire_time_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"pending_data_expire_time_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The maximum duration of unvalidated data retained by the storage engine"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1800 (s)")),(0,i.kt)("h4",{id:"ignore_rowset_stale_unconsistent_delete"},(0,i.kt)("inlineCode",{parentName:"h4"},"ignore_rowset_stale_unconsistent_delete")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: boolean"),(0,i.kt)("li",{parentName:"ul"},"Description:It is used to decide whether to delete the outdated merged rowset if it cannot form a consistent version path.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"The merged expired rowset version path will be deleted after half an hour. In abnormal situations, deleting these versions will result in the problem that the consistent path of the query cannot be constructed. When the configuration is false, the program check is strict and the program will directly report an error and exit.When configured as true, the program will run normally and ignore this error. In general, ignoring this error will not affect the query, only when the merged version is dispatched by fe, -230 error will appear."))),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"create_tablet_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"create_tablet_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of worker threads for BE to create a tablet"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h4",{id:"check_consistency_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"check_consistency_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The number of worker threads to calculate the checksum of the tablet"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1")),(0,i.kt)("h4",{id:"max_tablet_version_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_tablet_version_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int"),(0,i.kt)("li",{parentName:"ul"},"Description: Limit the number of versions of a single tablet. It is used to prevent a large number of version accumulation problems caused by too frequent import or untimely compaction. When the limit is exceeded, the import task will be rejected."),(0,i.kt)("li",{parentName:"ul"},"Default value: 500")),(0,i.kt)("h4",{id:"number_tablet_writer_threads"},(0,i.kt)("inlineCode",{parentName:"h4"},"number_tablet_writer_threads")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of tablet write threads"),(0,i.kt)("li",{parentName:"ul"},"Default value: 16")),(0,i.kt)("h4",{id:"tablet_map_shard_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"tablet_map_shard_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: tablet_map_lock fragment size, the value is 2^n, n=0,1,2,3,4, this is for better tablet management"),(0,i.kt)("li",{parentName:"ul"},"Default value: 4")),(0,i.kt)("h4",{id:"tablet_meta_checkpoint_min_interval_secs"},(0,i.kt)("inlineCode",{parentName:"h4"},"tablet_meta_checkpoint_min_interval_secs")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: TabletMeta Checkpoint\u7ebf\u7a0b\u8f6e\u8be2\u7684\u65f6\u95f4\u95f4\u9694"),(0,i.kt)("li",{parentName:"ul"},"Default value: 600 (s)")),(0,i.kt)("h4",{id:"tablet_meta_checkpoint_min_new_rowsets_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"tablet_meta_checkpoint_min_new_rowsets_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The minimum number of Rowsets for storing TabletMeta Checkpoints"),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"tablet_stat_cache_update_interval_second"},(0,i.kt)("inlineCode",{parentName:"h4"},"tablet_stat_cache_update_interval_second")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Update interval of tablet state cache"),(0,i.kt)("li",{parentName:"ul"},"Default value:300 (s)")),(0,i.kt)("h4",{id:"tablet_rowset_stale_sweep_time_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"tablet_rowset_stale_sweep_time_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: It is used to control the expiration time of cleaning up the merged rowset version. When the current time now() minus the max created rowset\u2018s create time in a version path is greater than tablet_rowset_stale_sweep_time_sec, the current path is cleaned up and these merged rowsets are deleted, the unit is second.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"When writing is too frequent, Fe may not be able to query the merged version, resulting in a query -230 error. This problem can be avoided by increasing this parameter."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 300")),(0,i.kt)("h4",{id:"tablet_writer_open_rpc_timeout_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"tablet_writer_open_rpc_timeout_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Update interval of tablet state cache",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"The RPC timeout for sending a Batch (1024 lines) during import. The default is 60 seconds. Since this RPC may involve writing multiple batches of memory, the RPC timeout may be caused by writing batches, so this timeout can be adjusted to reduce timeout errors (such as send batch fail errors). Also, if you increase the write_buffer_size configuration, you need to increase this parameter as well."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 60")),(0,i.kt)("h4",{id:"tablet_writer_ignore_eovercrowded"},(0,i.kt)("inlineCode",{parentName:"h4"},"tablet_writer_ignore_eovercrowded")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Used to ignore brpc error '","[E1011]","The server is overcrowded' when writing data."),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"streaming_load_rpc_max_alive_time_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"streaming_load_rpc_max_alive_time_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The lifetime of TabletsChannel. If the channel does not receive any data at this time, the channel will be deleted."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1200")),(0,i.kt)("h4",{id:"alter_tablet_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"alter_tablet_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The number of threads making schema changes"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h3",{id:"alter_index_worker_count"},(0,i.kt)("inlineCode",{parentName:"h3"},"alter_index_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The number of threads making index change"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h4",{id:"ignore_load_tablet_failure"},(0,i.kt)("inlineCode",{parentName:"h4"},"ignore_load_tablet_failure")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: It is used to decide whether to ignore errors and continue to start be in case of tablet loading failure"),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("p",null,"When BE starts, a separate thread will be started for each data directory to load the meta information of the tablet header. In the default configuration, if a data directory fails to load a tablet, the startup process will terminate. At the same time, it will be displayed in the ",(0,i.kt)("inlineCode",{parentName:"p"},"be The following error message is seen in the INFO")," log:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"load tablets from header failed, failed tablets size: xxx, path=xxx\n")),(0,i.kt)("p",null,"Indicates how many tablets failed to load in the data directory. At the same time, the log will also contain specific information about the tablets that failed to load. At this time, manual intervention is required to troubleshoot the cause of the error. After troubleshooting, there are usually two ways to restore:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"The tablet information cannot be repaired. If the other copies are normal, you can delete the wrong tablet with the ",(0,i.kt)("inlineCode",{parentName:"li"},"meta_tool")," tool."),(0,i.kt)("li",{parentName:"ul"},"Set ",(0,i.kt)("inlineCode",{parentName:"li"},"ignore_load_tablet_failure")," to true, BE will ignore these faulty tablets and start normally")),(0,i.kt)("h4",{id:"report_disk_state_interval_seconds"},(0,i.kt)("inlineCode",{parentName:"h4"},"report_disk_state_interval_seconds")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The interval time for the agent to report the disk status to FE"),(0,i.kt)("li",{parentName:"ul"},"Default value: 60 (s)")),(0,i.kt)("h4",{id:"result_buffer_cancelled_interval_time"},(0,i.kt)("inlineCode",{parentName:"h4"},"result_buffer_cancelled_interval_time")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Result buffer cancellation time"),(0,i.kt)("li",{parentName:"ul"},"Default value: 300 (s)")),(0,i.kt)("h4",{id:"snapshot_expire_time_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"snapshot_expire_time_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Snapshot file cleaning interval."),(0,i.kt)("li",{parentName:"ul"},"Default value:172800 (48 hours)")),(0,i.kt)("h4",{id:"compress_rowbatches"},(0,i.kt)("inlineCode",{parentName:"h4"},"compress_rowbatches")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: enable to use Snappy compression algorithm for data compression when serializing RowBatch"),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("version",{since:"1.2"},(0,i.kt)("h4",{id:"jvm_max_heap_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"jvm_max_heap_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: string"),(0,i.kt)("li",{parentName:"ul"},"Description: The maximum size of JVM heap memory used by BE, which is the ",(0,i.kt)("inlineCode",{parentName:"li"},"-Xmx")," parameter of JVM"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1024M"))),(0,i.kt)("h3",{id:"log"},"Log"),(0,i.kt)("h4",{id:"sys_log_dir"},(0,i.kt)("inlineCode",{parentName:"h4"},"sys_log_dir")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: string"),(0,i.kt)("li",{parentName:"ul"},"Description: Storage directory of BE log data"),(0,i.kt)("li",{parentName:"ul"},"Default value: ${DORIS_HOME}/log")),(0,i.kt)("h4",{id:"sys_log_level"},(0,i.kt)("inlineCode",{parentName:"h4"},"sys_log_level")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Log Level: INFO < WARNING < ERROR < FATAL"),(0,i.kt)("li",{parentName:"ul"},"Default value: INFO")),(0,i.kt)("h4",{id:"sys_log_roll_mode"},(0,i.kt)("inlineCode",{parentName:"h4"},"sys_log_roll_mode")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The size of the log split, one log file is split every 1G"),(0,i.kt)("li",{parentName:"ul"},"Default value: SIZE-MB-1024")),(0,i.kt)("h4",{id:"sys_log_roll_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"sys_log_roll_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of log files kept"),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"sys_log_verbose_level"},(0,i.kt)("inlineCode",{parentName:"h4"},"sys_log_verbose_level")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Log display level, used to control the log output at the beginning of VLOG in the code"),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"sys_log_verbose_modules"},(0,i.kt)("inlineCode",{parentName:"h4"},"sys_log_verbose_modules")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Log printing module, writing olap will only print the log under the olap module"),(0,i.kt)("li",{parentName:"ul"},"Default value: empty")),(0,i.kt)("h4",{id:"aws_log_level"},(0,i.kt)("inlineCode",{parentName:"h4"},"aws_log_level")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: log level of AWS SDK,",(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre"},"   Off = 0,\n   Fatal = 1,\n   Error = 2,\n   Warn = 3,\n   Info = 4,\n   Debug = 5,\n   Trace = 6\n"))),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h4",{id:"log_buffer_level"},(0,i.kt)("inlineCode",{parentName:"h4"},"log_buffer_level")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The log flushing strategy is kept in memory by default"),(0,i.kt)("li",{parentName:"ul"},"Default value: empty")),(0,i.kt)("h3",{id:"else"},"Else"),(0,i.kt)("h4",{id:"report_tablet_interval_seconds"},(0,i.kt)("inlineCode",{parentName:"h4"},"report_tablet_interval_seconds")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The interval time for the agent to report the olap table to the FE"),(0,i.kt)("li",{parentName:"ul"},"Default value: 60 (s)")),(0,i.kt)("h4",{id:"report_task_interval_seconds"},(0,i.kt)("inlineCode",{parentName:"h4"},"report_task_interval_seconds")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The interval time for the agent to report the task signature to FE"),(0,i.kt)("li",{parentName:"ul"},"Default value: 10 (s)")),(0,i.kt)("h4",{id:"periodic_counter_update_period_ms"},(0,i.kt)("inlineCode",{parentName:"h4"},"periodic_counter_update_period_ms")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Update rate counter and sampling counter cycle"),(0,i.kt)("li",{parentName:"ul"},"Default value: 500 (ms)")),(0,i.kt)("h4",{id:"enable_metric_calculator"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_metric_calculator")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: If set to true, the metric calculator will run to collect BE-related indicator information, if set to false, it will not run"),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"enable_system_metrics"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_system_metrics")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: User control to turn on and off system indicators."),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"enable_token_check"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_token_check")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Used for forward compatibility, will be removed later."),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"max_runnings_transactions_per_txn_map"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_runnings_transactions_per_txn_map")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Max number of txns for every txn_partition_map in txn manager, this is a self protection to avoid too many txns saving in manager"),(0,i.kt)("li",{parentName:"ul"},"Default value: 2000")),(0,i.kt)("h4",{id:"max_download_speed_kbps"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_download_speed_kbps")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Maximum download speed limit"),(0,i.kt)("li",{parentName:"ul"},"Default value: 50000 \uff08kb/s\uff09")),(0,i.kt)("h4",{id:"download_low_speed_time"},(0,i.kt)("inlineCode",{parentName:"h4"},"download_low_speed_time")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Download time limit"),(0,i.kt)("li",{parentName:"ul"},"Default value: 300 (s)")),(0,i.kt)("h4",{id:"download_low_speed_limit_kbps"},(0,i.kt)("inlineCode",{parentName:"h4"},"download_low_speed_limit_kbps")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Minimum download speed"),(0,i.kt)("li",{parentName:"ul"},"Default value: 50 (KB/s)")),(0,i.kt)("h4",{id:"doris_cgroups"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_cgroups")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Cgroups assigned to doris"),(0,i.kt)("li",{parentName:"ul"},"Default value: empty")),(0,i.kt)("h4",{id:"priority_queue_remaining_tasks_increased_frequency"},(0,i.kt)("inlineCode",{parentName:"h4"},"priority_queue_remaining_tasks_increased_frequency")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: the increased frequency of priority for remaining tasks in BlockingPriorityQueue"),(0,i.kt)("li",{parentName:"ul"},"Default value: 512")),(0,i.kt)("version",{since:"1.2"},(0,i.kt)("h4",{id:"jdbc_drivers_dir"},(0,i.kt)("inlineCode",{parentName:"h4"},"jdbc_drivers_dir")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Default dirs to put jdbc drivers."),(0,i.kt)("li",{parentName:"ul"},"Default value: ",(0,i.kt)("inlineCode",{parentName:"li"},"${DORIS_HOME}/jdbc_drivers"))),(0,i.kt)("h4",{id:"enable_parse_multi_dimession_array"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_parse_multi_dimession_array")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Whether parse multidimensional array, if false encountering will return ERROR"),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"enable_simdjson_reader"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_simdjson_reader")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Whether enable simdjson to parse json while stream load"),(0,i.kt)("li",{parentName:"ul"},"Default value: true"))),(0,i.kt)("h4",{id:"enable_query_memory_overcommit"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_query_memory_overcommit")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: If true, when the process does not exceed the soft mem limit, the query memory will not be limited; when the process memory exceeds the soft mem limit, the query with the largest ratio between the currently used memory and the exec_mem_limit will be canceled. If false, cancel query when the memory used exceeds exec_mem_limit."),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"user_files_secure_path"},(0,i.kt)("inlineCode",{parentName:"h4"},"user_files_secure_path")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The storage directory for files queried by ",(0,i.kt)("inlineCode",{parentName:"li"},"local")," table valued functions."),(0,i.kt)("li",{parentName:"ul"},"Default value: ",(0,i.kt)("inlineCode",{parentName:"li"},"${DORIS_HOME}"))),(0,i.kt)("h4",{id:"brpc_streaming_client_batch_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"brpc_streaming_client_batch_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The batch size for sending data by brpc streaming client"),(0,i.kt)("li",{parentName:"ul"},"Default value: 262144")),(0,i.kt)("h4",{id:"grace_shutdown_wait_seconds"},(0,i.kt)("inlineCode",{parentName:"h4"},"grace_shutdown_wait_seconds")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: In cloud native deployment scenario, BE will be add to cluster and remove from cluster very frequently. User's query will fail if there is a fragment is running on the shuting down BE. Users could use stop_be.sh --grace, then BE will wait all running queries to stop to avoiding running query failure, but if the waiting time exceed the limit, then be will exit directly. During this period, FE will not send any queries to BE and waiting for all running queries to stop."),(0,i.kt)("li",{parentName:"ul"},"Default value: 120")),(0,i.kt)("h4",{id:"enable_java_support"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_java_support")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: BE Whether to enable the use of java-jni. When enabled, mutual calls between c++ and java are allowed. Currently supports hudi, java-udf, jdbc, max-compute, paimon, preload, avro"),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"olap_table_sink_send_interval_microseconds"},(0,i.kt)("inlineCode",{parentName:"h4"},"olap_table_sink_send_interval_microseconds")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: While loading data, there's a polling thread keep sending data to corresponding BE from Coordinator's sink node. This thread will check whether there's data to send every ",(0,i.kt)("inlineCode",{parentName:"li"},"olap_table_sink_send_interval_microseconds")," microseconds."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1000")),(0,i.kt)("h4",{id:"olap_table_sink_send_interval_auto_partition_factor"},(0,i.kt)("inlineCode",{parentName:"h4"},"olap_table_sink_send_interval_auto_partition_factor")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: If we load data to a table which enabled auto partition. the interval of ",(0,i.kt)("inlineCode",{parentName:"li"},"olap_table_sink_send_interval_microseconds")," is too slow. In that case the real interval will multiply this factor."),(0,i.kt)("li",{parentName:"ul"},"Default value: 0.001")))}m.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/3c0271cd.f0a1e078.js b/assets/js/3c0271cd.f0a1e078.js
new file mode 100644
index 0000000..04a8c0f
--- /dev/null
+++ b/assets/js/3c0271cd.f0a1e078.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoris_website=self.webpackChunkdoris_website||[]).push([[70493],{3905:(e,t,a)=>{a.d(t,{Zo:()=>_,kt:()=>p});var l=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,l)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?n(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):n(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function r(e,t){if(null==e)return{};var a,l,i=function(e,t){if(null==e)return{};var a,l,i={},n=Object.keys(e);for(l=0;l<n.length;l++)a=n[l],t.indexOf(a)>=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(l=0;l<n.length;l++)a=n[l],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var s=l.createContext({}),u=function(e){var t=l.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},_=function(e){var t=u(e.components);return l.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},d=l.forwardRef((function(e,t){var a=e.components,i=e.mdxType,n=e.originalType,s=e.parentName,_=r(e,["components","mdxType","originalType","parentName"]),c=u(a),d=i,p=c["".concat(s,".").concat(d)]||c[d]||m[d]||n;return a?l.createElement(p,o(o({ref:t},_),{},{components:a})):l.createElement(p,o({ref:t},_))}));function p(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=a.length,o=new Array(n);o[0]=d;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r[c]="string"==typeof e?e:i,o[1]=r;for(var u=2;u<n;u++)o[u]=a[u];return l.createElement.apply(null,o)}return l.createElement.apply(null,a)}d.displayName="MDXCreateElement"},60899:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>r,toc:()=>u});var l=a(87462),i=(a(67294),a(3905));const n={title:"BE Configuration",language:"en",toc_min_heading_level:2,toc_max_heading_level:4},o=void 0,r={unversionedId:"admin-manual/config/be-config",id:"admin-manual/config/be-config",title:"BE Configuration",description:"\x3c!--",source:"@site/docs/admin-manual/config/be-config.md",sourceDirName:"admin-manual/config",slug:"/admin-manual/config/be-config",permalink:"/docs/dev/admin-manual/config/be-config",draft:!1,tags:[],version:"current",frontMatter:{title:"BE Configuration",language:"en",toc_min_heading_level:2,toc_max_heading_level:4},sidebar:"docs",previous:{title:"FE Configuration",permalink:"/docs/dev/admin-manual/config/fe-config"},next:{title:"User Property",permalink:"/docs/dev/admin-manual/config/user-property"}},s={},u=[{value:"View configuration items",id:"view-configuration-items",level:2},{value:"Set configuration items",id:"set-configuration-items",level:2},{value:"Examples",id:"examples",level:2},{value:"Configurations",id:"configurations",level:2},{value:"Services",id:"services",level:3},{value:"<code>be_port</code>",id:"be_port",level:4},{value:"<code>heartbeat_service_port</code>",id:"heartbeat_service_port",level:4},{value:"<code>webserver_port</code>",id:"webserver_port",level:4},{value:"<code>brpc_port</code>",id:"brpc_port",level:4},{value:"<code>arrow_flight_sql_port</code>",id:"arrow_flight_sql_port",level:4},{value:"<code>enable_https</code>",id:"enable_https",level:4},{value:"<code>priority_networks</code>",id:"priority_networks",level:4},{value:"<code>storage_root_path</code>",id:"storage_root_path",level:4},{value:"<code>heartbeat_service_thread_count</code>",id:"heartbeat_service_thread_count",level:4},{value:"<code>ignore_broken_disk</code>",id:"ignore_broken_disk",level:4},{value:"<code>mem_limit</code>",id:"mem_limit",level:4},{value:"<code>cluster_id</code>",id:"cluster_id",level:4},{value:"<code>custom_config_dir</code>",id:"custom_config_dir",level:4},{value:"<code>trash_file_expire_time_sec</code>",id:"trash_file_expire_time_sec",level:4},{value:"<code>es_http_timeout_ms</code>",id:"es_http_timeout_ms",level:4},{value:"<code>es_scroll_keepalive</code>",id:"es_scroll_keepalive",level:4},{value:"<code>external_table_connect_timeout_sec</code>",id:"external_table_connect_timeout_sec",level:4},{value:"<code>status_report_interval</code>",id:"status_report_interval",level:4},{value:"<code>brpc_max_body_size</code>",id:"brpc_max_body_size",level:4},{value:"<code>brpc_socket_max_unwritten_bytes</code>",id:"brpc_socket_max_unwritten_bytes",level:4},{value:"<code>transfer_large_data_by_brpc</code>",id:"transfer_large_data_by_brpc",level:4},{value:"<code>brpc_num_threads</code>",id:"brpc_num_threads",level:4},{value:"<code>thrift_rpc_timeout_ms</code>",id:"thrift_rpc_timeout_ms",level:4},{value:"<code>thrift_client_retry_interval_ms</code>",id:"thrift_client_retry_interval_ms",level:4},{value:"<code>thrift_connect_timeout_seconds</code>",id:"thrift_connect_timeout_seconds",level:4},{value:"<code>thrift_server_type_of_fe</code>",id:"thrift_server_type_of_fe",level:4},{value:"<code>txn_commit_rpc_timeout_ms</code>",id:"txn_commit_rpc_timeout_ms",level:4},{value:"<code>txn_map_shard_size</code>",id:"txn_map_shard_size",level:4},{value:"<code>txn_shard_size</code>",id:"txn_shard_size",level:4},{value:"<code>unused_rowset_monitor_interval</code>",id:"unused_rowset_monitor_interval",level:4},{value:"<code>max_client_cache_size_per_host</code>",id:"max_client_cache_size_per_host",level:4},{value:"<code>string_type_length_soft_limit_bytes</code>",id:"string_type_length_soft_limit_bytes",level:4},{value:"<code>big_column_size_buffer</code>",id:"big_column_size_buffer",level:4},{value:"<code>small_column_size_buffer</code>",id:"small_column_size_buffer",level:4},{value:"<code>jsonb_type_length_soft_limit_bytes</code>",id:"jsonb_type_length_soft_limit_bytes",level:4},{value:"Query",id:"query",level:3},{value:"<code>fragment_pool_queue_size</code>",id:"fragment_pool_queue_size",level:4},{value:"<code>fragment_pool_thread_num_min</code>",id:"fragment_pool_thread_num_min",level:4},{value:"<code>fragment_pool_thread_num_max</code>",id:"fragment_pool_thread_num_max",level:4},{value:"<code>doris_max_pushdown_conjuncts_return_rate</code>",id:"doris_max_pushdown_conjuncts_return_rate",level:4},{value:"<code>doris_max_scan_key_num</code>",id:"doris_max_scan_key_num",level:4},{value:"<code>doris_scan_range_row_count</code>",id:"doris_scan_range_row_count",level:4},{value:"<code>doris_scanner_queue_size</code>",id:"doris_scanner_queue_size",level:4},{value:"<code>doris_scanner_row_num</code>",id:"doris_scanner_row_num",level:4},{value:"<code>doris_scanner_row_bytes</code>",id:"doris_scanner_row_bytes",level:4},{value:"<code>doris_scanner_thread_pool_queue_size</code>",id:"doris_scanner_thread_pool_queue_size",level:4},{value:"<code>doris_scanner_thread_pool_thread_num</code>",id:"doris_scanner_thread_pool_thread_num",level:4},{value:"<code>doris_max_remote_scanner_thread_pool_thread_num</code>",id:"doris_max_remote_scanner_thread_pool_thread_num",level:4},{value:"<code>enable_prefetch</code>",id:"enable_prefetch",level:4},{value:"<code>enable_quadratic_probing</code>",id:"enable_quadratic_probing",level:4},{value:"<code>exchg_node_buffer_size_bytes</code>",id:"exchg_node_buffer_size_bytes",level:4},{value:"<code>max_pushdown_conditions_per_column</code>",id:"max_pushdown_conditions_per_column",level:4},{value:"<code>max_send_batch_parallelism_per_job</code>",id:"max_send_batch_parallelism_per_job",level:4},{value:"<code>doris_scan_range_max_mb</code>",id:"doris_scan_range_max_mb",level:4},{value:"compaction",id:"compaction",level:3},{value:"<code>disable_auto_compaction</code>",id:"disable_auto_compaction",level:4},{value:"<code>enable_vertical_compaction</code>",id:"enable_vertical_compaction",level:4},{value:"<code>vertical_compaction_num_columns_per_group</code>",id:"vertical_compaction_num_columns_per_group",level:4},{value:"<code>vertical_compaction_max_row_source_memory_mb</code>",id:"vertical_compaction_max_row_source_memory_mb",level:4},{value:"<code>vertical_compaction_max_segment_size</code>",id:"vertical_compaction_max_segment_size",level:4},{value:"<code>enable_ordered_data_compaction</code>",id:"enable_ordered_data_compaction",level:4},{value:"<code>ordered_data_compaction_min_segment_size</code>",id:"ordered_data_compaction_min_segment_size",level:4},{value:"<code>max_base_compaction_threads</code>",id:"max_base_compaction_threads",level:4},{value:"<code>generate_compaction_tasks_interval_ms</code>",id:"generate_compaction_tasks_interval_ms",level:4},{value:"<code>base_compaction_min_rowset_num</code>",id:"base_compaction_min_rowset_num",level:4},{value:"<code>base_compaction_min_data_ratio</code>",id:"base_compaction_min_data_ratio",level:4},{value:"<code>total_permits_for_compaction_score</code>",id:"total_permits_for_compaction_score",level:4},{value:"<code>compaction_promotion_size_mbytes</code>",id:"compaction_promotion_size_mbytes",level:4},{value:"<code>compaction_promotion_ratio</code>",id:"compaction_promotion_ratio",level:4},{value:"<code>compaction_promotion_min_size_mbytes</code>",id:"compaction_promotion_min_size_mbytes",level:4},{value:"<code>compaction_min_size_mbytes</code>",id:"compaction_min_size_mbytes",level:4},{value:"<code>default_rowset_type</code>",id:"default_rowset_type",level:4},{value:"<code>cumulative_compaction_min_deltas</code>",id:"cumulative_compaction_min_deltas",level:4},{value:"<code>cumulative_compaction_max_deltas</code>",id:"cumulative_compaction_max_deltas",level:4},{value:"<code>base_compaction_trace_threshold</code>",id:"base_compaction_trace_threshold",level:4},{value:"<code>cumulative_compaction_trace_threshold</code>",id:"cumulative_compaction_trace_threshold",level:4},{value:"<code>compaction_task_num_per_disk</code>",id:"compaction_task_num_per_disk",level:4},{value:"<code>compaction_task_num_per_fast_disk</code>",id:"compaction_task_num_per_fast_disk",level:4},{value:"<code>cumulative_compaction_rounds_for_each_base_compaction_round</code>",id:"cumulative_compaction_rounds_for_each_base_compaction_round",level:4},{value:"<code>cumulative_compaction_policy</code>",id:"cumulative_compaction_policy",level:4},{value:"<code>max_cumu_compaction_threads</code>",id:"max_cumu_compaction_threads",level:4},{value:"<code>enable_segcompaction</code>",id:"enable_segcompaction",level:4},{value:"<code>segcompaction_batch_size</code>",id:"segcompaction_batch_size",level:4},{value:"<code>segcompaction_candidate_max_rows</code>",id:"segcompaction_candidate_max_rows",level:4},{value:"<code>segcompaction_candidate_max_bytes</code>",id:"segcompaction_candidate_max_bytes",level:4},{value:"<code>segcompaction_task_max_rows</code>",id:"segcompaction_task_max_rows",level:4},{value:"<code>segcompaction_task_max_bytes</code>",id:"segcompaction_task_max_bytes",level:4},{value:"<code>segcompaction_num_threads</code>",id:"segcompaction_num_threads",level:4},{value:"<code>disable_compaction_trace_log</code>",id:"disable_compaction_trace_log",level:4},{value:"<code>pick_rowset_to_compact_interval_sec</code>",id:"pick_rowset_to_compact_interval_sec",level:4},{value:"<code>max_single_replica_compaction_threads</code>",id:"max_single_replica_compaction_threads",level:4},{value:"<code>update_replica_infos_interval_seconds</code>",id:"update_replica_infos_interval_seconds",level:4},{value:"Load",id:"load",level:3},{value:"<code>enable_stream_load_record</code>",id:"enable_stream_load_record",level:4},{value:"<code>load_data_reserve_hours</code>",id:"load_data_reserve_hours",level:4},{value:"<code>push_worker_count_high_priority</code>",id:"push_worker_count_high_priority",level:4},{value:"<code>push_worker_count_normal_priority</code>",id:"push_worker_count_normal_priority",level:4},{value:"<code>enable_single_replica_load</code>",id:"enable_single_replica_load",level:4},{value:"<code>load_error_log_reserve_hours</code>",id:"load_error_log_reserve_hours",level:4},{value:"<code>load_process_max_memory_limit_percent</code>",id:"load_process_max_memory_limit_percent",level:4},{value:"<code>load_process_soft_mem_limit_percent</code>",id:"load_process_soft_mem_limit_percent",level:4},{value:"<code>routine_load_thread_pool_size</code>",id:"routine_load_thread_pool_size",level:4},{value:"<code>slave_replica_writer_rpc_timeout_sec</code>",id:"slave_replica_writer_rpc_timeout_sec",level:4},{value:"<code>max_segment_num_per_rowset</code>",id:"max_segment_num_per_rowset",level:4},{value:"<code>high_priority_flush_thread_num_per_store</code>",id:"high_priority_flush_thread_num_per_store",level:4},{value:"<code>routine_load_consumer_pool_size</code>",id:"routine_load_consumer_pool_size",level:4},{value:"<code>multi_table_batch_plan_threshold</code>",id:"multi_table_batch_plan_threshold",level:4},{value:"<code>single_replica_load_download_num_workers</code>",id:"single_replica_load_download_num_workers",level:4},{value:"<code>load_task_high_priority_threshold_second</code>",id:"load_task_high_priority_threshold_second",level:4},{value:"<code>min_load_rpc_timeout_ms</code>",id:"min_load_rpc_timeout_ms",level:4},{value:"<code>kafka_api_version_request</code>",id:"kafka_api_version_request",level:4},{value:"<code>kafka_broker_version_fallback</code>",id:"kafka_broker_version_fallback",level:4},{value:"<code>max_consumer_num_per_group</code>",id:"max_consumer_num_per_group",level:4},{value:"<code>streaming_load_max_mb</code>",id:"streaming_load_max_mb",level:4},{value:"<code>streaming_load_json_max_mb</code>",id:"streaming_load_json_max_mb",level:4},{value:"Thread",id:"thread",level:3},{value:"<code>delete_worker_count</code>",id:"delete_worker_count",level:4},{value:"<code>clear_transaction_task_worker_count</code>",id:"clear_transaction_task_worker_count",level:4},{value:"<code>clone_worker_count</code>",id:"clone_worker_count",level:4},{value:"<code>be_service_threads</code>",id:"be_service_threads",level:4},{value:"<code>download_worker_count</code>",id:"download_worker_count",level:4},{value:"<code>drop_tablet_worker_count</code>",id:"drop_tablet_worker_count",level:4},{value:"<code>flush_thread_num_per_store</code>",id:"flush_thread_num_per_store",level:4},{value:"<code>num_threads_per_core</code>",id:"num_threads_per_core",level:4},{value:"<code>num_threads_per_disk</code>",id:"num_threads_per_disk",level:4},{value:"<code>number_slave_replica_download_threads</code>",id:"number_slave_replica_download_threads",level:4},{value:"<code>publish_version_worker_count</code>",id:"publish_version_worker_count",level:4},{value:"<code>upload_worker_count</code>",id:"upload_worker_count",level:4},{value:"<code>webserver_num_workers</code>",id:"webserver_num_workers",level:4},{value:"<code>send_batch_thread_pool_thread_num</code>",id:"send_batch_thread_pool_thread_num",level:4},{value:"<code>send_batch_thread_pool_queue_size</code>",id:"send_batch_thread_pool_queue_size",level:4},{value:"<code>make_snapshot_worker_count</code>",id:"make_snapshot_worker_count",level:4},{value:"<code>release_snapshot_worker_count</code>",id:"release_snapshot_worker_count",level:4},{value:"Memory",id:"memory",level:3},{value:"<code>disable_mem_pools</code>",id:"disable_mem_pools",level:4},{value:"<code>buffer_pool_clean_pages_limit</code>",id:"buffer_pool_clean_pages_limit",level:4},{value:"<code>buffer_pool_limit</code>",id:"buffer_pool_limit",level:4},{value:"<code>chunk_reserved_bytes_limit</code>",id:"chunk_reserved_bytes_limit",level:4},{value:"<code>madvise_huge_pages</code>",id:"madvise_huge_pages",level:4},{value:"<code>max_memory_sink_batch_count</code>",id:"max_memory_sink_batch_count",level:4},{value:"<code>memory_max_alignment</code>",id:"memory_max_alignment",level:4},{value:"<code>mmap_buffers</code>",id:"mmap_buffers",level:4},{value:"<code>memtable_mem_tracker_refresh_interval_ms</code>",id:"memtable_mem_tracker_refresh_interval_ms",level:4},{value:"<code>download_cache_buffer_size</code>",id:"download_cache_buffer_size",level:4},{value:"<code>zone_map_row_num_threshold</code>",id:"zone_map_row_num_threshold",level:4},{value:"<code>enable_tcmalloc_hook</code>",id:"enable_tcmalloc_hook",level:4},{value:"<code>memory_mode</code>",id:"memory_mode",level:4},{value:"<code>max_sys_mem_available_low_water_mark_bytes</code>",id:"max_sys_mem_available_low_water_mark_bytes",level:4},{value:"<code>memory_limitation_per_thread_for_schema_change_bytes</code>",id:"memory_limitation_per_thread_for_schema_change_bytes",level:4},{value:"<code>mem_tracker_consume_min_size_bytes</code>",id:"mem_tracker_consume_min_size_bytes",level:4},{value:"<code>cache_clean_interval</code>",id:"cache_clean_interval",level:4},{value:"<code>min_buffer_size</code>",id:"min_buffer_size",level:4},{value:"<code>write_buffer_size</code>",id:"write_buffer_size",level:4},{value:"<code>remote_storage_read_buffer_mb</code>",id:"remote_storage_read_buffer_mb",level:4},{value:"<code>file_cache_type</code>",id:"file_cache_type",level:4},{value:"<code>file_cache_alive_time_sec</code>",id:"file_cache_alive_time_sec",level:4},{value:"<code>file_cache_max_size_per_disk</code>",id:"file_cache_max_size_per_disk",level:4},{value:"<code>max_sub_cache_file_size</code>",id:"max_sub_cache_file_size",level:4},{value:"<code>download_cache_thread_pool_thread_num</code>",id:"download_cache_thread_pool_thread_num",level:4},{value:"<code>download_cache_thread_pool_queue_size</code>",id:"download_cache_thread_pool_queue_size",level:4},{value:"<code>generate_cache_cleaner_task_interval_sec</code>",id:"generate_cache_cleaner_task_interval_sec",level:4},{value:"<code>path_gc_check</code>",id:"path_gc_check",level:4},{value:"<code>path_gc_check_interval_second</code>",id:"path_gc_check_interval_second",level:4},{value:"<code>path_gc_check_step</code>",id:"path_gc_check_step",level:4},{value:"<code>path_gc_check_step_interval_ms</code>",id:"path_gc_check_step_interval_ms",level:4},{value:"<code>path_scan_interval_second</code>",id:"path_scan_interval_second",level:4},{value:"<code>scan_context_gc_interval_min</code>",id:"scan_context_gc_interval_min",level:4},{value:"Storage",id:"storage",level:3},{value:"<code>default_num_rows_per_column_file_block</code>",id:"default_num_rows_per_column_file_block",level:4},{value:"<code>disable_storage_page_cache</code>",id:"disable_storage_page_cache",level:4},{value:"<code>disk_stat_monitor_interval</code>",id:"disk_stat_monitor_interval",level:4},{value:"<code>max_free_io_buffers</code>",id:"max_free_io_buffers",level:4},{value:"<code>max_garbage_sweep_interval</code>",id:"max_garbage_sweep_interval",level:4},{value:"<code>max_percentage_of_error_disk</code>",id:"max_percentage_of_error_disk",level:4},{value:"<code>read_size</code>",id:"read_size",level:4},{value:"<code>min_garbage_sweep_interval</code>",id:"min_garbage_sweep_interval",level:4},{value:"<code>pprof_profile_dir</code>",id:"pprof_profile_dir",level:4},{value:"<code>small_file_dir</code>",id:"small_file_dir",level:4},{value:"<code>user_function_dir</code>",id:"user_function_dir",level:4},{value:"<code>storage_flood_stage_left_capacity_bytes</code>",id:"storage_flood_stage_left_capacity_bytes",level:4},{value:"<code>storage_flood_stage_usage_percent</code>",id:"storage_flood_stage_usage_percent",level:4},{value:"<code>storage_medium_migrate_count</code>",id:"storage_medium_migrate_count",level:4},{value:"<code>storage_page_cache_limit</code>",id:"storage_page_cache_limit",level:4},{value:"<code>storage_page_cache_shard_size</code>",id:"storage_page_cache_shard_size",level:4},{value:"<code>index_page_cache_percentage</code>",id:"index_page_cache_percentage",level:4},{value:"<code>segment_cache_capacity</code>",id:"segment_cache_capacity",level:4},{value:"<code>storage_strict_check_incompatible_old_format</code>",id:"storage_strict_check_incompatible_old_format",level:4},{value:"<code>sync_tablet_meta</code>",id:"sync_tablet_meta",level:4},{value:"<code>pending_data_expire_time_sec</code>",id:"pending_data_expire_time_sec",level:4},{value:"<code>ignore_rowset_stale_unconsistent_delete</code>",id:"ignore_rowset_stale_unconsistent_delete",level:4},{value:"<code>create_tablet_worker_count</code>",id:"create_tablet_worker_count",level:4},{value:"<code>check_consistency_worker_count</code>",id:"check_consistency_worker_count",level:4},{value:"<code>max_tablet_version_num</code>",id:"max_tablet_version_num",level:4},{value:"<code>number_tablet_writer_threads</code>",id:"number_tablet_writer_threads",level:4},{value:"<code>tablet_map_shard_size</code>",id:"tablet_map_shard_size",level:4},{value:"<code>tablet_meta_checkpoint_min_interval_secs</code>",id:"tablet_meta_checkpoint_min_interval_secs",level:4},{value:"<code>tablet_meta_checkpoint_min_new_rowsets_num</code>",id:"tablet_meta_checkpoint_min_new_rowsets_num",level:4},{value:"<code>tablet_stat_cache_update_interval_second</code>",id:"tablet_stat_cache_update_interval_second",level:4},{value:"<code>tablet_rowset_stale_sweep_time_sec</code>",id:"tablet_rowset_stale_sweep_time_sec",level:4},{value:"<code>tablet_writer_open_rpc_timeout_sec</code>",id:"tablet_writer_open_rpc_timeout_sec",level:4},{value:"<code>tablet_writer_ignore_eovercrowded</code>",id:"tablet_writer_ignore_eovercrowded",level:4},{value:"<code>streaming_load_rpc_max_alive_time_sec</code>",id:"streaming_load_rpc_max_alive_time_sec",level:4},{value:"<code>alter_tablet_worker_count</code>",id:"alter_tablet_worker_count",level:4},{value:"<code>alter_index_worker_count</code>",id:"alter_index_worker_count",level:3},{value:"<code>ignore_load_tablet_failure</code>",id:"ignore_load_tablet_failure",level:4},{value:"<code>report_disk_state_interval_seconds</code>",id:"report_disk_state_interval_seconds",level:4},{value:"<code>result_buffer_cancelled_interval_time</code>",id:"result_buffer_cancelled_interval_time",level:4},{value:"<code>snapshot_expire_time_sec</code>",id:"snapshot_expire_time_sec",level:4},{value:"<code>compress_rowbatches</code>",id:"compress_rowbatches",level:4},{value:"<code>jvm_max_heap_size</code>",id:"jvm_max_heap_size",level:4},{value:"Log",id:"log",level:3},{value:"<code>sys_log_dir</code>",id:"sys_log_dir",level:4},{value:"<code>sys_log_level</code>",id:"sys_log_level",level:4},{value:"<code>sys_log_roll_mode</code>",id:"sys_log_roll_mode",level:4},{value:"<code>sys_log_roll_num</code>",id:"sys_log_roll_num",level:4},{value:"<code>sys_log_verbose_level</code>",id:"sys_log_verbose_level",level:4},{value:"<code>sys_log_verbose_modules</code>",id:"sys_log_verbose_modules",level:4},{value:"<code>aws_log_level</code>",id:"aws_log_level",level:4},{value:"<code>log_buffer_level</code>",id:"log_buffer_level",level:4},{value:"Else",id:"else",level:3},{value:"<code>report_tablet_interval_seconds</code>",id:"report_tablet_interval_seconds",level:4},{value:"<code>report_task_interval_seconds</code>",id:"report_task_interval_seconds",level:4},{value:"<code>periodic_counter_update_period_ms</code>",id:"periodic_counter_update_period_ms",level:4},{value:"<code>enable_metric_calculator</code>",id:"enable_metric_calculator",level:4},{value:"<code>enable_system_metrics</code>",id:"enable_system_metrics",level:4},{value:"<code>enable_token_check</code>",id:"enable_token_check",level:4},{value:"<code>max_runnings_transactions_per_txn_map</code>",id:"max_runnings_transactions_per_txn_map",level:4},{value:"<code>max_download_speed_kbps</code>",id:"max_download_speed_kbps",level:4},{value:"<code>download_low_speed_time</code>",id:"download_low_speed_time",level:4},{value:"<code>download_low_speed_limit_kbps</code>",id:"download_low_speed_limit_kbps",level:4},{value:"<code>doris_cgroups</code>",id:"doris_cgroups",level:4},{value:"<code>priority_queue_remaining_tasks_increased_frequency</code>",id:"priority_queue_remaining_tasks_increased_frequency",level:4},{value:"<code>jdbc_drivers_dir</code>",id:"jdbc_drivers_dir",level:4},{value:"<code>enable_simdjson_reader</code>",id:"enable_simdjson_reader",level:4},{value:"<code>enable_query_memory_overcommit</code>",id:"enable_query_memory_overcommit",level:4},{value:"<code>user_files_secure_path</code>",id:"user_files_secure_path",level:4},{value:"<code>brpc_streaming_client_batch_bytes</code>",id:"brpc_streaming_client_batch_bytes",level:4},{value:"<code>grace_shutdown_wait_seconds</code>",id:"grace_shutdown_wait_seconds",level:4},{value:"<code>enable_java_support</code>",id:"enable_java_support",level:4},{value:"<code>olap_table_sink_send_interval_microseconds</code>",id:"olap_table_sink_send_interval_microseconds",level:4},{value:"<code>olap_table_sink_send_interval_auto_partition_factor</code>",id:"olap_table_sink_send_interval_auto_partition_factor",level:4}],_={toc:u},c="wrapper";function m(e){let{components:t,...a}=e;return(0,i.kt)(c,(0,l.Z)({},_,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"be-configuration"},"BE Configuration"),(0,i.kt)("p",null,"This document mainly introduces the relevant configuration items of BE."),(0,i.kt)("p",null,"The BE configuration file ",(0,i.kt)("inlineCode",{parentName:"p"},"be.conf")," is usually stored in the ",(0,i.kt)("inlineCode",{parentName:"p"},"conf/")," directory of the BE deployment path. In version 0.14, another configuration file ",(0,i.kt)("inlineCode",{parentName:"p"},"be_custom.conf")," will be introduced. The configuration file is used to record the configuration items that are dynamically configured and persisted by the user during operation."),(0,i.kt)("p",null,"After the BE process is started, it will read the configuration items in ",(0,i.kt)("inlineCode",{parentName:"p"},"be.conf")," first, and then read the configuration items in ",(0,i.kt)("inlineCode",{parentName:"p"},"be_custom.conf"),". The configuration items in ",(0,i.kt)("inlineCode",{parentName:"p"},"be_custom.conf")," will overwrite the same configuration items in ",(0,i.kt)("inlineCode",{parentName:"p"},"be.conf"),"."),(0,i.kt)("p",null,"The location of the ",(0,i.kt)("inlineCode",{parentName:"p"},"be_custom.conf")," file can be configured in ",(0,i.kt)("inlineCode",{parentName:"p"},"be.conf")," through the ",(0,i.kt)("inlineCode",{parentName:"p"},"custom_config_dir")," configuration item."),(0,i.kt)("h2",{id:"view-configuration-items"},"View configuration items"),(0,i.kt)("p",null,"Users can view the current configuration items by visiting BE's web page:"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"http://be_host:be_webserver_port/varz")),(0,i.kt)("h2",{id:"set-configuration-items"},"Set configuration items"),(0,i.kt)("p",null,"There are two ways to configure BE configuration items:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Static configuration"),(0,i.kt)("p",{parentName:"li"},"Add and set configuration items in the ",(0,i.kt)("inlineCode",{parentName:"p"},"conf/be.conf")," file. The configuration items in ",(0,i.kt)("inlineCode",{parentName:"p"},"be.conf")," will be read when BE starts. Configuration items not in ",(0,i.kt)("inlineCode",{parentName:"p"},"be.conf")," will use default values.")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Dynamic configuration"),(0,i.kt)("p",{parentName:"li"},"After BE starts, the configuration items can be dynamically set with the following commands."),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre"},"curl -X POST http://{be_ip}:{be_http_port}/api/update_config?{key}={value}\n")),(0,i.kt)("p",{parentName:"li"},"In version 0.13 and before, the configuration items modified in this way will become invalid after the BE process restarts. In 0.14 and later versions, the modified configuration can be persisted through the following command. The modified configuration items are stored in the ",(0,i.kt)("inlineCode",{parentName:"p"},"be_custom.conf")," file."),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre"},"curl -X POST http://{be_ip}:{be_http_port}/api/update_config?{key}={value}\\&persist=true\n")))),(0,i.kt)("h2",{id:"examples"},"Examples"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Modify ",(0,i.kt)("inlineCode",{parentName:"p"},"max_base_compaction_threads")," statically"),(0,i.kt)("p",{parentName:"li"},"By adding in the ",(0,i.kt)("inlineCode",{parentName:"p"},"be.conf")," file:"),(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"max_base_compaction_threads=5")),(0,i.kt)("p",{parentName:"li"},"Then restart the BE process to take effect the configuration.")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Modify ",(0,i.kt)("inlineCode",{parentName:"p"},"streaming_load_max_mb")," dynamically"),(0,i.kt)("p",{parentName:"li"},"After BE starts, the configuration item ",(0,i.kt)("inlineCode",{parentName:"p"},"streaming_load_max_mb")," is dynamically set by the following command:"),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre"},"curl -X POST http://{be_ip}:{be_http_port}/api/update_config?streaming_load_max_mb=1024\n")),(0,i.kt)("p",{parentName:"li"},"The return value is as follows, indicating that the setting is successful."),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre"},'{\n    "status": "OK",\n    "msg": ""\n}\n')),(0,i.kt)("p",{parentName:"li"},"The configuration will become invalid after the BE restarts. If you want to persist the modified results, use the following command:"),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre"},"curl -X POST http://{be_ip}:{be_http_port}/api/update_config?streaming_load_max_mb=1024\\&persist=true\n")))),(0,i.kt)("h2",{id:"configurations"},"Configurations"),(0,i.kt)("h3",{id:"services"},"Services"),(0,i.kt)("h4",{id:"be_port"},(0,i.kt)("inlineCode",{parentName:"h4"},"be_port")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description:  The port of the thrift server on BE which used to receive requests from FE"),(0,i.kt)("li",{parentName:"ul"},"Default value: 9060")),(0,i.kt)("h4",{id:"heartbeat_service_port"},(0,i.kt)("inlineCode",{parentName:"h4"},"heartbeat_service_port")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Heartbeat service port (thrift) on BE, used to receive heartbeat from FE"),(0,i.kt)("li",{parentName:"ul"},"Default value: 9050")),(0,i.kt)("h4",{id:"webserver_port"},(0,i.kt)("inlineCode",{parentName:"h4"},"webserver_port")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Service port of http server on BE"),(0,i.kt)("li",{parentName:"ul"},"Default value: 8040")),(0,i.kt)("h4",{id:"brpc_port"},(0,i.kt)("inlineCode",{parentName:"h4"},"brpc_port")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The port of BRPC on BE, used for communication between BEs"),(0,i.kt)("li",{parentName:"ul"},"Default value: 8060")),(0,i.kt)("h4",{id:"arrow_flight_sql_port"},(0,i.kt)("inlineCode",{parentName:"h4"},"arrow_flight_sql_port")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The port of Arrow Flight SQL server on BE, used for communication between Arrow Flight Client and BE"),(0,i.kt)("li",{parentName:"ul"},"Default value: -1")),(0,i.kt)("h4",{id:"enable_https"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_https")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Whether https is supported. If so, configure ",(0,i.kt)("inlineCode",{parentName:"li"},"ssl_certificate_path")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"ssl_private_key_path")," in be.conf."),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"priority_networks"},(0,i.kt)("inlineCode",{parentName:"h4"},"priority_networks")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Declare a selection strategy for those servers with many IPs. Note that at most one ip should match this list. This is a semicolon-separated list in CIDR notation, such as 10.10.10.0/24. If there is no IP matching this rule, one will be randomly selected"),(0,i.kt)("li",{parentName:"ul"},"Default value: blank")),(0,i.kt)("h4",{id:"storage_root_path"},(0,i.kt)("inlineCode",{parentName:"h4"},"storage_root_path")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Type: string")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Description: data root path, separate by ';'.you can specify the storage medium of each root path, HDD or SSD. you can add capacity limit at the end of each root path, separate by ','.If the user does not use a mix of SSD and HDD disks, they do not need to configure the configuration methods in Example 1 and Example 2 below, but only need to specify the storage directory; they also do not need to modify the default storage media configuration of FE."),(0,i.kt)("p",{parentName:"li"},"eg.1: ",(0,i.kt)("inlineCode",{parentName:"p"},"storage_root_path=/home/disk1/doris.HDD;/home/disk2/doris.SSD;/home/disk2/doris")),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"1./home/disk1/doris.HDD, indicates that the storage medium is HDD;"),(0,i.kt)("li",{parentName:"ul"},"2./home/disk2/doris.SSD, indicates that the storage medium is SSD;"),(0,i.kt)("li",{parentName:"ul"},"3./home/disk2/doris, indicates that the storage medium is HDD by default")),(0,i.kt)("p",{parentName:"li"},"eg.2: ",(0,i.kt)("inlineCode",{parentName:"p"},"storage_root_path=/home/disk1/doris,medium:hdd;/home/disk2/doris,medium:ssd")),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"1./home/disk1/doris,medium:hdd\uff0cindicates that the storage medium is HDD;"),(0,i.kt)("li",{parentName:"ul"},"2./home/disk2/doris,medium:ssd\uff0cindicates that the storage medium is SSD;"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Default value: ${DORIS_HOME}/storage"))),(0,i.kt)("h4",{id:"heartbeat_service_thread_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"heartbeat_service_thread_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of threads that execute the heartbeat service on BE. the default is 1, it is not recommended to modify"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1")),(0,i.kt)("h4",{id:"ignore_broken_disk"},(0,i.kt)("inlineCode",{parentName:"h4"},"ignore_broken_disk")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Type: bool")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Description: When BE starts, check ",(0,i.kt)("inlineCode",{parentName:"p"},"storage_root_path")," All paths under configuration."),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ignore_broken_disk=true"))),(0,i.kt)("p",{parentName:"li"},"If the path does not exist or the file (bad disk) cannot be read or written under the path, the path will be ignored. If there are other available paths, the startup will not be interrupted."),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ignore_broken_disk=false"))),(0,i.kt)("p",{parentName:"li"},"If the path does not exist or the file (bad disk) cannot be read or written under the path, the system will abort the startup failure and exit.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Default value: false"))),(0,i.kt)("h4",{id:"mem_limit"},(0,i.kt)("inlineCode",{parentName:"h4"},"mem_limit")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: string"),(0,i.kt)("li",{parentName:"ul"},"Description: Limit the percentage of the server's maximum memory used by the BE process. It is used to prevent BE memory from occupying too the machine's memory. This parameter must be greater than 0. When the percentage is greater than 100%, the value will default to 100%."),(0,i.kt)("li",{parentName:"ul"},"Default value: 90%")),(0,i.kt)("h4",{id:"cluster_id"},(0,i.kt)("inlineCode",{parentName:"h4"},"cluster_id")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Configure the cluster id to which the BE belongs.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"This value is usually delivered by the FE to the BE by the heartbeat, no need to configure. When it is confirmed that a BE belongs to a certain Drois cluster, it can be configured. The cluster_id file under the data directory needs to be modified to make sure same as this parament."))),(0,i.kt)("li",{parentName:"ul"},"Default value: -1")),(0,i.kt)("h4",{id:"custom_config_dir"},(0,i.kt)("inlineCode",{parentName:"h4"},"custom_config_dir")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Configure the location of the ",(0,i.kt)("inlineCode",{parentName:"li"},"be_custom.conf")," file. The default is in the ",(0,i.kt)("inlineCode",{parentName:"li"},"conf/")," directory.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"In some deployment environments, the ",(0,i.kt)("inlineCode",{parentName:"li"},"conf/")," directory may be overwritten due to system upgrades. This will cause the user modified configuration items to be overwritten. At this time, we can store ",(0,i.kt)("inlineCode",{parentName:"li"},"be_custom.conf")," in another specified directory to prevent the configuration file from being overwritten."))),(0,i.kt)("li",{parentName:"ul"},"Default value: blank")),(0,i.kt)("h4",{id:"trash_file_expire_time_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"trash_file_expire_time_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The interval for cleaning the recycle bin is 72 hours. When the disk space is insufficient, the file retention period under trash may not comply with this parameter"),(0,i.kt)("li",{parentName:"ul"},"Default value: 259200")),(0,i.kt)("h4",{id:"es_http_timeout_ms"},(0,i.kt)("inlineCode",{parentName:"h4"},"es_http_timeout_ms")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The timeout period for connecting to ES via http."),(0,i.kt)("li",{parentName:"ul"},"Default value: 5000 (ms)")),(0,i.kt)("h4",{id:"es_scroll_keepalive"},(0,i.kt)("inlineCode",{parentName:"h4"},"es_scroll_keepalive")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: es scroll Keeplive hold time"),(0,i.kt)("li",{parentName:"ul"},"Default value: 5 (m)")),(0,i.kt)("h4",{id:"external_table_connect_timeout_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"external_table_connect_timeout_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The timeout when establishing connection with external table such as ODBC table."),(0,i.kt)("li",{parentName:"ul"},"Default value: 5 seconds")),(0,i.kt)("h4",{id:"status_report_interval"},(0,i.kt)("inlineCode",{parentName:"h4"},"status_report_interval")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Interval between profile reports"),(0,i.kt)("li",{parentName:"ul"},"Default value: 5 seconds")),(0,i.kt)("h4",{id:"brpc_max_body_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"brpc_max_body_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Description: This configuration is mainly used to modify the parameter ",(0,i.kt)("inlineCode",{parentName:"p"},"max_body_size")," of brpc."),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Sometimes the query fails and an error message of ",(0,i.kt)("inlineCode",{parentName:"li"},"body_size is too large"),' will appear in the BE log. This may happen when the SQL mode is "multi distinct + no group by + more than 1T of data".This error indicates that the packet size of brpc exceeds the configured value. At this time, you can avoid this error by increasing the configuration.')))),(0,i.kt)("h4",{id:"brpc_socket_max_unwritten_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"brpc_socket_max_unwritten_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: This configuration is mainly used to modify the parameter ",(0,i.kt)("inlineCode",{parentName:"li"},"socket_max_unwritten_bytes")," of brpc.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Sometimes the query fails and an error message of ",(0,i.kt)("inlineCode",{parentName:"li"},"The server is overcrowded")," will appear in the BE log. This means there are too many messages to buffer at the sender side, which may happen when the SQL needs to send large bitmap value. You can avoid this error by increasing the configuration.")))),(0,i.kt)("h4",{id:"transfer_large_data_by_brpc"},(0,i.kt)("inlineCode",{parentName:"h4"},"transfer_large_data_by_brpc")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: This configuration is used to control whether to serialize the protoBuf request and embed the Tuple/Block data into the controller attachment and send it through http brpc when the length of the Tuple/Block data is greater than 1.8G. To avoid errors when the length of the protoBuf request exceeds 2G: Bad request, error_text=","[E1003]","Fail to compress request. In the past version, after putting Tuple/Block data in the attachment, it was sent through the default baidu_std brpc, but when the attachment exceeds 2G, it will be truncated. There is no 2G limit for sending through http brpc."),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"brpc_num_threads"},(0,i.kt)("inlineCode",{parentName:"h4"},"brpc_num_threads")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: This configuration is mainly used to modify the number of bthreads for brpc. The default value is set to -1, which means the number of bthreads is #cpu-cores.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"User can set this configuration to a larger value to get better QPS performance. For more information, please refer to ",(0,i.kt)("inlineCode",{parentName:"li"},"https://github.com/apache/incubator-brpc/blob/master/docs/cn/benchmark.md")))),(0,i.kt)("li",{parentName:"ul"},"Default value: -1")),(0,i.kt)("h4",{id:"thrift_rpc_timeout_ms"},(0,i.kt)("inlineCode",{parentName:"h4"},"thrift_rpc_timeout_ms")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: thrift default timeout time"),(0,i.kt)("li",{parentName:"ul"},"Default value: 60000")),(0,i.kt)("h4",{id:"thrift_client_retry_interval_ms"},(0,i.kt)("inlineCode",{parentName:"h4"},"thrift_client_retry_interval_ms")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: Used to set retry interval for thrift client in be to avoid avalanche disaster in fe thrift server, the unit is ms."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1000")),(0,i.kt)("h4",{id:"thrift_connect_timeout_seconds"},(0,i.kt)("inlineCode",{parentName:"h4"},"thrift_connect_timeout_seconds")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The default thrift client connection timeout time"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3 (m)")),(0,i.kt)("h4",{id:"thrift_server_type_of_fe"},(0,i.kt)("inlineCode",{parentName:"h4"},"thrift_server_type_of_fe")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Type: string")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Description:This configuration indicates the service model used by FE's Thrift service. The type is string and is case-insensitive. This parameter needs to be consistent with the setting of fe's thrift_server_type parameter. Currently there are two values for this parameter, ",(0,i.kt)("inlineCode",{parentName:"p"},"THREADED")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"THREAD_POOL"),"."),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"If the parameter is ",(0,i.kt)("inlineCode",{parentName:"p"},"THREADED"),", the model is a non-blocking I/O model.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"If the parameter is ",(0,i.kt)("inlineCode",{parentName:"p"},"THREAD_POOL"),", the model is a blocking I/O model."))))),(0,i.kt)("h4",{id:"txn_commit_rpc_timeout_ms"},(0,i.kt)("inlineCode",{parentName:"h4"},"txn_commit_rpc_timeout_ms")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description:txn submit rpc timeout"),(0,i.kt)("li",{parentName:"ul"},"Default value: 60,000 (ms)")),(0,i.kt)("h4",{id:"txn_map_shard_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"txn_map_shard_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: txn_map_lock fragment size, the value is 2^n, n=0,1,2,3,4. This is an enhancement to improve the performance of managing txn"),(0,i.kt)("li",{parentName:"ul"},"Default value: 128")),(0,i.kt)("h4",{id:"txn_shard_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"txn_shard_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: txn_lock shard size, the value is 2^n, n=0,1,2,3,4, this is an enhancement function that can improve the performance of submitting and publishing txn"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1024")),(0,i.kt)("h4",{id:"unused_rowset_monitor_interval"},(0,i.kt)("inlineCode",{parentName:"h4"},"unused_rowset_monitor_interval")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Time interval for clearing expired Rowset"),(0,i.kt)("li",{parentName:"ul"},"Default value: 30 (s)")),(0,i.kt)("h4",{id:"max_client_cache_size_per_host"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_client_cache_size_per_host")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The maximum number of client caches per host. There are multiple client caches in BE, but currently we use the same cache size configuration. If necessary, use different configurations to set up different client-side caches"),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"string_type_length_soft_limit_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"string_type_length_soft_limit_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The soft limit of the maximum length of String type."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1,048,576")),(0,i.kt)("h4",{id:"big_column_size_buffer"},(0,i.kt)("inlineCode",{parentName:"h4"},"big_column_size_buffer")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: When using the odbc external table, if a column type of the odbc source table is HLL, CHAR or VARCHAR, and the length of the column value exceeds this value, the query will report an error 'column value length longer than buffer length'. You can increase this value"),(0,i.kt)("li",{parentName:"ul"},"Default value: 65535")),(0,i.kt)("h4",{id:"small_column_size_buffer"},(0,i.kt)("inlineCode",{parentName:"h4"},"small_column_size_buffer")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description:  When using the odbc external table, if a column type of the odbc source table is not HLL, CHAR or VARCHAR, and the length of the column value exceeds this value, the query will report an error 'column value length longer than buffer length'. You can increase this value"),(0,i.kt)("li",{parentName:"ul"},"Default value: 100")),(0,i.kt)("h4",{id:"jsonb_type_length_soft_limit_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"jsonb_type_length_soft_limit_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The soft limit of the maximum length of JSONB type."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1,048,576")),(0,i.kt)("h3",{id:"query"},"Query"),(0,i.kt)("h4",{id:"fragment_pool_queue_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"fragment_pool_queue_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The upper limit of query requests that can be processed on a single node"),(0,i.kt)("li",{parentName:"ul"},"Default value: 4096")),(0,i.kt)("h4",{id:"fragment_pool_thread_num_min"},(0,i.kt)("inlineCode",{parentName:"h4"},"fragment_pool_thread_num_min")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Query the number of threads. By default, the minimum number of threads is 64."),(0,i.kt)("li",{parentName:"ul"},"Default value: 64")),(0,i.kt)("h4",{id:"fragment_pool_thread_num_max"},(0,i.kt)("inlineCode",{parentName:"h4"},"fragment_pool_thread_num_max")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Follow up query requests create threads dynamically, with a maximum of 512 threads created."),(0,i.kt)("li",{parentName:"ul"},"Default value: 2048")),(0,i.kt)("h4",{id:"doris_max_pushdown_conjuncts_return_rate"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_max_pushdown_conjuncts_return_rate")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description:  When BE performs HashJoin, it will adopt a dynamic partitioning method to push the join condition to OlapScanner. When the data scanned by OlapScanner is larger than 32768 rows, BE will check the filter condition. If the filter rate of the filter condition is lower than this configuration, Doris will stop using the dynamic partition clipping condition for data filtering."),(0,i.kt)("li",{parentName:"ul"},"Default value: 90")),(0,i.kt)("h4",{id:"doris_max_scan_key_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_max_scan_key_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int"),(0,i.kt)("li",{parentName:"ul"},"Description: Used to limit the maximum number of scan keys that a scan node can split in a query request. When a conditional query request reaches the scan node, the scan node will try to split the conditions related to the key column in the query condition into multiple scan key ranges. After that, these scan key ranges will be assigned to multiple scanner threads for data scanning. A larger value usually means that more scanner threads can be used to increase the parallelism of the scanning operation. However, in high concurrency scenarios, too many threads may bring greater scheduling overhead and system load, and will slow down the query response speed. An empirical value is 50. This configuration can be configured separately at the session level. For details, please refer to the description of ",(0,i.kt)("inlineCode",{parentName:"li"},"max_scan_key_num")," in ",(0,i.kt)("a",{parentName:"li",href:"../../advanced/variables.md"},"Variables"),".",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"When the concurrency cannot be improved in high concurrency scenarios, try to reduce this value and observe the impact."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 48")),(0,i.kt)("h4",{id:"doris_scan_range_row_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_scan_range_row_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: When BE performs data scanning, it will split the same scanning range into multiple ScanRanges. This parameter represents the scan data range of each ScanRange. This parameter can limit the time that a single OlapScanner occupies the io thread."),(0,i.kt)("li",{parentName:"ul"},"Default value: 524288")),(0,i.kt)("h4",{id:"doris_scanner_queue_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_scanner_queue_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The length of the RowBatch buffer queue between TransferThread and OlapScanner. When Doris performs data scanning, it is performed asynchronously. The Rowbatch scanned by OlapScanner will be placed in the scanner buffer queue, waiting for the upper TransferThread to take it away."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1024")),(0,i.kt)("h4",{id:"doris_scanner_row_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_scanner_row_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The maximum number of data rows returned by each scanning thread in a single execution"),(0,i.kt)("li",{parentName:"ul"},"Default value: 16384")),(0,i.kt)("h4",{id:"doris_scanner_row_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_scanner_row_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: single read execute fragment row bytes",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Note: If there are too many columns in the table, you can adjust this config if you encounter a ",(0,i.kt)("inlineCode",{parentName:"li"},"select *")," stuck"))),(0,i.kt)("li",{parentName:"ul"},"Default value: 10485760")),(0,i.kt)("h4",{id:"doris_scanner_thread_pool_queue_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_scanner_thread_pool_queue_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The queue length of the Scanner thread pool. In Doris' scanning tasks, each Scanner will be submitted as a thread task to the thread pool waiting to be scheduled, and after the number of submitted tasks exceeds the length of the thread pool queue, subsequent submitted tasks will be blocked until there is a empty slot in the queue."),(0,i.kt)("li",{parentName:"ul"},"Default value: 102400")),(0,i.kt)("h4",{id:"doris_scanner_thread_pool_thread_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_scanner_thread_pool_thread_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of threads in the Scanner thread pool. In Doris' scanning tasks, each Scanner will be submitted as a thread task to the thread pool to be scheduled. This parameter determines the size of the Scanner thread pool."),(0,i.kt)("li",{parentName:"ul"},"Default value: 48")),(0,i.kt)("h4",{id:"doris_max_remote_scanner_thread_pool_thread_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_max_remote_scanner_thread_pool_thread_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Max thread number of Remote scanner thread pool. Remote scanner thread pool is used for scan task of all external data sources."),(0,i.kt)("li",{parentName:"ul"},"Default: 512")),(0,i.kt)("h4",{id:"enable_prefetch"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_prefetch")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: When using PartitionedHashTable for aggregation and join calculations, whether to perform HashBuket prefetch. Recommended to be set to true"),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"enable_quadratic_probing"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_quadratic_probing")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: When a Hash conflict occurs when using PartitionedHashTable, enable to use the square detection method to resolve the Hash conflict. If the value is false, linear detection is used to resolve the Hash conflict. For the square detection method, please refer to: ",(0,i.kt)("a",{parentName:"li",href:"https://en.wikipedia.org/wiki/Quadratic_probing"},"quadratic_probing")),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"exchg_node_buffer_size_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"exchg_node_buffer_size_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The size of the Buffer queue of the ExchangeNode node, in bytes. After the amount of data sent from the Sender side is larger than the Buffer size of ExchangeNode, subsequent data sent will block until the Buffer frees up space for writing."),(0,i.kt)("li",{parentName:"ul"},"Default value: 10485760")),(0,i.kt)("h4",{id:"max_pushdown_conditions_per_column"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_pushdown_conditions_per_column")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Type: int")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Description: Used to limit the maximum number of conditions that can be pushed down to the storage engine for a single column in a query request. During the execution of the query plan, the filter conditions on some columns can be pushed down to the storage engine, so that the index information in the storage engine can be used for data filtering, reducing the amount of data that needs to be scanned by the query. Such as equivalent conditions, conditions in IN predicates, etc. In most cases, this parameter only affects queries containing IN predicates. Such as ",(0,i.kt)("inlineCode",{parentName:"p"},"WHERE colA IN (1,2,3,4, ...)"),". A larger number means that more conditions in the IN predicate can be pushed to the storage engine, but too many conditions may cause an increase in random reads, and in some cases may reduce query efficiency. This configuration can be individually configured for session level. For details, please refer to the description of ",(0,i.kt)("inlineCode",{parentName:"p"},"max_pushdown_conditions_per_column")," in ",(0,i.kt)("a",{parentName:"p",href:"../../advanced/variables.md"},"Variables"),".")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Default value: 1024")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Example"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"The table structure is' id INT, col2 INT, col3 varchar (32),... '."),(0,i.kt)("li",{parentName:"ul"},"The query request is'WHERE id IN (v1, v2, v3, ...)")))),(0,i.kt)("h4",{id:"max_send_batch_parallelism_per_job"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_send_batch_parallelism_per_job")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int"),(0,i.kt)("li",{parentName:"ul"},"Description: Max send batch parallelism for OlapTableSink. The value set by the user for ",(0,i.kt)("inlineCode",{parentName:"li"},"send_batch_parallelism")," is not allowed to exceed ",(0,i.kt)("inlineCode",{parentName:"li"},"max_send_batch_parallelism_per_job"),", if exceed, the value of ",(0,i.kt)("inlineCode",{parentName:"li"},"send_batch_parallelism")," would be ",(0,i.kt)("inlineCode",{parentName:"li"},"max_send_batch_parallelism_per_job"),"."),(0,i.kt)("li",{parentName:"ul"},"Default value: 5")),(0,i.kt)("h4",{id:"doris_scan_range_max_mb"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_scan_range_max_mb")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The maximum amount of data read by each OlapScanner."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1024")),(0,i.kt)("h3",{id:"compaction"},"compaction"),(0,i.kt)("h4",{id:"disable_auto_compaction"},(0,i.kt)("inlineCode",{parentName:"h4"},"disable_auto_compaction")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Whether disable automatic compaction task",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Generally it needs to be turned off. When you want to manually operate the compaction task in the debugging or test environment, you can turn on the configuration."))),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"enable_vertical_compaction"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_vertical_compaction")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Whether to enable vertical compaction"),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"vertical_compaction_num_columns_per_group"},(0,i.kt)("inlineCode",{parentName:"h4"},"vertical_compaction_num_columns_per_group")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: In vertical compaction, column number for every group"),(0,i.kt)("li",{parentName:"ul"},"Default value: 5")),(0,i.kt)("h4",{id:"vertical_compaction_max_row_source_memory_mb"},(0,i.kt)("inlineCode",{parentName:"h4"},"vertical_compaction_max_row_source_memory_mb")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: In vertical compaction, max memory usage for row_source_buffer,The unit is MB."),(0,i.kt)("li",{parentName:"ul"},"Default value: 200")),(0,i.kt)("h4",{id:"vertical_compaction_max_segment_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"vertical_compaction_max_segment_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: In vertical compaction, max dest segment file size, The unit is m bytes."),(0,i.kt)("li",{parentName:"ul"},"Default value: 268435456")),(0,i.kt)("h4",{id:"enable_ordered_data_compaction"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_ordered_data_compaction")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Whether to enable ordered data compaction"),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"ordered_data_compaction_min_segment_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"ordered_data_compaction_min_segment_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: In ordered data compaction, min segment size for input rowset, The unit is m bytes."),(0,i.kt)("li",{parentName:"ul"},"Default value: 10485760")),(0,i.kt)("h4",{id:"max_base_compaction_threads"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_base_compaction_threads")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The maximum of thread number in base compaction thread pool."),(0,i.kt)("li",{parentName:"ul"},"Default value: 4")),(0,i.kt)("h4",{id:"generate_compaction_tasks_interval_ms"},(0,i.kt)("inlineCode",{parentName:"h4"},"generate_compaction_tasks_interval_ms")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Minimal interval (ms) to generate compaction tasks"),(0,i.kt)("li",{parentName:"ul"},"Default value: 10 (ms)")),(0,i.kt)("h4",{id:"base_compaction_min_rowset_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"base_compaction_min_rowset_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: One of the triggering conditions of BaseCompaction: The limit of the number of Cumulative files to be reached. After reaching this limit, BaseCompaction will be triggered"),(0,i.kt)("li",{parentName:"ul"},"Default value: 5")),(0,i.kt)("h4",{id:"base_compaction_min_data_ratio"},(0,i.kt)("inlineCode",{parentName:"h4"},"base_compaction_min_data_ratio")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: One of the trigger conditions of BaseCompaction: Cumulative file size reaches the proportion of Base file"),(0,i.kt)("li",{parentName:"ul"},"Default value: 0.3 (30%)")),(0,i.kt)("h4",{id:"total_permits_for_compaction_score"},(0,i.kt)("inlineCode",{parentName:"h4"},"total_permits_for_compaction_score")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},'Description: The upper limit of "permits" held by all compaction tasks. This config can be set to limit memory consumption for compaction.'),(0,i.kt)("li",{parentName:"ul"},"Default value: 10000"),(0,i.kt)("li",{parentName:"ul"},"Dynamically modifiable: Yes")),(0,i.kt)("h4",{id:"compaction_promotion_size_mbytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"compaction_promotion_size_mbytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: The total disk size of the output rowset of cumulative compaction exceeds this configuration size, and the rowset will be used for base compaction. The unit is m bytes.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Generally, if the configuration is less than 2G, in order to prevent the cumulative compression time from being too long, resulting in the version backlog."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 1024")),(0,i.kt)("h4",{id:"compaction_promotion_ratio"},(0,i.kt)("inlineCode",{parentName:"h4"},"compaction_promotion_ratio")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: double"),(0,i.kt)("li",{parentName:"ul"},"Description: When the total disk size of the cumulative compaction output rowset exceeds the configuration ratio of the base version rowset, the rowset will be used for base compaction.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Generally, it is recommended that the configuration should not be higher than 0.1 and lower than 0.02."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 0.05")),(0,i.kt)("h4",{id:"compaction_promotion_min_size_mbytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"compaction_promotion_min_size_mbytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: If the total disk size of the output rowset of the cumulative compaction is lower than this configuration size, the rowset will not undergo base compaction and is still in the cumulative compaction process. The unit is m bytes.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Generally, the configuration is within 512m. If the configuration is too large, the size of the early base version is too small, and base compaction has not been performed."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 64")),(0,i.kt)("h4",{id:"compaction_min_size_mbytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"compaction_min_size_mbytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: When the cumulative compaction is merged, the selected rowsets to be merged have a larger disk size than this configuration, then they are divided and merged according to the level policy. When it is smaller than this configuration, merge directly. The unit is m bytes.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Generally, the configuration is within 128m. Over configuration will cause more cumulative compaction write amplification."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 64")),(0,i.kt)("h4",{id:"default_rowset_type"},(0,i.kt)("inlineCode",{parentName:"h4"},"default_rowset_type")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: string"),(0,i.kt)("li",{parentName:"ul"},'Description: Identifies the storage format selected by BE by default. The configurable parameters are: "',(0,i.kt)("strong",{parentName:"li"},"ALPHA"),'", "',(0,i.kt)("strong",{parentName:"li"},"BETA"),'". Mainly play the following two roles',(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"When the storage_format of the table is set to Default, select the storage format of BE through this configuration."),(0,i.kt)("li",{parentName:"ul"},"Select the storage format of when BE performing Compaction"))),(0,i.kt)("li",{parentName:"ul"},"Default value: BETA")),(0,i.kt)("h4",{id:"cumulative_compaction_min_deltas"},(0,i.kt)("inlineCode",{parentName:"h4"},"cumulative_compaction_min_deltas")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Cumulative compaction strategy: the minimum number of incremental files"),(0,i.kt)("li",{parentName:"ul"},"Default value: 5")),(0,i.kt)("h4",{id:"cumulative_compaction_max_deltas"},(0,i.kt)("inlineCode",{parentName:"h4"},"cumulative_compaction_max_deltas")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Cumulative compaction strategy: the maximum number of incremental files"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1000")),(0,i.kt)("h4",{id:"base_compaction_trace_threshold"},(0,i.kt)("inlineCode",{parentName:"h4"},"base_compaction_trace_threshold")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Threshold to logging base compaction's trace information, in seconds"),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("p",null,"Base compaction is a long time cost background task, this configuration is the threshold to logging trace information. Trace information in log file looks like:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"W0610 11:26:33.804431 56452 storage_engine.cpp:552] execute base compaction cost 0.00319222\nBaseCompaction:546859:\n  - filtered_rows: 0\n   - input_row_num: 10\n   - input_rowsets_count: 10\n   - input_rowsets_data_size: 2.17 KB\n   - input_segments_num: 10\n   - merge_rowsets_latency: 100000.510ms\n   - merged_rows: 0\n   - output_row_num: 10\n   - output_rowset_data_size: 224.00 B\n   - output_segments_num: 1\n0610 11:23:03.727535 (+     0us) storage_engine.cpp:554] start to perform base compaction\n0610 11:23:03.728961 (+  1426us) storage_engine.cpp:560] found best tablet 546859\n0610 11:23:03.728963 (+     2us) base_compaction.cpp:40] got base compaction lock\n0610 11:23:03.729029 (+    66us) base_compaction.cpp:44] rowsets picked\n0610 11:24:51.784439 (+108055410us) compaction.cpp:46] got concurrency lock and start to do compaction\n0610 11:24:51.784818 (+   379us) compaction.cpp:74] prepare finished\n0610 11:26:33.359265 (+101574447us) compaction.cpp:87] merge rowsets finished\n0610 11:26:33.484481 (+125216us) compaction.cpp:102] output rowset built\n0610 11:26:33.484482 (+     1us) compaction.cpp:106] check correctness finished\n0610 11:26:33.513197 (+ 28715us) compaction.cpp:110] modify rowsets finished\n0610 11:26:33.513300 (+   103us) base_compaction.cpp:49] compaction finished\n0610 11:26:33.513441 (+   141us) base_compaction.cpp:56] unused rowsets have been moved to GC queue\n")),(0,i.kt)("h4",{id:"cumulative_compaction_trace_threshold"},(0,i.kt)("inlineCode",{parentName:"h4"},"cumulative_compaction_trace_threshold")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Threshold to logging cumulative compaction's trace information, in seconds",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Similar to ",(0,i.kt)("inlineCode",{parentName:"li"},"base_compaction_trace_threshold"),"."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 2")),(0,i.kt)("h4",{id:"compaction_task_num_per_disk"},(0,i.kt)("inlineCode",{parentName:"h4"},"compaction_task_num_per_disk")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of compaction tasks which execute in parallel for a disk(HDD)."),(0,i.kt)("li",{parentName:"ul"},"Default value: 4")),(0,i.kt)("h4",{id:"compaction_task_num_per_fast_disk"},(0,i.kt)("inlineCode",{parentName:"h4"},"compaction_task_num_per_fast_disk")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of compaction tasks which execute in parallel for a fast disk(SSD)."),(0,i.kt)("li",{parentName:"ul"},"Default value: 8")),(0,i.kt)("h4",{id:"cumulative_compaction_rounds_for_each_base_compaction_round"},(0,i.kt)("inlineCode",{parentName:"h4"},"cumulative_compaction_rounds_for_each_base_compaction_round")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: How many rounds of cumulative compaction for each round of base compaction when compaction tasks generation."),(0,i.kt)("li",{parentName:"ul"},"Default value: 9")),(0,i.kt)("h4",{id:"cumulative_compaction_policy"},(0,i.kt)("inlineCode",{parentName:"h4"},"cumulative_compaction_policy")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: string"),(0,i.kt)("li",{parentName:"ul"},"Description: Configure the merge strategy in the cumulative compression phase. Currently, two merge strategies are implemented, num_based and size_based",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},'For details, "ordinary" is the initial version of the cumulative compression consolidation policy. After a cumulative compression, the base compression process is directly performed. size_The general policy is the optimized version of the ordinary policy. Version merging can only be performed when the disk volume of the rowset is the same order of magnitude. After merging, qualified rowsets are promoted to the base compaction stage. In the case of a large number of small batch imports, it can reduce the write magnification of base compact, balance the read magnification and space magnification, and reduce the data of file versions.'))),(0,i.kt)("li",{parentName:"ul"},"Default value: size_based")),(0,i.kt)("h4",{id:"max_cumu_compaction_threads"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_cumu_compaction_threads")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The maximum of thread number in cumulative compaction thread pool."),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"enable_segcompaction"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_segcompaction")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Enable to use segment compaction during loading to avoid -238 error"),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"segcompaction_batch_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"segcompaction_batch_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Max number of segments allowed in a single segcompaction task."),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"segcompaction_candidate_max_rows"},(0,i.kt)("inlineCode",{parentName:"h4"},"segcompaction_candidate_max_rows")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Max row count allowed in a single source segment, bigger segments will be skipped."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1048576")),(0,i.kt)("h4",{id:"segcompaction_candidate_max_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"segcompaction_candidate_max_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: Max file size allowed in a single source segment, bigger segments will be skipped."),(0,i.kt)("li",{parentName:"ul"},"Default value: 104857600")),(0,i.kt)("h4",{id:"segcompaction_task_max_rows"},(0,i.kt)("inlineCode",{parentName:"h4"},"segcompaction_task_max_rows")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Max total row count allowed in a single segcompaction task."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1572864")),(0,i.kt)("h4",{id:"segcompaction_task_max_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"segcompaction_task_max_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: Max total file size allowed in a single segcompaction task."),(0,i.kt)("li",{parentName:"ul"},"Default value: 157286400")),(0,i.kt)("h4",{id:"segcompaction_num_threads"},(0,i.kt)("inlineCode",{parentName:"h4"},"segcompaction_num_threads")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Global segcompaction thread pool size."),(0,i.kt)("li",{parentName:"ul"},"Default value: 5")),(0,i.kt)("h4",{id:"disable_compaction_trace_log"},(0,i.kt)("inlineCode",{parentName:"h4"},"disable_compaction_trace_log")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: disable the trace log of compaction",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"If set to true, the ",(0,i.kt)("inlineCode",{parentName:"li"},"cumulative_compaction_trace_threshold")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"base_compaction_trace_threshold")," won't work and log is disabled."))),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"pick_rowset_to_compact_interval_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"pick_rowset_to_compact_interval_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: select the time interval in seconds for rowset to be compacted."),(0,i.kt)("li",{parentName:"ul"},"Default value: 86400")),(0,i.kt)("h4",{id:"max_single_replica_compaction_threads"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_single_replica_compaction_threads")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The maximum of thread number in single replica compaction thread pool."),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"update_replica_infos_interval_seconds"},(0,i.kt)("inlineCode",{parentName:"h4"},"update_replica_infos_interval_seconds")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Minimal interval (s) to update peer replica infos"),(0,i.kt)("li",{parentName:"ul"},"Default value: 60 (s)")),(0,i.kt)("h3",{id:"load"},"Load"),(0,i.kt)("h4",{id:"enable_stream_load_record"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_stream_load_record")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description:Whether to enable stream load record function, the default is false."),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"load_data_reserve_hours"},(0,i.kt)("inlineCode",{parentName:"h4"},"load_data_reserve_hours")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Used for mini load. The mini load data file will be deleted after this time"),(0,i.kt)("li",{parentName:"ul"},"Default value: 4 (h)")),(0,i.kt)("h4",{id:"push_worker_count_high_priority"},(0,i.kt)("inlineCode",{parentName:"h4"},"push_worker_count_high_priority")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Import the number of threads for processing HIGH priority tasks"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h4",{id:"push_worker_count_normal_priority"},(0,i.kt)("inlineCode",{parentName:"h4"},"push_worker_count_normal_priority")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Import the number of threads for processing NORMAL priority tasks"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h4",{id:"enable_single_replica_load"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_single_replica_load")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Whether to enable the single-copy data import function"),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"load_error_log_reserve_hours"},(0,i.kt)("inlineCode",{parentName:"h4"},"load_error_log_reserve_hours")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The load error log will be deleted after this time"),(0,i.kt)("li",{parentName:"ul"},"Default value: 48 (h)")),(0,i.kt)("h4",{id:"load_process_max_memory_limit_percent"},(0,i.kt)("inlineCode",{parentName:"h4"},"load_process_max_memory_limit_percent")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The percentage of the upper memory limit occupied by all imported threads on a single node, the default is 50%",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Set these default values very large, because we don't want to affect load performance when users upgrade Doris. If necessary, the user should set these configurations correctly"))),(0,i.kt)("li",{parentName:"ul"},"Default value: 50 (%)")),(0,i.kt)("h4",{id:"load_process_soft_mem_limit_percent"},(0,i.kt)("inlineCode",{parentName:"h4"},"load_process_soft_mem_limit_percent")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The soft limit refers to the proportion of the load memory limit of a single node. For example, the load memory limit for all load tasks is 20GB, and the soft limit defaults to 50% of this value, that is, 10GB. When the load memory usage exceeds the soft limit, the job with the largest memory consuption will be selected to be flushed to release the memory space, the default is 50%"),(0,i.kt)("li",{parentName:"ul"},"Default value: 50 (%)")),(0,i.kt)("h4",{id:"routine_load_thread_pool_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"routine_load_thread_pool_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The thread pool size of the routine load task. This should be greater than the FE configuration'max_concurrent_task_num_per_be'"),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"slave_replica_writer_rpc_timeout_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"slave_replica_writer_rpc_timeout_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: This configuration is mainly used to modify timeout of brpc between master replica and slave replica, used for single replica load."),(0,i.kt)("li",{parentName:"ul"},"Default value: 60")),(0,i.kt)("h4",{id:"max_segment_num_per_rowset"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_segment_num_per_rowset")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Used to limit the number of segments in the newly generated rowset when importing. If the threshold is exceeded, the import will fail with error -238. Too many segments will cause compaction to take up a lot of memory and cause OOM errors."),(0,i.kt)("li",{parentName:"ul"},"Default value: 200")),(0,i.kt)("h4",{id:"high_priority_flush_thread_num_per_store"},(0,i.kt)("inlineCode",{parentName:"h4"},"high_priority_flush_thread_num_per_store")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of flush threads per store path allocated for the high priority import task."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1")),(0,i.kt)("h4",{id:"routine_load_consumer_pool_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"routine_load_consumer_pool_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of caches for the data consumer used by the routine load."),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"multi_table_batch_plan_threshold"},(0,i.kt)("inlineCode",{parentName:"h4"},"multi_table_batch_plan_threshold")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: For single-stream-multi-table load. When receive a batch of messages from kafka, if the size of batch is more than this threshold, we will request plans for all related tables."),(0,i.kt)("li",{parentName:"ul"},"Default value: 200")),(0,i.kt)("h4",{id:"single_replica_load_download_num_workers"},(0,i.kt)("inlineCode",{parentName:"h4"},"single_replica_load_download_num_workers")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description:This configuration is mainly used to modify the number of http worker threads for segment download, used for single replica load. When the load concurrency increases, you can adjust this parameter to ensure that the Slave replica synchronizes data files from the Master replica timely. If needed, ",(0,i.kt)("inlineCode",{parentName:"li"},"webserver_num_workers")," should also be increased for better IO performance."),(0,i.kt)("li",{parentName:"ul"},"Default value: 64")),(0,i.kt)("h4",{id:"load_task_high_priority_threshold_second"},(0,i.kt)("inlineCode",{parentName:"h4"},"load_task_high_priority_threshold_second")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: When the timeout of an import task is less than this threshold, Doris will consider it to be a high priority task. High priority tasks use a separate pool of flush threads."),(0,i.kt)("li",{parentName:"ul"},"Default: 120")),(0,i.kt)("h4",{id:"min_load_rpc_timeout_ms"},(0,i.kt)("inlineCode",{parentName:"h4"},"min_load_rpc_timeout_ms")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The minimum timeout for each rpc in the load job."),(0,i.kt)("li",{parentName:"ul"},"Default: 20")),(0,i.kt)("h4",{id:"kafka_api_version_request"},(0,i.kt)("inlineCode",{parentName:"h4"},"kafka_api_version_request")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: If the dependent Kafka version is lower than 0.10.0.0, this value should be set to false."),(0,i.kt)("li",{parentName:"ul"},"Default: true")),(0,i.kt)("h4",{id:"kafka_broker_version_fallback"},(0,i.kt)("inlineCode",{parentName:"h4"},"kafka_broker_version_fallback")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: If the dependent Kafka version is lower than 0.10.0.0, the value set by the fallback version kafka_broker_version_fallback will be used if the value of kafka_api_version_request is set to false, and the valid values are: 0.9.0.x, 0.8.x.y."),(0,i.kt)("li",{parentName:"ul"},"Default: 0.10.0")),(0,i.kt)("h4",{id:"max_consumer_num_per_group"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_consumer_num_per_group")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The maximum number of consumers in a data consumer group, used for routine load"),(0,i.kt)("li",{parentName:"ul"},"Default: 3")),(0,i.kt)("h4",{id:"streaming_load_max_mb"},(0,i.kt)("inlineCode",{parentName:"h4"},"streaming_load_max_mb")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: Used to limit the maximum amount of csv data allowed in one Stream load.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Stream Load is generally suitable for loading data less than a few GB, not suitable for loading too large data."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 10240 (MB)"),(0,i.kt)("li",{parentName:"ul"},"Dynamically modifiable: Yes")),(0,i.kt)("h4",{id:"streaming_load_json_max_mb"},(0,i.kt)("inlineCode",{parentName:"h4"},"streaming_load_json_max_mb")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: it is used to limit the maximum amount of json data allowed in one Stream load. The unit is MB.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Some data formats, such as JSON, cannot be split. Doris must read all the data into the memory before parsing can begin. Therefore, this value is used to limit the maximum amount of data that can be loaded in a single Stream load."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 100"),(0,i.kt)("li",{parentName:"ul"},"Dynamically modifiable: Yes")),(0,i.kt)("h3",{id:"thread"},"Thread"),(0,i.kt)("h4",{id:"delete_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"delete_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of threads performing data deletion tasks"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h4",{id:"clear_transaction_task_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"clear_transaction_task_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of threads used to clean up transactions"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1")),(0,i.kt)("h4",{id:"clone_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"clone_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of threads used to perform cloning tasks"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h4",{id:"be_service_threads"},(0,i.kt)("inlineCode",{parentName:"h4"},"be_service_threads")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of execution threads of the thrift server service on BE which represents the number of threads that can be used to execute FE requests."),(0,i.kt)("li",{parentName:"ul"},"Default value: 64")),(0,i.kt)("h4",{id:"download_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"download_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The number of download threads."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1")),(0,i.kt)("h4",{id:"drop_tablet_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"drop_tablet_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of threads to delete tablet"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h4",{id:"flush_thread_num_per_store"},(0,i.kt)("inlineCode",{parentName:"h4"},"flush_thread_num_per_store")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The number of threads used to refresh the memory table per store"),(0,i.kt)("li",{parentName:"ul"},"Default value: 2")),(0,i.kt)("h4",{id:"num_threads_per_core"},(0,i.kt)("inlineCode",{parentName:"h4"},"num_threads_per_core")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Control the number of threads that each core runs. Usually choose 2 times or 3 times the number of cores. This keeps the core busy without causing excessive jitter"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h4",{id:"num_threads_per_disk"},(0,i.kt)("inlineCode",{parentName:"h4"},"num_threads_per_disk")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The maximum number of threads per disk is also the maximum queue depth of each disk"),(0,i.kt)("li",{parentName:"ul"},"Default value: 0")),(0,i.kt)("h4",{id:"number_slave_replica_download_threads"},(0,i.kt)("inlineCode",{parentName:"h4"},"number_slave_replica_download_threads")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of threads for slave replica synchronize data, used for single replica load."),(0,i.kt)("li",{parentName:"ul"},"Default value: 64")),(0,i.kt)("h4",{id:"publish_version_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"publish_version_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: the count of thread to publish version"),(0,i.kt)("li",{parentName:"ul"},"Default value: 8")),(0,i.kt)("h4",{id:"upload_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"upload_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Maximum number of threads for uploading files"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1")),(0,i.kt)("h4",{id:"webserver_num_workers"},(0,i.kt)("inlineCode",{parentName:"h4"},"webserver_num_workers")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Webserver default number of worker threads"),(0,i.kt)("li",{parentName:"ul"},"Default value: 48")),(0,i.kt)("h4",{id:"send_batch_thread_pool_thread_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"send_batch_thread_pool_thread_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of threads in the SendBatch thread pool. In NodeChannels' sending data tasks, the SendBatch operation of each NodeChannel will be submitted as a thread task to the thread pool to be scheduled. This parameter determines the size of the SendBatch thread pool."),(0,i.kt)("li",{parentName:"ul"},"Default value: 64")),(0,i.kt)("h4",{id:"send_batch_thread_pool_queue_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"send_batch_thread_pool_queue_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The queue length of the SendBatch thread pool. In NodeChannels' sending data tasks,  the SendBatch operation of each NodeChannel will be submitted as a thread task to the thread pool waiting to be scheduled, and after the number of submitted tasks exceeds the length of the thread pool queue, subsequent submitted tasks will be blocked until there is a empty slot in the queue."),(0,i.kt)("li",{parentName:"ul"},"Default value: 102400")),(0,i.kt)("h4",{id:"make_snapshot_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"make_snapshot_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of threads making snapshots"),(0,i.kt)("li",{parentName:"ul"},"Default value: 5")),(0,i.kt)("h4",{id:"release_snapshot_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"release_snapshot_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of threads releasing snapshots"),(0,i.kt)("li",{parentName:"ul"},"Default value: 5")),(0,i.kt)("h3",{id:"memory"},"Memory"),(0,i.kt)("h4",{id:"disable_mem_pools"},(0,i.kt)("inlineCode",{parentName:"h4"},"disable_mem_pools")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Whether to disable the memory cache pool."),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"buffer_pool_clean_pages_limit"},(0,i.kt)("inlineCode",{parentName:"h4"},"buffer_pool_clean_pages_limit")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Clean up pages that may be saved by the buffer pool"),(0,i.kt)("li",{parentName:"ul"},"Default value: 50%")),(0,i.kt)("h4",{id:"buffer_pool_limit"},(0,i.kt)("inlineCode",{parentName:"h4"},"buffer_pool_limit")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: string"),(0,i.kt)("li",{parentName:"ul"},"Description: The largest allocatable memory of the buffer pool",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"The maximum amount of memory available in the BE buffer pool. The buffer pool is a new memory management structure of BE, which manages the memory by the buffer page and enables spill data to disk. The memory for all concurrent queries will be allocated from the buffer pool. The current buffer pool only works on ",(0,i.kt)("strong",{parentName:"li"},"AggregationNode")," and ",(0,i.kt)("strong",{parentName:"li"},"ExchangeNode"),"."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 20%")),(0,i.kt)("h4",{id:"chunk_reserved_bytes_limit"},(0,i.kt)("inlineCode",{parentName:"h4"},"chunk_reserved_bytes_limit")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The reserved bytes limit of Chunk Allocator, usually set as a percentage of mem_limit. defaults to bytes if no unit is given, the number of bytes must be a multiple of 2. must larger than 0. and if larger than physical memory size, it will be set to physical memory size. increase this variable can improve performance, but will acquire more free memory which can not be used by other modules."),(0,i.kt)("li",{parentName:"ul"},"Default value: 20%")),(0,i.kt)("h4",{id:"madvise_huge_pages"},(0,i.kt)("inlineCode",{parentName:"h4"},"madvise_huge_pages")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Whether to use linux memory huge pages."),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"max_memory_sink_batch_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_memory_sink_batch_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The maximum external scan cache batch count, which means that the cache max_memory_cache_batch_count ",(0,i.kt)("em",{parentName:"li"}," batch_size row, the default is 20, and the default value of batch_size is 1024, which means that 20 ")," 1024 rows will be cached"),(0,i.kt)("li",{parentName:"ul"},"Default value: 20")),(0,i.kt)("h4",{id:"memory_max_alignment"},(0,i.kt)("inlineCode",{parentName:"h4"},"memory_max_alignment")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Maximum alignment memory"),(0,i.kt)("li",{parentName:"ul"},"Default value: 16")),(0,i.kt)("h4",{id:"mmap_buffers"},(0,i.kt)("inlineCode",{parentName:"h4"},"mmap_buffers")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Whether to use mmap to allocate memory"),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"memtable_mem_tracker_refresh_interval_ms"},(0,i.kt)("inlineCode",{parentName:"h4"},"memtable_mem_tracker_refresh_interval_ms")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Interval in milliseconds between memtable flush mgr refresh iterations"),(0,i.kt)("li",{parentName:"ul"},"Default value: 100")),(0,i.kt)("h4",{id:"download_cache_buffer_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"download_cache_buffer_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: The size of the buffer used to receive data when downloading the cache."),(0,i.kt)("li",{parentName:"ul"},"Default value: 10485760")),(0,i.kt)("h4",{id:"zone_map_row_num_threshold"},(0,i.kt)("inlineCode",{parentName:"h4"},"zone_map_row_num_threshold")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: If the number of rows in a page is less than this value, no zonemap will be created to reduce data expansion"),(0,i.kt)("li",{parentName:"ul"},"Default value: 20")),(0,i.kt)("h4",{id:"enable_tcmalloc_hook"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_tcmalloc_hook")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Whether Hook TCmalloc new/delete, currently consume/release tls mem tracker in Hook."),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"memory_mode"},(0,i.kt)("inlineCode",{parentName:"h4"},"memory_mode")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: string"),(0,i.kt)("li",{parentName:"ul"},"Description: Control gc of tcmalloc, in performance mode doirs releases memory of tcmalloc cache when usgae >= 90% ",(0,i.kt)("em",{parentName:"li"}," mem_limit, otherwise, doris releases memory of tcmalloc cache when usage >= 50% ")," mem_limit;"),(0,i.kt)("li",{parentName:"ul"},"Default value: performance")),(0,i.kt)("h4",{id:"max_sys_mem_available_low_water_mark_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_sys_mem_available_low_water_mark_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: The maximum low water mark of the system ",(0,i.kt)("inlineCode",{parentName:"li"},"/proc/meminfo/MemAvailable"),", Unit byte, default 1.6G, actual low water mark=min(1.6G, MemTotal * 10%), avoid wasting too much memory on machines with large memory larger than 16G. Turn up max. On machines with more than 16G memory, more memory buffers will be reserved for Full GC. Turn down max. will use as much memory as possible."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1717986918")),(0,i.kt)("h4",{id:"memory_limitation_per_thread_for_schema_change_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"memory_limitation_per_thread_for_schema_change_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Maximum memory allowed for a single schema change task"),(0,i.kt)("li",{parentName:"ul"},"Default value: 2147483648 (2GB)")),(0,i.kt)("h4",{id:"mem_tracker_consume_min_size_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"mem_tracker_consume_min_size_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The minimum length of TCMalloc Hook when consume/release MemTracker. Consume size smaller than this value will continue to accumulate to avoid frequent calls to consume/release of MemTracker. Decreasing this value will increase the frequency of consume/release. Increasing this value will cause MemTracker statistics to be inaccurate. Theoretically, the statistical value of a MemTracker differs from the true value = ( mem_tracker_consume_min_size_bytes * the number of BE threads where the MemTracker is located)."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1,048,576")),(0,i.kt)("h4",{id:"cache_clean_interval"},(0,i.kt)("inlineCode",{parentName:"h4"},"cache_clean_interval")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: File handle cache cleaning interval, used to clean up file handles that have not been used for a long time.Also the clean interval of Segment Cache."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1800 (s)")),(0,i.kt)("h4",{id:"min_buffer_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"min_buffer_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Minimum read buffer size"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1024 (byte)")),(0,i.kt)("h4",{id:"write_buffer_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"write_buffer_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The size of the buffer before flashing",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Imported data is first written to a memory block on the BE, and only written back to disk when this memory block reaches the threshold. The default size is 100MB. too small a threshold may result in a large number of small files on the BE. This threshold can be increased to reduce the number of files. However, too large a threshold may cause RPC timeouts"))),(0,i.kt)("li",{parentName:"ul"},"Default value: 104,857,600")),(0,i.kt)("h4",{id:"remote_storage_read_buffer_mb"},(0,i.kt)("inlineCode",{parentName:"h4"},"remote_storage_read_buffer_mb")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The cache size used when reading files on hdfs or object storage.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Increasing this value can reduce the number of calls to read remote data, but it will increase memory overhead."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 16 (MB)")),(0,i.kt)("h4",{id:"file_cache_type"},(0,i.kt)("inlineCode",{parentName:"h4"},"file_cache_type")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: string"),(0,i.kt)("li",{parentName:"ul"},"Description: Type of cache file.",(0,i.kt)("inlineCode",{parentName:"li"},"whole_file_cache"),": download the entire segment file, ",(0,i.kt)("inlineCode",{parentName:"li"},"sub_file_cache"),': the segment file is divided into multiple files by size. if set "", no cache, please set this parameter when caching is required.'),(0,i.kt)("li",{parentName:"ul"},'Default value: ""')),(0,i.kt)("h4",{id:"file_cache_alive_time_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"file_cache_alive_time_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: Save time of cache file"),(0,i.kt)("li",{parentName:"ul"},"Default value: 604800 (1 week)")),(0,i.kt)("h4",{id:"file_cache_max_size_per_disk"},(0,i.kt)("inlineCode",{parentName:"h4"},"file_cache_max_size_per_disk")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: The cache occupies the disk size. Once this setting is exceeded, the cache that has not been accessed for the longest time will be deleted. If it is 0, the size is not limited. unit is bytes."),(0,i.kt)("li",{parentName:"ul"},"Default value: 0")),(0,i.kt)("h4",{id:"max_sub_cache_file_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_sub_cache_file_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: Cache files using sub",(0,i.kt)("em",{parentName:"li"}," file")," The maximum size of the split file during cache"),(0,i.kt)("li",{parentName:"ul"},"Default value: 104857600 (100MB)")),(0,i.kt)("h4",{id:"download_cache_thread_pool_thread_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"download_cache_thread_pool_thread_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of threads in the DownloadCache thread pool. In the download cache task of FileCache, the download cache operation will be submitted to the thread pool as a thread task and wait to be scheduled. This parameter determines the size of the DownloadCache thread pool."),(0,i.kt)("li",{parentName:"ul"},"Default value: 48")),(0,i.kt)("h4",{id:"download_cache_thread_pool_queue_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"download_cache_thread_pool_queue_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The number of threads in the DownloadCache thread pool. In the download cache task of FileCache, the download cache operation will be submitted to the thread pool as a thread task and wait to be scheduled. After the number of submitted tasks exceeds the length of the thread pool queue, subsequent submitted tasks will be blocked until there is a empty slot in the queue."),(0,i.kt)("li",{parentName:"ul"},"Default value: 102400")),(0,i.kt)("h4",{id:"generate_cache_cleaner_task_interval_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"generate_cache_cleaner_task_interval_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type\uff1aint64"),(0,i.kt)("li",{parentName:"ul"},"Description\uff1aCleaning interval of cache files, in seconds"),(0,i.kt)("li",{parentName:"ul"},"Default\uff1a43200\uff0812 hours\uff09")),(0,i.kt)("h4",{id:"path_gc_check"},(0,i.kt)("inlineCode",{parentName:"h4"},"path_gc_check")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type\uff1abool"),(0,i.kt)("li",{parentName:"ul"},"Description\uff1aWhether to enable the recycle scan data thread check"),(0,i.kt)("li",{parentName:"ul"},"Default\uff1atrue")),(0,i.kt)("h4",{id:"path_gc_check_interval_second"},(0,i.kt)("inlineCode",{parentName:"h4"},"path_gc_check_interval_second")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description\uff1aRecycle scan data thread check interval"),(0,i.kt)("li",{parentName:"ul"},"Default\uff1a86400 (s)")),(0,i.kt)("h4",{id:"path_gc_check_step"},(0,i.kt)("inlineCode",{parentName:"h4"},"path_gc_check_step")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Default\uff1a1000")),(0,i.kt)("h4",{id:"path_gc_check_step_interval_ms"},(0,i.kt)("inlineCode",{parentName:"h4"},"path_gc_check_step_interval_ms")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Default\uff1a10 (ms)")),(0,i.kt)("h4",{id:"path_scan_interval_second"},(0,i.kt)("inlineCode",{parentName:"h4"},"path_scan_interval_second")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Default\uff1a86400")),(0,i.kt)("h4",{id:"scan_context_gc_interval_min"},(0,i.kt)("inlineCode",{parentName:"h4"},"scan_context_gc_interval_min")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description\uff1aThis configuration is used for the context gc thread scheduling cycle. Note: The unit is minutes, and the default is 5 minutes"),(0,i.kt)("li",{parentName:"ul"},"Default\uff1a5")),(0,i.kt)("h3",{id:"storage"},"Storage"),(0,i.kt)("h4",{id:"default_num_rows_per_column_file_block"},(0,i.kt)("inlineCode",{parentName:"h4"},"default_num_rows_per_column_file_block")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Configure how many rows of data are contained in a single RowBlock."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1024")),(0,i.kt)("h4",{id:"disable_storage_page_cache"},(0,i.kt)("inlineCode",{parentName:"h4"},"disable_storage_page_cache")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Disable to use page cache for index caching, this configuration only takes effect in BETA storage format, usually it is recommended to false"),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"disk_stat_monitor_interval"},(0,i.kt)("inlineCode",{parentName:"h4"},"disk_stat_monitor_interval")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Disk status check interval"),(0,i.kt)("li",{parentName:"ul"},"Default value: 5\uff08s\uff09")),(0,i.kt)("h4",{id:"max_free_io_buffers"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_free_io_buffers")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: For each io buffer size, the maximum number of buffers that IoMgr will reserve ranges from 1024B to 8MB buffers, up to about 2GB buffers."),(0,i.kt)("li",{parentName:"ul"},"Default value: 128")),(0,i.kt)("h4",{id:"max_garbage_sweep_interval"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_garbage_sweep_interval")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The maximum interval for disk garbage cleaning"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3600 (s)")),(0,i.kt)("h4",{id:"max_percentage_of_error_disk"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_percentage_of_error_disk")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: The storage engine allows the percentage of damaged hard disks to exist. After the damaged hard disk exceeds the changed ratio, BE will automatically exit."),(0,i.kt)("li",{parentName:"ul"},"Default value: 0")),(0,i.kt)("h4",{id:"read_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"read_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The read size is the read size sent to the os. There is a trade-off between latency and the whole process, getting to keep the disk busy but not introducing seeks. For 8 MB reads, random io and sequential io have similar performance."),(0,i.kt)("li",{parentName:"ul"},"Default value: 8388608")),(0,i.kt)("h4",{id:"min_garbage_sweep_interval"},(0,i.kt)("inlineCode",{parentName:"h4"},"min_garbage_sweep_interval")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The minimum interval between disk garbage cleaning"),(0,i.kt)("li",{parentName:"ul"},"Default value: 180 (s)")),(0,i.kt)("h4",{id:"pprof_profile_dir"},(0,i.kt)("inlineCode",{parentName:"h4"},"pprof_profile_dir")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: pprof profile save directory"),(0,i.kt)("li",{parentName:"ul"},"Default value: ${DORIS_HOME}/log")),(0,i.kt)("h4",{id:"small_file_dir"},(0,i.kt)("inlineCode",{parentName:"h4"},"small_file_dir")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Save files downloaded by SmallFileMgr"),(0,i.kt)("li",{parentName:"ul"},"Default value: ${DORIS_HOME}/lib/small_file/")),(0,i.kt)("h4",{id:"user_function_dir"},(0,i.kt)("inlineCode",{parentName:"h4"},"user_function_dir")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: udf function directory"),(0,i.kt)("li",{parentName:"ul"},"Default value: ${DORIS_HOME}/lib/udf")),(0,i.kt)("h4",{id:"storage_flood_stage_left_capacity_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"storage_flood_stage_left_capacity_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The min bytes that should be left of a data dir."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1073741824")),(0,i.kt)("h4",{id:"storage_flood_stage_usage_percent"},(0,i.kt)("inlineCode",{parentName:"h4"},"storage_flood_stage_usage_percent")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The storage_flood_stage_usage_percent and storage_flood_stage_left_capacity_bytes configurations limit the maximum usage of the capacity of the data directory."),(0,i.kt)("li",{parentName:"ul"},"Default value: 90 \uff0890%\uff09")),(0,i.kt)("h4",{id:"storage_medium_migrate_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"storage_medium_migrate_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: the count of thread to clone"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1")),(0,i.kt)("h4",{id:"storage_page_cache_limit"},(0,i.kt)("inlineCode",{parentName:"h4"},"storage_page_cache_limit")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Cache for storage page size"),(0,i.kt)("li",{parentName:"ul"},"Default value: 20%")),(0,i.kt)("h4",{id:"storage_page_cache_shard_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"storage_page_cache_shard_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Shard size of StoragePageCache, the value must be power of two. It's recommended to set it to a value close to the number of BE cores in order to reduce lock contentions."),(0,i.kt)("li",{parentName:"ul"},"Default value: 16")),(0,i.kt)("h4",{id:"index_page_cache_percentage"},(0,i.kt)("inlineCode",{parentName:"h4"},"index_page_cache_percentage")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Index page cache as a percentage of total storage page cache, value range is ","[0, 100]"),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"segment_cache_capacity"},(0,i.kt)("inlineCode",{parentName:"h4"},"segment_cache_capacity")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: Max number of segment cache (the key is rowset id) entries. -1 is for backward compatibility as fd_number * 2/5."),(0,i.kt)("li",{parentName:"ul"},"Default value: -1")),(0,i.kt)("h4",{id:"storage_strict_check_incompatible_old_format"},(0,i.kt)("inlineCode",{parentName:"h4"},"storage_strict_check_incompatible_old_format")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Used to check incompatible old format strictly"),(0,i.kt)("li",{parentName:"ul"},"Default value: true"),(0,i.kt)("li",{parentName:"ul"},"Dynamically modify: false")),(0,i.kt)("h4",{id:"sync_tablet_meta"},(0,i.kt)("inlineCode",{parentName:"h4"},"sync_tablet_meta")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Whether the storage engine opens sync and keeps it to the disk"),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"pending_data_expire_time_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"pending_data_expire_time_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The maximum duration of unvalidated data retained by the storage engine"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1800 (s)")),(0,i.kt)("h4",{id:"ignore_rowset_stale_unconsistent_delete"},(0,i.kt)("inlineCode",{parentName:"h4"},"ignore_rowset_stale_unconsistent_delete")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: boolean"),(0,i.kt)("li",{parentName:"ul"},"Description:It is used to decide whether to delete the outdated merged rowset if it cannot form a consistent version path.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"The merged expired rowset version path will be deleted after half an hour. In abnormal situations, deleting these versions will result in the problem that the consistent path of the query cannot be constructed. When the configuration is false, the program check is strict and the program will directly report an error and exit.When configured as true, the program will run normally and ignore this error. In general, ignoring this error will not affect the query, only when the merged version is dispatched by fe, -230 error will appear."))),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"create_tablet_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"create_tablet_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of worker threads for BE to create a tablet"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h4",{id:"check_consistency_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"check_consistency_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The number of worker threads to calculate the checksum of the tablet"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1")),(0,i.kt)("h4",{id:"max_tablet_version_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_tablet_version_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int"),(0,i.kt)("li",{parentName:"ul"},"Description: Limit the number of versions of a single tablet. It is used to prevent a large number of version accumulation problems caused by too frequent import or untimely compaction. When the limit is exceeded, the import task will be rejected."),(0,i.kt)("li",{parentName:"ul"},"Default value: 500")),(0,i.kt)("h4",{id:"number_tablet_writer_threads"},(0,i.kt)("inlineCode",{parentName:"h4"},"number_tablet_writer_threads")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of tablet write threads"),(0,i.kt)("li",{parentName:"ul"},"Default value: 16")),(0,i.kt)("h4",{id:"tablet_map_shard_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"tablet_map_shard_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: tablet_map_lock fragment size, the value is 2^n, n=0,1,2,3,4, this is for better tablet management"),(0,i.kt)("li",{parentName:"ul"},"Default value: 4")),(0,i.kt)("h4",{id:"tablet_meta_checkpoint_min_interval_secs"},(0,i.kt)("inlineCode",{parentName:"h4"},"tablet_meta_checkpoint_min_interval_secs")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: TabletMeta Checkpoint\u7ebf\u7a0b\u8f6e\u8be2\u7684\u65f6\u95f4\u95f4\u9694"),(0,i.kt)("li",{parentName:"ul"},"Default value: 600 (s)")),(0,i.kt)("h4",{id:"tablet_meta_checkpoint_min_new_rowsets_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"tablet_meta_checkpoint_min_new_rowsets_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The minimum number of Rowsets for storing TabletMeta Checkpoints"),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"tablet_stat_cache_update_interval_second"},(0,i.kt)("inlineCode",{parentName:"h4"},"tablet_stat_cache_update_interval_second")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Update interval of tablet state cache"),(0,i.kt)("li",{parentName:"ul"},"Default value:300 (s)")),(0,i.kt)("h4",{id:"tablet_rowset_stale_sweep_time_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"tablet_rowset_stale_sweep_time_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int64"),(0,i.kt)("li",{parentName:"ul"},"Description: It is used to control the expiration time of cleaning up the merged rowset version. When the current time now() minus the max created rowset\u2018s create time in a version path is greater than tablet_rowset_stale_sweep_time_sec, the current path is cleaned up and these merged rowsets are deleted, the unit is second.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"When writing is too frequent, Fe may not be able to query the merged version, resulting in a query -230 error. This problem can be avoided by increasing this parameter."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 300")),(0,i.kt)("h4",{id:"tablet_writer_open_rpc_timeout_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"tablet_writer_open_rpc_timeout_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Update interval of tablet state cache",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"The RPC timeout for sending a Batch (1024 lines) during import. The default is 60 seconds. Since this RPC may involve writing multiple batches of memory, the RPC timeout may be caused by writing batches, so this timeout can be adjusted to reduce timeout errors (such as send batch fail errors). Also, if you increase the write_buffer_size configuration, you need to increase this parameter as well."))),(0,i.kt)("li",{parentName:"ul"},"Default value: 60")),(0,i.kt)("h4",{id:"tablet_writer_ignore_eovercrowded"},(0,i.kt)("inlineCode",{parentName:"h4"},"tablet_writer_ignore_eovercrowded")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: Used to ignore brpc error '","[E1011]","The server is overcrowded' when writing data."),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("h4",{id:"streaming_load_rpc_max_alive_time_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"streaming_load_rpc_max_alive_time_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The lifetime of TabletsChannel. If the channel does not receive any data at this time, the channel will be deleted."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1200")),(0,i.kt)("h4",{id:"alter_tablet_worker_count"},(0,i.kt)("inlineCode",{parentName:"h4"},"alter_tablet_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The number of threads making schema changes"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h3",{id:"alter_index_worker_count"},(0,i.kt)("inlineCode",{parentName:"h3"},"alter_index_worker_count")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The number of threads making index change"),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h4",{id:"ignore_load_tablet_failure"},(0,i.kt)("inlineCode",{parentName:"h4"},"ignore_load_tablet_failure")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: It is used to decide whether to ignore errors and continue to start be in case of tablet loading failure"),(0,i.kt)("li",{parentName:"ul"},"Default value: false")),(0,i.kt)("p",null,"When BE starts, a separate thread will be started for each data directory to load the meta information of the tablet header. In the default configuration, if a data directory fails to load a tablet, the startup process will terminate. At the same time, it will be displayed in the ",(0,i.kt)("inlineCode",{parentName:"p"},"be The following error message is seen in the INFO")," log:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"load tablets from header failed, failed tablets size: xxx, path=xxx\n")),(0,i.kt)("p",null,"Indicates how many tablets failed to load in the data directory. At the same time, the log will also contain specific information about the tablets that failed to load. At this time, manual intervention is required to troubleshoot the cause of the error. After troubleshooting, there are usually two ways to restore:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"The tablet information cannot be repaired. If the other copies are normal, you can delete the wrong tablet with the ",(0,i.kt)("inlineCode",{parentName:"li"},"meta_tool")," tool."),(0,i.kt)("li",{parentName:"ul"},"Set ",(0,i.kt)("inlineCode",{parentName:"li"},"ignore_load_tablet_failure")," to true, BE will ignore these faulty tablets and start normally")),(0,i.kt)("h4",{id:"report_disk_state_interval_seconds"},(0,i.kt)("inlineCode",{parentName:"h4"},"report_disk_state_interval_seconds")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The interval time for the agent to report the disk status to FE"),(0,i.kt)("li",{parentName:"ul"},"Default value: 60 (s)")),(0,i.kt)("h4",{id:"result_buffer_cancelled_interval_time"},(0,i.kt)("inlineCode",{parentName:"h4"},"result_buffer_cancelled_interval_time")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Result buffer cancellation time"),(0,i.kt)("li",{parentName:"ul"},"Default value: 300 (s)")),(0,i.kt)("h4",{id:"snapshot_expire_time_sec"},(0,i.kt)("inlineCode",{parentName:"h4"},"snapshot_expire_time_sec")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Snapshot file cleaning interval."),(0,i.kt)("li",{parentName:"ul"},"Default value:172800 (48 hours)")),(0,i.kt)("h4",{id:"compress_rowbatches"},(0,i.kt)("inlineCode",{parentName:"h4"},"compress_rowbatches")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: bool"),(0,i.kt)("li",{parentName:"ul"},"Description: enable to use Snappy compression algorithm for data compression when serializing RowBatch"),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("version",{since:"1.2"},(0,i.kt)("h4",{id:"jvm_max_heap_size"},(0,i.kt)("inlineCode",{parentName:"h4"},"jvm_max_heap_size")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: string"),(0,i.kt)("li",{parentName:"ul"},"Description: The maximum size of JVM heap memory used by BE, which is the ",(0,i.kt)("inlineCode",{parentName:"li"},"-Xmx")," parameter of JVM"),(0,i.kt)("li",{parentName:"ul"},"Default value: 1024M"))),(0,i.kt)("h3",{id:"log"},"Log"),(0,i.kt)("h4",{id:"sys_log_dir"},(0,i.kt)("inlineCode",{parentName:"h4"},"sys_log_dir")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: string"),(0,i.kt)("li",{parentName:"ul"},"Description: Storage directory of BE log data"),(0,i.kt)("li",{parentName:"ul"},"Default value: ${DORIS_HOME}/log")),(0,i.kt)("h4",{id:"sys_log_level"},(0,i.kt)("inlineCode",{parentName:"h4"},"sys_log_level")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Log Level: INFO < WARNING < ERROR < FATAL"),(0,i.kt)("li",{parentName:"ul"},"Default value: INFO")),(0,i.kt)("h4",{id:"sys_log_roll_mode"},(0,i.kt)("inlineCode",{parentName:"h4"},"sys_log_roll_mode")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The size of the log split, one log file is split every 1G"),(0,i.kt)("li",{parentName:"ul"},"Default value: SIZE-MB-1024")),(0,i.kt)("h4",{id:"sys_log_roll_num"},(0,i.kt)("inlineCode",{parentName:"h4"},"sys_log_roll_num")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Number of log files kept"),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"sys_log_verbose_level"},(0,i.kt)("inlineCode",{parentName:"h4"},"sys_log_verbose_level")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Log display level, used to control the log output at the beginning of VLOG in the code"),(0,i.kt)("li",{parentName:"ul"},"Default value: 10")),(0,i.kt)("h4",{id:"sys_log_verbose_modules"},(0,i.kt)("inlineCode",{parentName:"h4"},"sys_log_verbose_modules")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Log printing module, writing olap will only print the log under the olap module"),(0,i.kt)("li",{parentName:"ul"},"Default value: empty")),(0,i.kt)("h4",{id:"aws_log_level"},(0,i.kt)("inlineCode",{parentName:"h4"},"aws_log_level")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Type: int32"),(0,i.kt)("li",{parentName:"ul"},"Description: log level of AWS SDK,",(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre"},"   Off = 0,\n   Fatal = 1,\n   Error = 2,\n   Warn = 3,\n   Info = 4,\n   Debug = 5,\n   Trace = 6\n"))),(0,i.kt)("li",{parentName:"ul"},"Default value: 3")),(0,i.kt)("h4",{id:"log_buffer_level"},(0,i.kt)("inlineCode",{parentName:"h4"},"log_buffer_level")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The log flushing strategy is kept in memory by default"),(0,i.kt)("li",{parentName:"ul"},"Default value: empty")),(0,i.kt)("h3",{id:"else"},"Else"),(0,i.kt)("h4",{id:"report_tablet_interval_seconds"},(0,i.kt)("inlineCode",{parentName:"h4"},"report_tablet_interval_seconds")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The interval time for the agent to report the olap table to the FE"),(0,i.kt)("li",{parentName:"ul"},"Default value: 60 (s)")),(0,i.kt)("h4",{id:"report_task_interval_seconds"},(0,i.kt)("inlineCode",{parentName:"h4"},"report_task_interval_seconds")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The interval time for the agent to report the task signature to FE"),(0,i.kt)("li",{parentName:"ul"},"Default value: 10 (s)")),(0,i.kt)("h4",{id:"periodic_counter_update_period_ms"},(0,i.kt)("inlineCode",{parentName:"h4"},"periodic_counter_update_period_ms")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Update rate counter and sampling counter cycle"),(0,i.kt)("li",{parentName:"ul"},"Default value: 500 (ms)")),(0,i.kt)("h4",{id:"enable_metric_calculator"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_metric_calculator")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: If set to true, the metric calculator will run to collect BE-related indicator information, if set to false, it will not run"),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"enable_system_metrics"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_system_metrics")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: User control to turn on and off system indicators."),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"enable_token_check"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_token_check")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Used for forward compatibility, will be removed later."),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"max_runnings_transactions_per_txn_map"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_runnings_transactions_per_txn_map")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Max number of txns for every txn_partition_map in txn manager, this is a self protection to avoid too many txns saving in manager"),(0,i.kt)("li",{parentName:"ul"},"Default value: 2000")),(0,i.kt)("h4",{id:"max_download_speed_kbps"},(0,i.kt)("inlineCode",{parentName:"h4"},"max_download_speed_kbps")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Maximum download speed limit"),(0,i.kt)("li",{parentName:"ul"},"Default value: 50000 \uff08kb/s\uff09")),(0,i.kt)("h4",{id:"download_low_speed_time"},(0,i.kt)("inlineCode",{parentName:"h4"},"download_low_speed_time")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Download time limit"),(0,i.kt)("li",{parentName:"ul"},"Default value: 300 (s)")),(0,i.kt)("h4",{id:"download_low_speed_limit_kbps"},(0,i.kt)("inlineCode",{parentName:"h4"},"download_low_speed_limit_kbps")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Minimum download speed"),(0,i.kt)("li",{parentName:"ul"},"Default value: 50 (KB/s)")),(0,i.kt)("h4",{id:"doris_cgroups"},(0,i.kt)("inlineCode",{parentName:"h4"},"doris_cgroups")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Cgroups assigned to doris"),(0,i.kt)("li",{parentName:"ul"},"Default value: empty")),(0,i.kt)("h4",{id:"priority_queue_remaining_tasks_increased_frequency"},(0,i.kt)("inlineCode",{parentName:"h4"},"priority_queue_remaining_tasks_increased_frequency")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: the increased frequency of priority for remaining tasks in BlockingPriorityQueue"),(0,i.kt)("li",{parentName:"ul"},"Default value: 512")),(0,i.kt)("version",{since:"1.2"},(0,i.kt)("h4",{id:"jdbc_drivers_dir"},(0,i.kt)("inlineCode",{parentName:"h4"},"jdbc_drivers_dir")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Default dirs to put jdbc drivers."),(0,i.kt)("li",{parentName:"ul"},"Default value: ",(0,i.kt)("inlineCode",{parentName:"li"},"${DORIS_HOME}/jdbc_drivers"))),(0,i.kt)("h4",{id:"enable_simdjson_reader"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_simdjson_reader")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: Whether enable simdjson to parse json while stream load"),(0,i.kt)("li",{parentName:"ul"},"Default value: true"))),(0,i.kt)("h4",{id:"enable_query_memory_overcommit"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_query_memory_overcommit")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: If true, when the process does not exceed the soft mem limit, the query memory will not be limited; when the process memory exceeds the soft mem limit, the query with the largest ratio between the currently used memory and the exec_mem_limit will be canceled. If false, cancel query when the memory used exceeds exec_mem_limit."),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"user_files_secure_path"},(0,i.kt)("inlineCode",{parentName:"h4"},"user_files_secure_path")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The storage directory for files queried by ",(0,i.kt)("inlineCode",{parentName:"li"},"local")," table valued functions."),(0,i.kt)("li",{parentName:"ul"},"Default value: ",(0,i.kt)("inlineCode",{parentName:"li"},"${DORIS_HOME}"))),(0,i.kt)("h4",{id:"brpc_streaming_client_batch_bytes"},(0,i.kt)("inlineCode",{parentName:"h4"},"brpc_streaming_client_batch_bytes")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: The batch size for sending data by brpc streaming client"),(0,i.kt)("li",{parentName:"ul"},"Default value: 262144")),(0,i.kt)("h4",{id:"grace_shutdown_wait_seconds"},(0,i.kt)("inlineCode",{parentName:"h4"},"grace_shutdown_wait_seconds")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: In cloud native deployment scenario, BE will be add to cluster and remove from cluster very frequently. User's query will fail if there is a fragment is running on the shuting down BE. Users could use stop_be.sh --grace, then BE will wait all running queries to stop to avoiding running query failure, but if the waiting time exceed the limit, then be will exit directly. During this period, FE will not send any queries to BE and waiting for all running queries to stop."),(0,i.kt)("li",{parentName:"ul"},"Default value: 120")),(0,i.kt)("h4",{id:"enable_java_support"},(0,i.kt)("inlineCode",{parentName:"h4"},"enable_java_support")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: BE Whether to enable the use of java-jni. When enabled, mutual calls between c++ and java are allowed. Currently supports hudi, java-udf, jdbc, max-compute, paimon, preload, avro"),(0,i.kt)("li",{parentName:"ul"},"Default value: true")),(0,i.kt)("h4",{id:"olap_table_sink_send_interval_microseconds"},(0,i.kt)("inlineCode",{parentName:"h4"},"olap_table_sink_send_interval_microseconds")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: While loading data, there's a polling thread keep sending data to corresponding BE from Coordinator's sink node. This thread will check whether there's data to send every ",(0,i.kt)("inlineCode",{parentName:"li"},"olap_table_sink_send_interval_microseconds")," microseconds."),(0,i.kt)("li",{parentName:"ul"},"Default value: 1000")),(0,i.kt)("h4",{id:"olap_table_sink_send_interval_auto_partition_factor"},(0,i.kt)("inlineCode",{parentName:"h4"},"olap_table_sink_send_interval_auto_partition_factor")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description: If we load data to a table which enabled auto partition. the interval of ",(0,i.kt)("inlineCode",{parentName:"li"},"olap_table_sink_send_interval_microseconds")," is too slow. In that case the real interval will multiply this factor."),(0,i.kt)("li",{parentName:"ul"},"Default value: 0.001")))}m.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/3dd99dca.160b057b.js b/assets/js/3dd99dca.160b057b.js
deleted file mode 100644
index 889e9b8..0000000
--- a/assets/js/3dd99dca.160b057b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkdoris_website=self.webpackChunkdoris_website||[]).push([[84891],{3905:(e,t,l)=>{l.d(t,{Zo:()=>u,kt:()=>m});var a=l(67294);function n(e,t,l){return t in e?Object.defineProperty(e,t,{value:l,enumerable:!0,configurable:!0,writable:!0}):e[t]=l,e}function i(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}function o(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?i(Object(l),!0).forEach((function(t){n(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):i(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}function r(e,t){if(null==e)return{};var l,a,n=function(e,t){if(null==e)return{};var l,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)l=i[a],t.indexOf(l)>=0||(n[l]=e[l]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)l=i[a],t.indexOf(l)>=0||Object.prototype.propertyIsEnumerable.call(e,l)&&(n[l]=e[l])}return n}var s=a.createContext({}),d=function(e){var t=a.useContext(s),l=t;return e&&(l="function"==typeof e?e(t):o(o({},t),e)),l},u=function(e){var t=d(e.components);return a.createElement(s.Provider,{value:t},e.children)},_="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var l=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=r(e,["components","mdxType","originalType","parentName"]),_=d(l),p=n,m=_["".concat(s,".").concat(p)]||_[p]||c[p]||i;return l?a.createElement(m,o(o({ref:t},u),{},{components:l})):a.createElement(m,o({ref:t},u))}));function m(e,t){var l=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=l.length,o=new Array(i);o[0]=p;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r[_]="string"==typeof e?e:n,o[1]=r;for(var d=2;d<i;d++)o[d]=l[d];return a.createElement.apply(null,o)}return a.createElement.apply(null,l)}p.displayName="MDXCreateElement"},11019:(e,t,l)=>{l.r(t),l.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>r,toc:()=>d});var a=l(87462),n=(l(67294),l(3905));const i={title:"FE Configuration",language:"en",toc_min_heading_level:2,toc_max_heading_level:4},o=void 0,r={unversionedId:"admin-manual/config/fe-config",id:"admin-manual/config/fe-config",title:"FE Configuration",description:"\x3c!--",source:"@site/docs/admin-manual/config/fe-config.md",sourceDirName:"admin-manual/config",slug:"/admin-manual/config/fe-config",permalink:"/docs/dev/admin-manual/config/fe-config",draft:!1,tags:[],version:"current",frontMatter:{title:"FE Configuration",language:"en",toc_min_heading_level:2,toc_max_heading_level:4},sidebar:"docs",previous:{title:"Config Dir",permalink:"/docs/dev/admin-manual/config/config-dir"},next:{title:"BE Configuration",permalink:"/docs/dev/admin-manual/config/be-config"}},s={},d=[{value:"View configuration items",id:"view-configuration-items",level:2},{value:"Set configuration items",id:"set-configuration-items",level:2},{value:"Examples",id:"examples",level:2},{value:"Configurations",id:"configurations",level:2},{value:"Metadata And Cluster",id:"metadata-and-cluster",level:3},{value:"<code>meta_dir</code>",id:"meta_dir",level:4},{value:"<code>catalog_try_lock_timeout_ms</code>",id:"catalog_try_lock_timeout_ms",level:4},{value:"<code>enable_bdbje_debug_mode</code>",id:"enable_bdbje_debug_mode",level:4},{value:"<code>max_bdbje_clock_delta_ms</code>",id:"max_bdbje_clock_delta_ms",level:4},{value:"<code>metadata_failure_recovery</code>",id:"metadata_failure_recovery",level:4},{value:"<code>txn_rollback_limit</code>",id:"txn_rollback_limit",level:4},{value:"<code>grpc_threadmgr_threads_nums</code>",id:"grpc_threadmgr_threads_nums",level:4},{value:"<code>bdbje_replica_ack_timeout_second</code>",id:"bdbje_replica_ack_timeout_second",level:4},{value:"<code>bdbje_lock_timeout_second</code>",id:"bdbje_lock_timeout_second",level:4},{value:"<code>bdbje_heartbeat_timeout_second</code>",id:"bdbje_heartbeat_timeout_second",level:4},{value:"<code>replica_ack_policy</code>",id:"replica_ack_policy",level:4},{value:"<code>replica_sync_policy</code>",id:"replica_sync_policy",level:4},{value:"<code>master_sync_policy</code>",id:"master_sync_policy",level:4},{value:"<code>bdbje_reserved_disk_bytes</code>",id:"bdbje_reserved_disk_bytes",level:4},{value:"<code>ignore_meta_check</code>",id:"ignore_meta_check",level:4},{value:"<code>meta_delay_toleration_second</code>",id:"meta_delay_toleration_second",level:4},{value:"<code>edit_log_port</code>",id:"edit_log_port",level:4},{value:"<code>edit_log_type</code>",id:"edit_log_type",level:4},{value:"<code>edit_log_roll_num</code>",id:"edit_log_roll_num",level:4},{value:"<code>force_do_metadata_checkpoint</code>",id:"force_do_metadata_checkpoint",level:4},{value:"<code>metadata_checkpoint_memory_threshold</code>",id:"metadata_checkpoint_memory_threshold",level:4},{value:"<code>max_same_name_catalog_trash_num</code>",id:"max_same_name_catalog_trash_num",level:4},{value:"<code>cluster_id</code>",id:"cluster_id",level:4},{value:"<code>heartbeat_mgr_blocking_queue_size</code>",id:"heartbeat_mgr_blocking_queue_size",level:4},{value:"<code>heartbeat_mgr_threads_num</code>",id:"heartbeat_mgr_threads_num",level:4},{value:"<code>disable_cluster_feature</code>",id:"disable_cluster_feature",level:4},{value:"<code>enable_deploy_manager</code>",id:"enable_deploy_manager",level:4},{value:"<code>with_k8s_certs</code>",id:"with_k8s_certs",level:4},{value:"<code>enable_fqdn_mode</code>",id:"enable_fqdn_mode",level:4},{value:"<code>enable_token_check</code>",id:"enable_token_check",level:4},{value:"<code>enable_multi_tags</code>",id:"enable_multi_tags",level:4},{value:"<code>initial_root_password</code>",id:"initial_root_password",level:4},{value:"Service",id:"service",level:3},{value:"<code>query_port</code>",id:"query_port",level:4},{value:"<code>arrow_flight_sql_port</code>",id:"arrow_flight_sql_port",level:4},{value:"<code>frontend_address</code>",id:"frontend_address",level:4},{value:"<code>priority_networks</code>",id:"priority_networks",level:4},{value:"<code>http_port</code>",id:"http_port",level:4},{value:"<code>https_port</code>",id:"https_port",level:4},{value:"<code>enable_https</code>",id:"enable_https",level:4},{value:"<code>enable_ssl</code>",id:"enable_ssl",level:4},{value:"<code>qe_max_connection</code>",id:"qe_max_connection",level:4},{value:"<code>check_java_version</code>",id:"check_java_version",level:4},{value:"<code>rpc_port</code>",id:"rpc_port",level:4},{value:"<code>thrift_server_type</code>",id:"thrift_server_type",level:4},{value:"<code>thrift_server_max_worker_threads</code>",id:"thrift_server_max_worker_threads",level:4},{value:"<code>thrift_backlog_num</code>",id:"thrift_backlog_num",level:4},{value:"<code>thrift_client_timeout_ms</code>",id:"thrift_client_timeout_ms",level:4},{value:"<code>use_compact_thrift_rpc</code>",id:"use_compact_thrift_rpc",level:4},{value:"<code>grpc_max_message_size_bytes</code>",id:"grpc_max_message_size_bytes",level:4},{value:"<code>max_mysql_service_task_threads_num</code>",id:"max_mysql_service_task_threads_num",level:4},{value:"<code>mysql_service_io_threads_num</code>",id:"mysql_service_io_threads_num",level:4},{value:"<code>mysql_nio_backlog_num</code>",id:"mysql_nio_backlog_num",level:4},{value:"<code>broker_timeout_ms</code>",id:"broker_timeout_ms",level:4},{value:"<code>backend_rpc_timeout_ms</code>",id:"backend_rpc_timeout_ms",level:4},{value:"<code>drop_backend_after_decommission</code>",id:"drop_backend_after_decommission",level:4},{value:"<code>max_backend_down_time_second</code>",id:"max_backend_down_time_second",level:4},{value:"<code>disable_backend_black_list</code>",id:"disable_backend_black_list",level:4},{value:"<code>max_backend_heartbeat_failure_tolerance_count</code>",id:"max_backend_heartbeat_failure_tolerance_count",level:4},{value:"<code>enable_access_file_without_broker</code>",id:"enable_access_file_without_broker",level:4},{value:"<code>agent_task_resend_wait_time_ms</code>",id:"agent_task_resend_wait_time_ms",level:4},{value:"<code>max_agent_task_threads_num</code>",id:"max_agent_task_threads_num",level:4},{value:"<code>remote_fragment_exec_timeout_ms</code>",id:"remote_fragment_exec_timeout_ms",level:4},{value:"<code>auth_token</code>",id:"auth_token",level:4},{value:"<code>enable_http_server_v2</code>",id:"enable_http_server_v2",level:4},{value:"<code>http_api_extra_base_path</code>",id:"http_api_extra_base_path",level:4},{value:"<code>jetty_server_acceptors</code>",id:"jetty_server_acceptors",level:4},{value:"<code>jetty_server_selectors</code>",id:"jetty_server_selectors",level:4},{value:"<code>jetty_server_workers</code>",id:"jetty_server_workers",level:4},{value:"<code>jetty_server_max_http_post_size</code>",id:"jetty_server_max_http_post_size",level:4},{value:"<code>jetty_server_max_http_header_size</code>",id:"jetty_server_max_http_header_size",level:4},{value:"Query Engine",id:"query-engine",level:3},{value:"<code>default_max_query_instances</code>",id:"default_max_query_instances",level:4},{value:"<code>max_query_retry_time</code>",id:"max_query_retry_time",level:4},{value:"<code>max_dynamic_partition_num</code>",id:"max_dynamic_partition_num",level:4},{value:"<code>dynamic_partition_enable</code>",id:"dynamic_partition_enable",level:4},{value:"<code>dynamic_partition_check_interval_seconds</code>",id:"dynamic_partition_check_interval_seconds",level:4},{value:"<code>max_multi_partition_num</code>",id:"max_multi_partition_num",level:4},{value:"<code>multi_partition_name_prefix</code>",id:"multi_partition_name_prefix",level:4},{value:"<code>partition_in_memory_update_interval_secs</code>",id:"partition_in_memory_update_interval_secs",level:4},{value:"<code>enable_concurrent_update</code>",id:"enable_concurrent_update",level:4},{value:"<code>lower_case_table_names</code>",id:"lower_case_table_names",level:4},{value:"<code>table_name_length_limit</code>",id:"table_name_length_limit",level:4},{value:"<code>cache_enable_sql_mode</code>",id:"cache_enable_sql_mode",level:4},{value:"<code>cache_enable_partition_mode</code>",id:"cache_enable_partition_mode",level:4},{value:"<code>cache_result_max_row_count</code>",id:"cache_result_max_row_count",level:4},{value:"<code>cache_result_max_data_size</code>",id:"cache_result_max_data_size",level:4},{value:"<code>cache_last_version_interval_second</code>",id:"cache_last_version_interval_second",level:4},{value:"<code>enable_batch_delete_by_default</code>",id:"enable_batch_delete_by_default",level:4},{value:"<code>max_allowed_in_element_num_of_delete</code>",id:"max_allowed_in_element_num_of_delete",level:4},{value:"<code>max_running_rollup_job_num_per_table</code>",id:"max_running_rollup_job_num_per_table",level:4},{value:"<code>max_distribution_pruner_recursion_depth</code>",id:"max_distribution_pruner_recursion_depth",level:4},{value:"<code>enable_local_replica_selection</code>",id:"enable_local_replica_selection",level:4},{value:"<code>enable_local_replica_selection_fallback</code>",id:"enable_local_replica_selection_fallback",level:4},{value:"<code>expr_depth_limit</code>",id:"expr_depth_limit",level:4},{value:"<code>expr_children_limit</code>",id:"expr_children_limit",level:4},{value:"<code>be_exec_version</code>",id:"be_exec_version",level:4},{value:"<code>max_be_exec_version</code>",id:"max_be_exec_version",level:4},{value:"<code>min_be_exec_version</code>",id:"min_be_exec_version",level:4},{value:"<code>max_query_profile_num</code>",id:"max_query_profile_num",level:4},{value:"<code>publish_version_interval_ms</code>",id:"publish_version_interval_ms",level:4},{value:"<code>publish_version_timeout_second</code>",id:"publish_version_timeout_second",level:4},{value:"<code>query_colocate_join_memory_limit_penalty_factor</code>",id:"query_colocate_join_memory_limit_penalty_factor",level:4},{value:"<code>rewrite_count_distinct_to_bitmap_hll</code>",id:"rewrite_count_distinct_to_bitmap_hll",level:4},{value:"Load And Export",id:"load-and-export",level:3},{value:"<code>enable_vectorized_load</code>",id:"enable_vectorized_load",level:4},{value:"<code>enable_new_load_scan_node</code>",id:"enable_new_load_scan_node",level:4},{value:"<code>default_max_filter_ratio</code>",id:"default_max_filter_ratio",level:4},{value:"<code>max_running_txn_num_per_db</code>",id:"max_running_txn_num_per_db",level:4},{value:"<code>using_old_load_usage_pattern</code>",id:"using_old_load_usage_pattern",level:4},{value:"<code>disable_load_job</code>",id:"disable_load_job",level:4},{value:"<code>commit_timeout_second</code>",id:"commit_timeout_second",level:4},{value:"<code>max_unfinished_load_job</code>",id:"max_unfinished_load_job",level:4},{value:"<code>db_used_data_quota_update_interval_secs</code>",id:"db_used_data_quota_update_interval_secs",level:4},{value:"<code>disable_show_stream_load</code>",id:"disable_show_stream_load",level:4},{value:"<code>max_stream_load_record_size</code>",id:"max_stream_load_record_size",level:4},{value:"<code>fetch_stream_load_record_interval_second</code>",id:"fetch_stream_load_record_interval_second",level:4},{value:"<code>max_bytes_per_broker_scanner</code>",id:"max_bytes_per_broker_scanner",level:4},{value:"<code>default_load_parallelism</code>",id:"default_load_parallelism",level:4},{value:"<code>max_broker_concurrency</code>",id:"max_broker_concurrency",level:4},{value:"<code>min_bytes_per_broker_scanner</code>",id:"min_bytes_per_broker_scanner",level:4},{value:"<code>period_of_auto_resume_min</code>",id:"period_of_auto_resume_min",level:4},{value:"<code>max_tolerable_backend_down_num</code>",id:"max_tolerable_backend_down_num",level:4},{value:"<code>max_routine_load_task_num_per_be</code>",id:"max_routine_load_task_num_per_be",level:4},{value:"<code>max_routine_load_task_concurrent_num</code>",id:"max_routine_load_task_concurrent_num",level:4},{value:"<code>max_routine_load_job_num</code>",id:"max_routine_load_job_num",level:4},{value:"<code>desired_max_waiting_jobs</code>",id:"desired_max_waiting_jobs",level:4},{value:"<code>disable_hadoop_load</code>",id:"disable_hadoop_load",level:4},{value:"<code>enable_spark_load</code>",id:"enable_spark_load",level:4},{value:"<code>spark_load_checker_interval_second</code>",id:"spark_load_checker_interval_second",level:4},{value:"<code>async_loading_load_task_pool_size</code>",id:"async_loading_load_task_pool_size",level:4},{value:"<code>async_pending_load_task_pool_size</code>",id:"async_pending_load_task_pool_size",level:4},{value:"<code>async_load_task_pool_size</code>",id:"async_load_task_pool_size",level:4},{value:"<code>enable_single_replica_load</code>",id:"enable_single_replica_load",level:4},{value:"<code>min_load_timeout_second</code>",id:"min_load_timeout_second",level:4},{value:"<code>max_stream_load_timeout_second</code>",id:"max_stream_load_timeout_second",level:4},{value:"<code>max_load_timeout_second</code>",id:"max_load_timeout_second",level:4},{value:"<code>stream_load_default_timeout_second</code>",id:"stream_load_default_timeout_second",level:4},{value:"<code>stream_load_default_precommit_timeout_second</code>",id:"stream_load_default_precommit_timeout_second",level:4},{value:"<code>stream_load_default_memtable_on_sink_node</code>",id:"stream_load_default_memtable_on_sink_node",level:4},{value:"<code>insert_load_default_timeout_second</code>",id:"insert_load_default_timeout_second",level:4},{value:"<code>mini_load_default_timeout_second</code>",id:"mini_load_default_timeout_second",level:4},{value:"<code>broker_load_default_timeout_second</code>",id:"broker_load_default_timeout_second",level:4},{value:"<code>spark_load_default_timeout_second</code>",id:"spark_load_default_timeout_second",level:4},{value:"<code>hadoop_load_default_timeout_second</code>",id:"hadoop_load_default_timeout_second",level:4},{value:"<code>load_running_job_num_limit</code>",id:"load_running_job_num_limit",level:4},{value:"<code>load_input_size_limit_gb</code>",id:"load_input_size_limit_gb",level:4},{value:"<code>load_etl_thread_num_normal_priority</code>",id:"load_etl_thread_num_normal_priority",level:4},{value:"<code>load_etl_thread_num_high_priority</code>",id:"load_etl_thread_num_high_priority",level:4},{value:"<code>load_pending_thread_num_normal_priority</code>",id:"load_pending_thread_num_normal_priority",level:4},{value:"<code>load_pending_thread_num_high_priority</code>",id:"load_pending_thread_num_high_priority",level:4},{value:"<code>load_checker_interval_second</code>",id:"load_checker_interval_second",level:4},{value:"<code>load_straggler_wait_second</code>",id:"load_straggler_wait_second",level:4},{value:"<code>label_keep_max_second</code>",id:"label_keep_max_second",level:4},{value:"<code>streaming_label_keep_max_second</code>",id:"streaming_label_keep_max_second",level:4},{value:"<code>label_clean_interval_second</code>",id:"label_clean_interval_second",level:4},{value:"<code>transaction_clean_interval_second</code>",id:"transaction_clean_interval_second",level:4},{value:"<code>sync_commit_interval_second</code>",id:"sync_commit_interval_second",level:4},{value:"<code>sync_checker_interval_second</code>",id:"sync_checker_interval_second",level:4},{value:"<code>max_sync_task_threads_num</code>",id:"max_sync_task_threads_num",level:4},{value:"<code>min_sync_commit_size</code>",id:"min_sync_commit_size",level:4},{value:"<code>min_bytes_sync_commit</code>",id:"min_bytes_sync_commit",level:4},{value:"<code>max_bytes_sync_commit</code>",id:"max_bytes_sync_commit",level:4},{value:"<code>enable_outfile_to_local</code>",id:"enable_outfile_to_local",level:4},{value:"<code>export_tablet_num_per_task</code>",id:"export_tablet_num_per_task",level:4},{value:"<code>export_task_default_timeout_second</code>",id:"export_task_default_timeout_second",level:4},{value:"<code>export_running_job_num_limit</code>",id:"export_running_job_num_limit",level:4},{value:"<code>export_checker_interval_second</code>",id:"export_checker_interval_second",level:4},{value:"Log",id:"log",level:3},{value:"<code>log_roll_size_mb</code>",id:"log_roll_size_mb",level:4},{value:"<code>sys_log_dir</code>",id:"sys_log_dir",level:4},{value:"<code>sys_log_level</code>",id:"sys_log_level",level:4},{value:"<code>sys_log_roll_num</code>",id:"sys_log_roll_num",level:4},{value:"<code>sys_log_verbose_modules</code>",id:"sys_log_verbose_modules",level:4},{value:"<code>sys_log_roll_interval</code>",id:"sys_log_roll_interval",level:4},{value:"<code>sys_log_delete_age</code>",id:"sys_log_delete_age",level:4},{value:"<code>sys_log_roll_mode</code>",id:"sys_log_roll_mode",level:4},{value:"<code>sys_log_enable_compress</code>",id:"sys_log_enable_compress",level:4},{value:"<code>audit_log_dir</code>",id:"audit_log_dir",level:4},{value:"<code>audit_log_roll_num</code>",id:"audit_log_roll_num",level:4},{value:"<code>audit_log_modules</code>",id:"audit_log_modules",level:4},{value:"<code>qe_slow_log_ms</code>",id:"qe_slow_log_ms",level:4},{value:"<code>audit_log_roll_interval</code>",id:"audit_log_roll_interval",level:4},{value:"<code>audit_log_delete_age</code>",id:"audit_log_delete_age",level:4},{value:"<code>audit_log_enable_compress</code>",id:"audit_log_enable_compress",level:4},{value:"<code>nereids_trace_log_dir</code>",id:"nereids_trace_log_dir",level:4},{value:"Storage",id:"storage",level:3},{value:"<code>min_replication_num_per_tablet</code>",id:"min_replication_num_per_tablet",level:4},{value:"<code>max_replication_num_per_tablet</code>",id:"max_replication_num_per_tablet",level:4},{value:"<code>default_db_data_quota_bytes</code>",id:"default_db_data_quota_bytes",level:4},{value:"<code>default_db_replica_quota_size</code>",id:"default_db_replica_quota_size",level:4},{value:"<code>recover_with_empty_tablet</code>",id:"recover_with_empty_tablet",level:4},{value:"<code>min_clone_task_timeout_sec</code> <code>And max_clone_task_timeout_sec</code>",id:"min_clone_task_timeout_sec-and-max_clone_task_timeout_sec",level:4},{value:"<code>disable_storage_medium_check</code>",id:"disable_storage_medium_check",level:4},{value:"<code>decommission_tablet_check_threshold</code>",id:"decommission_tablet_check_threshold",level:4},{value:"<code>partition_rebalance_max_moves_num_per_selection</code>",id:"partition_rebalance_max_moves_num_per_selection",level:4},{value:"<code>partition_rebalance_move_expire_after_access</code>",id:"partition_rebalance_move_expire_after_access",level:4},{value:"<code>tablet_rebalancer_type</code>",id:"tablet_rebalancer_type",level:4},{value:"<code>max_balancing_tablets</code>",id:"max_balancing_tablets",level:4},{value:"<code>max_scheduling_tablets</code>",id:"max_scheduling_tablets",level:4},{value:"<code>disable_balance</code>",id:"disable_balance",level:4},{value:"<code>disable_disk_balance</code>",id:"disable_disk_balance",level:4},{value:"<code>balance_load_score_threshold</code>",id:"balance_load_score_threshold",level:4},{value:"<code>capacity_used_percent_high_water</code>",id:"capacity_used_percent_high_water",level:4},{value:"<code>clone_distribution_balance_threshold</code>",id:"clone_distribution_balance_threshold",level:4},{value:"<code>clone_capacity_balance_threshold</code>",id:"clone_capacity_balance_threshold",level:4},{value:"<code>disable_colocate_balance</code>",id:"disable_colocate_balance",level:4},{value:"<code>balance_slot_num_per_path</code>",id:"balance_slot_num_per_path",level:4},{value:"<code>disable_tablet_scheduler</code>",id:"disable_tablet_scheduler",level:4},{value:"<code>enable_force_drop_redundant_replica</code>",id:"enable_force_drop_redundant_replica",level:4},{value:"<code>colocate_group_relocate_delay_second</code>",id:"colocate_group_relocate_delay_second",level:4},{value:"<code>repair_slow_replica</code>",id:"repair_slow_replica",level:4},{value:"<code>min_version_count_indicate_replica_compaction_too_slow</code>",id:"min_version_count_indicate_replica_compaction_too_slow",level:4},{value:"<code>skip_compaction_slower_replica</code>",id:"skip_compaction_slower_replica",level:4},{value:"<code>valid_version_count_delta_ratio_between_replicas</code>",id:"valid_version_count_delta_ratio_between_replicas",level:4},{value:"<code>min_bytes_indicate_replica_too_large</code>",id:"min_bytes_indicate_replica_too_large",level:4},{value:"<code>schedule_slot_num_per_hdd_path</code>",id:"schedule_slot_num_per_hdd_path",level:4},{value:"<code>schedule_slot_num_per_ssd_path</code>",id:"schedule_slot_num_per_ssd_path",level:4},{value:"<code>tablet_repair_delay_factor_second</code>",id:"tablet_repair_delay_factor_second",level:4},{value:"<code>tablet_stat_update_interval_second</code>",id:"tablet_stat_update_interval_second",level:4},{value:"<code>storage_flood_stage_usage_percent</code>",id:"storage_flood_stage_usage_percent",level:4},{value:"<code>storage_flood_stage_left_capacity_bytes</code>",id:"storage_flood_stage_left_capacity_bytes",level:5},{value:"<code>storage_high_watermark_usage_percent</code>",id:"storage_high_watermark_usage_percent",level:4},{value:"<code>storage_min_left_capacity_bytes</code>",id:"storage_min_left_capacity_bytes",level:4},{value:"<code>catalog_trash_expire_second</code>",id:"catalog_trash_expire_second",level:4},{value:"<code>storage_cooldown_second</code>",id:"storage_cooldown_second",level:4},{value:"<code>default_storage_medium</code>",id:"default_storage_medium",level:4},{value:"<code>enable_storage_policy</code>",id:"enable_storage_policy",level:4},{value:"<code>check_consistency_default_timeout_second</code>",id:"check_consistency_default_timeout_second",level:4},{value:"<code>consistency_check_start_time</code>",id:"consistency_check_start_time",level:4},{value:"<code>consistency_check_end_time</code>",id:"consistency_check_end_time",level:4},{value:"<code>replica_delay_recovery_second</code>",id:"replica_delay_recovery_second",level:4},{value:"<code>tablet_create_timeout_second</code>",id:"tablet_create_timeout_second",level:4},{value:"<code>tablet_delete_timeout_second</code>",id:"tablet_delete_timeout_second",level:4},{value:"<code>alter_table_timeout_second</code>",id:"alter_table_timeout_second",level:4},{value:"<code>max_replica_count_when_schema_change</code>",id:"max_replica_count_when_schema_change",level:4},{value:"<code>history_job_keep_max_second</code>",id:"history_job_keep_max_second",level:4},{value:"<code>max_create_table_timeout_second</code>",id:"max_create_table_timeout_second",level:4},{value:"External Table",id:"external-table",level:3},{value:"<code>file_scan_node_split_num</code>",id:"file_scan_node_split_num",level:4},{value:"<code>file_scan_node_split_size</code>",id:"file_scan_node_split_size",level:4},{value:"<code>enable_odbc_mysql_broker_table</code>",id:"enable_odbc_mysql_broker_table",level:4},{value:"<code>max_hive_partition_cache_num</code>",id:"max_hive_partition_cache_num",level:4},{value:"<code>hive_metastore_client_timeout_second</code>",id:"hive_metastore_client_timeout_second",level:4},{value:"<code>max_external_cache_loader_thread_pool_size</code>",id:"max_external_cache_loader_thread_pool_size",level:4},{value:"<code>max_external_file_cache_num</code>",id:"max_external_file_cache_num",level:4},{value:"<code>max_external_schema_cache_num</code>",id:"max_external_schema_cache_num",level:4},{value:"<code>external_cache_expire_time_minutes_after_access</code>",id:"external_cache_expire_time_minutes_after_access",level:4},{value:"<code>es_state_sync_interval_second</code>",id:"es_state_sync_interval_second",level:4},{value:"External Resources",id:"external-resources",level:3},{value:"<code>dpp_hadoop_client_path</code>",id:"dpp_hadoop_client_path",level:4},{value:"<code>dpp_bytes_per_reduce</code>",id:"dpp_bytes_per_reduce",level:4},{value:"<code>dpp_default_cluster</code>",id:"dpp_default_cluster",level:4},{value:"<code>dpp_default_config_str</code>",id:"dpp_default_config_str",level:4},{value:"<code>dpp_config_str</code>",id:"dpp_config_str",level:4},{value:"<code>yarn_config_dir</code>",id:"yarn_config_dir",level:4},{value:"<code>yarn_client_path</code>",id:"yarn_client_path",level:4},{value:"<code>spark_launcher_log_dir</code>",id:"spark_launcher_log_dir",level:4},{value:"<code>spark_resource_path</code>",id:"spark_resource_path",level:4},{value:"<code>spark_home_default_dir</code>",id:"spark_home_default_dir",level:4},{value:"<code>spark_dpp_version</code>",id:"spark_dpp_version",level:4},{value:"Else",id:"else",level:3},{value:"<code>tmp_dir</code>",id:"tmp_dir",level:4},{value:"<code>custom_config_dir</code>",id:"custom_config_dir",level:4},{value:"<code>plugin_dir</code>",id:"plugin_dir",level:4},{value:"<code>plugin_enable</code>",id:"plugin_enable",level:4},{value:"<code>small_file_dir</code>",id:"small_file_dir",level:4},{value:"<code>max_small_file_size_bytes</code>",id:"max_small_file_size_bytes",level:4},{value:"<code>max_small_file_number</code>",id:"max_small_file_number",level:4},{value:"<code>enable_metric_calculator</code>",id:"enable_metric_calculator",level:4},{value:"<code>report_queue_size</code>",id:"report_queue_size",level:4},{value:"<code>backup_job_default_timeout_ms</code>",id:"backup_job_default_timeout_ms",level:4},{value:"<code>max_backup_restore_job_num_per_db</code>",id:"max_backup_restore_job_num_per_db",level:4},{value:"<code>enable_quantile_state_type</code>",id:"enable_quantile_state_type",level:4},{value:"<code>enable_date_conversion</code>",id:"enable_date_conversion",level:4},{value:"<code>enable_decimal_conversion</code>",id:"enable_decimal_conversion",level:4},{value:"<code>proxy_auth_magic_prefix</code>",id:"proxy_auth_magic_prefix",level:4},{value:"<code>proxy_auth_enable</code>",id:"proxy_auth_enable",level:4},{value:"<code>enable_func_pushdown</code>",id:"enable_func_pushdown",level:4},{value:"<code>jdbc_drivers_dir</code>",id:"jdbc_drivers_dir",level:4},{value:"<code>max_error_tablet_of_broker_load</code>",id:"max_error_tablet_of_broker_load",level:4},{value:"<code>default_db_max_running_txn_num</code>",id:"default_db_max_running_txn_num",level:4},{value:"<code>prefer_compute_node_for_external_table</code>",id:"prefer_compute_node_for_external_table",level:4},{value:"<code>min_backend_num_for_external_table</code>",id:"min_backend_num_for_external_table",level:4},{value:"<code>infodb_support_ext_catalog</code>",id:"infodb_support_ext_catalog",level:4},{value:"<code>enable_query_hit_stats</code>",id:"enable_query_hit_stats",level:4},{value:"<code>div_precision_increment</code>",id:"div_precision_increment",level:4},{value:"<code>enable_convert_light_weight_schema_change</code>",id:"enable_convert_light_weight_schema_change",level:4},{value:"<code>disable_local_deploy_manager_drop_node</code>",id:"disable_local_deploy_manager_drop_node",level:4},{value:"<code>mysqldb_replace_name</code>",id:"mysqldb_replace_name",level:4},{value:"<code>max_auto_partition_num</code>",id:"max_auto_partition_num",level:4}],u={toc:d},_="wrapper";function c(e){let{components:t,...l}=e;return(0,n.kt)(_,(0,a.Z)({},u,l,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"fe-configuration"},"FE Configuration"),(0,n.kt)("p",null,"This document mainly introduces the relevant configuration items of FE."),(0,n.kt)("p",null,"The FE configuration file ",(0,n.kt)("inlineCode",{parentName:"p"},"fe.conf")," is usually stored in the ",(0,n.kt)("inlineCode",{parentName:"p"},"conf/")," directory of the FE deployment path. In version 0.14, another configuration file ",(0,n.kt)("inlineCode",{parentName:"p"},"fe_custom.conf")," will be introduced. The configuration file is used to record the configuration items that are dynamically configured and persisted by the user during operation."),(0,n.kt)("p",null,"After the FE process is started, it will read the configuration items in ",(0,n.kt)("inlineCode",{parentName:"p"},"fe.conf")," first, and then read the configuration items in ",(0,n.kt)("inlineCode",{parentName:"p"},"fe_custom.conf"),". The configuration items in ",(0,n.kt)("inlineCode",{parentName:"p"},"fe_custom.conf")," will overwrite the same configuration items in ",(0,n.kt)("inlineCode",{parentName:"p"},"fe.conf"),"."),(0,n.kt)("p",null,"The location of the ",(0,n.kt)("inlineCode",{parentName:"p"},"fe_custom.conf")," file can be configured in ",(0,n.kt)("inlineCode",{parentName:"p"},"fe.conf")," through the ",(0,n.kt)("inlineCode",{parentName:"p"},"custom_config_dir")," configuration item."),(0,n.kt)("h2",{id:"view-configuration-items"},"View configuration items"),(0,n.kt)("p",null,"There are two ways to view the configuration items of FE:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"FE web page"),(0,n.kt)("p",{parentName:"li"},"Open the FE web page ",(0,n.kt)("inlineCode",{parentName:"p"},"http://fe_host:fe_http_port/variable")," in the browser. You can see the currently effective FE configuration items in ",(0,n.kt)("inlineCode",{parentName:"p"},"Configure Info"),".")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"View by command"),(0,n.kt)("p",{parentName:"li"},"After the FE is started, you can view the configuration items of the FE in the MySQL client with the following command,Concrete language law reference ",(0,n.kt)("a",{parentName:"p",href:"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SHOW-CONFIG"},"ADMIN-SHOW-CONFIG"),":"),(0,n.kt)("p",{parentName:"li"},(0,n.kt)("inlineCode",{parentName:"p"},"ADMIN SHOW FRONTEND CONFIG;")),(0,n.kt)("p",{parentName:"li"},"The meanings of the columns in the results are as follows:"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Key: the name of the configuration item."),(0,n.kt)("li",{parentName:"ul"},"Value: The value of the current configuration item."),(0,n.kt)("li",{parentName:"ul"},"Type: The configuration item value type, such as integer or string."),(0,n.kt)("li",{parentName:"ul"},"IsMutable: whether it can be dynamically configured. If true, the configuration item can be dynamically configured at runtime. If false, it means that the configuration item can only be configured in ",(0,n.kt)("inlineCode",{parentName:"li"},"fe.conf")," and takes effect after restarting FE."),(0,n.kt)("li",{parentName:"ul"},"MasterOnly: Whether it is a unique configuration item of Master FE node. If it is true, it means that the configuration item is meaningful only at the Master FE node, and is meaningless to other types of FE nodes. If false, it means that the configuration item is meaningful in all types of FE nodes."),(0,n.kt)("li",{parentName:"ul"},"Comment: The description of the configuration item.")))),(0,n.kt)("h2",{id:"set-configuration-items"},"Set configuration items"),(0,n.kt)("p",null,"There are two ways to configure FE configuration items:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Static configuration"),(0,n.kt)("p",{parentName:"li"},"Add and set configuration items in the ",(0,n.kt)("inlineCode",{parentName:"p"},"conf/fe.conf")," file. The configuration items in ",(0,n.kt)("inlineCode",{parentName:"p"},"fe.conf")," will be read when the FE process starts. Configuration items not in ",(0,n.kt)("inlineCode",{parentName:"p"},"fe.conf")," will use default values.")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Dynamic configuration via MySQL protocol"),(0,n.kt)("p",{parentName:"li"},"After the FE starts, you can set the configuration items dynamically through the following commands. This command requires administrator privilege."),(0,n.kt)("p",{parentName:"li"},(0,n.kt)("inlineCode",{parentName:"p"},'ADMIN SET FRONTEND CONFIG (" fe_config_name "=" fe_config_value ");')),(0,n.kt)("p",{parentName:"li"},"Not all configuration items support dynamic configuration. You can check whether the dynamic configuration is supported by the ",(0,n.kt)("inlineCode",{parentName:"p"},"IsMutable")," column in the",(0,n.kt)("inlineCode",{parentName:"p"},"ADMIN SHOW FRONTEND CONFIG;"),"command result."),(0,n.kt)("p",{parentName:"li"},"If the configuration item of ",(0,n.kt)("inlineCode",{parentName:"p"},"MasterOnly")," is modified, the command will be directly forwarded to the Master FE and only the corresponding configuration item in the Master FE will be modified."),(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Configuration items modified in this way will become invalid after the FE process restarts.")),(0,n.kt)("p",{parentName:"li"},"For more help on this command, you can view it through the ",(0,n.kt)("inlineCode",{parentName:"p"},"HELP ADMIN SET CONFIG;")," command.")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Dynamic configuration via HTTP protocol"),(0,n.kt)("p",{parentName:"li"},"For details, please refer to ",(0,n.kt)("a",{parentName:"p",href:"/docs/dev/admin-manual/http-actions/fe/set-config-action"},"Set Config Action")),(0,n.kt)("p",{parentName:"li"},"This method can also persist the modified configuration items. The configuration items will be persisted in the ",(0,n.kt)("inlineCode",{parentName:"p"},"fe_custom.conf")," file and will still take effect after FE is restarted."))),(0,n.kt)("h2",{id:"examples"},"Examples"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Modify ",(0,n.kt)("inlineCode",{parentName:"p"},"async_pending_load_task_pool_size")),(0,n.kt)("p",{parentName:"li"},"Through ",(0,n.kt)("inlineCode",{parentName:"p"},"ADMIN SHOW FRONTEND CONFIG;")," you can see that this configuration item cannot be dynamically configured (",(0,n.kt)("inlineCode",{parentName:"p"},"IsMutable")," is false). You need to add in ",(0,n.kt)("inlineCode",{parentName:"p"},"fe.conf"),":"),(0,n.kt)("p",{parentName:"li"},(0,n.kt)("inlineCode",{parentName:"p"},"async_pending_load_task_pool_size = 20")),(0,n.kt)("p",{parentName:"li"},"Then restart the FE process to take effect the configuration.")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Modify ",(0,n.kt)("inlineCode",{parentName:"p"},"dynamic_partition_enable")),(0,n.kt)("p",{parentName:"li"},"Through ",(0,n.kt)("inlineCode",{parentName:"p"},"ADMIN SHOW FRONTEND CONFIG;")," you can see that the configuration item can be dynamically configured (",(0,n.kt)("inlineCode",{parentName:"p"},"IsMutable")," is true). And it is the unique configuration of Master FE. Then first we can connect to any FE and execute the following command to modify the configuration:"),(0,n.kt)("pre",{parentName:"li"},(0,n.kt)("code",{parentName:"pre"},'ADMIN SET FRONTEND CONFIG ("dynamic_partition_enable" = "true"); `\n')),(0,n.kt)("p",{parentName:"li"},"Afterwards, you can view the modified value with the following command:"),(0,n.kt)("pre",{parentName:"li"},(0,n.kt)("code",{parentName:"pre"},"set forward_to_master = true;\nADMIN SHOW FRONTEND CONFIG;\n")),(0,n.kt)("p",{parentName:"li"},"After modification in the above manner, if the Master FE restarts or a Master election is performed, the configuration will be invalid. You can add the configuration item directly in ",(0,n.kt)("inlineCode",{parentName:"p"},"fe.conf")," and restart the FE to make the configuration item permanent.")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Modify ",(0,n.kt)("inlineCode",{parentName:"p"},"max_distribution_pruner_recursion_depth")),(0,n.kt)("p",{parentName:"li"},"Through ",(0,n.kt)("inlineCode",{parentName:"p"},"ADMIN SHOW FRONTEND CONFIG;")," you can see that the configuration item can be dynamically configured (",(0,n.kt)("inlineCode",{parentName:"p"},"IsMutable")," is true). It is not unique to Master FE."),(0,n.kt)("p",{parentName:"li"},"Similarly, we can modify the configuration by dynamically modifying the configuration command. Because this configuration is not unique to the Master FE, user need to connect to different FEs separately to modify the configuration dynamically, so that all FEs use the modified configuration values."))),(0,n.kt)("h2",{id:"configurations"},"Configurations"),(0,n.kt)("h3",{id:"metadata-and-cluster"},"Metadata And Cluster"),(0,n.kt)("h4",{id:"meta_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"meta_dir")),(0,n.kt)("p",null,'Default\uff1aDORIS_HOME_DIR + "/doris-meta"'),(0,n.kt)("p",null,"Type: string Description: Doris meta data will be saved here.The storage of this dir is highly recommended as to be:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"High write performance (SSD)"),(0,n.kt)("li",{parentName:"ul"},"Safe (RAID\uff09")),(0,n.kt)("h4",{id:"catalog_try_lock_timeout_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"catalog_try_lock_timeout_ms")),(0,n.kt)("p",null,"Default\uff1a5000  \uff08ms\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"The tryLock timeout configuration of catalog lock.  Normally it does not need to change, unless you need to test something."),(0,n.kt)("h4",{id:"enable_bdbje_debug_mode"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_bdbje_debug_mode")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"If set to true, FE will be started in BDBJE debug mode"),(0,n.kt)("h4",{id:"max_bdbje_clock_delta_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_bdbje_clock_delta_ms")),(0,n.kt)("p",null,"Default\uff1a5000 \uff085s\uff09"),(0,n.kt)("p",null,"Set the maximum acceptable clock skew between non-master FE to Master FE host. This value is checked whenever a non-master FE establishes a connection to master FE via BDBJE. The connection is abandoned if the clock skew is larger than this value."),(0,n.kt)("h4",{id:"metadata_failure_recovery"},(0,n.kt)("inlineCode",{parentName:"h4"},"metadata_failure_recovery")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"If true, FE will reset bdbje replication group(that is, to remove all electable nodes info)  and is supposed to start as Master.  If all the electable nodes can not start, we can copy the meta data to another node and set this config to true to try to restart the FE.."),(0,n.kt)("h4",{id:"txn_rollback_limit"},(0,n.kt)("inlineCode",{parentName:"h4"},"txn_rollback_limit")),(0,n.kt)("p",null,"Default\uff1a100"),(0,n.kt)("p",null,"the max txn number which bdbje can rollback when trying to rejoin the group"),(0,n.kt)("h4",{id:"grpc_threadmgr_threads_nums"},(0,n.kt)("inlineCode",{parentName:"h4"},"grpc_threadmgr_threads_nums")),(0,n.kt)("p",null,"Default: 4096"),(0,n.kt)("p",null,"Num of thread to handle grpc events in grpc_threadmgr."),(0,n.kt)("h4",{id:"bdbje_replica_ack_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"bdbje_replica_ack_timeout_second")),(0,n.kt)("p",null,"Default\uff1a10  (s)"),(0,n.kt)("p",null,"The replica ack timeout when writing to bdbje \uff0c When writing some relatively large logs, the ack time may time out, resulting in log writing failure.  At this time, you can increase this value appropriately."),(0,n.kt)("h4",{id:"bdbje_lock_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"bdbje_lock_timeout_second")),(0,n.kt)("p",null,"Default\uff1a5"),(0,n.kt)("p",null,"The lock timeout of bdbje operation\uff0c If there are many LockTimeoutException in FE WARN log, you can try to increase this value"),(0,n.kt)("h4",{id:"bdbje_heartbeat_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"bdbje_heartbeat_timeout_second")),(0,n.kt)("p",null,"Default\uff1a30"),(0,n.kt)("p",null,"The heartbeat timeout of bdbje between master and follower. the default is 30 seconds, which is same as default value in bdbje. If the network is experiencing transient problems, of some unexpected long java GC annoying you,  you can try to increase this value to decrease the chances of false timeouts"),(0,n.kt)("h4",{id:"replica_ack_policy"},(0,n.kt)("inlineCode",{parentName:"h4"},"replica_ack_policy")),(0,n.kt)("p",null,"Default\uff1aSIMPLE_MAJORITY"),(0,n.kt)("p",null,"OPTION\uff1aALL, NONE, SIMPLE_MAJORITY"),(0,n.kt)("p",null,"Replica ack policy of bdbje. more info, see: ",(0,n.kt)("a",{parentName:"p",href:"http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/Durability.ReplicaAckPolicy.html"},"http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/Durability.ReplicaAckPolicy.html")),(0,n.kt)("h4",{id:"replica_sync_policy"},(0,n.kt)("inlineCode",{parentName:"h4"},"replica_sync_policy")),(0,n.kt)("p",null,"Default\uff1aSYNC"),(0,n.kt)("p",null,"\u9009\u9879\uff1aSYNC, NO_SYNC, WRITE_NO_SYNC"),(0,n.kt)("p",null,"Follower FE sync policy of bdbje."),(0,n.kt)("h4",{id:"master_sync_policy"},(0,n.kt)("inlineCode",{parentName:"h4"},"master_sync_policy")),(0,n.kt)("p",null,"Default\uff1aSYNC"),(0,n.kt)("p",null,"\u9009\u9879\uff1aSYNC, NO_SYNC, WRITE_NO_SYNC"),(0,n.kt)("p",null,"Master FE sync policy of bdbje. If you only deploy one Follower FE, set this to 'SYNC'. If you deploy more than 3 Follower FE,  you can set this and the following 'replica_sync_policy' to WRITE_NO_SYNC.  more info, see: ",(0,n.kt)("a",{parentName:"p",href:"http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/Durability.SyncPolicy.html"},"http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/Durability.SyncPolicy.html")),(0,n.kt)("h4",{id:"bdbje_reserved_disk_bytes"},(0,n.kt)("inlineCode",{parentName:"h4"},"bdbje_reserved_disk_bytes")),(0,n.kt)("p",null,"The desired upper limit on the number of bytes of reserved space to retain in a replicated JE Environment."),(0,n.kt)("p",null,"Default: 1073741824"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: false"),(0,n.kt)("h4",{id:"ignore_meta_check"},(0,n.kt)("inlineCode",{parentName:"h4"},"ignore_meta_check")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"If true, non-master FE will ignore the meta data delay gap between Master FE and its self,  even if the metadata delay gap exceeds ",(0,n.kt)("em",{parentName:"p"},"meta_delay_toleration_second"),".  Non-master FE will still offer read service.\nThis is helpful when you try to stop the Master FE for a relatively long time for some reason,  but still wish the non-master FE can offer read service."),(0,n.kt)("h4",{id:"meta_delay_toleration_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"meta_delay_toleration_second")),(0,n.kt)("p",null,"Default\uff1a300 \uff085 min\uff09"),(0,n.kt)("p",null,"Non-master FE will stop offering service  if meta data delay gap exceeds ",(0,n.kt)("em",{parentName:"p"},"meta_delay_toleration_second")),(0,n.kt)("h4",{id:"edit_log_port"},(0,n.kt)("inlineCode",{parentName:"h4"},"edit_log_port")),(0,n.kt)("p",null,"Default\uff1a9010"),(0,n.kt)("p",null,"bdbje port"),(0,n.kt)("h4",{id:"edit_log_type"},(0,n.kt)("inlineCode",{parentName:"h4"},"edit_log_type")),(0,n.kt)("p",null,"Default\uff1aBDB"),(0,n.kt)("p",null,"Edit log type.\nBDB: write log to bdbje\nLOCAL: deprecated.."),(0,n.kt)("h4",{id:"edit_log_roll_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"edit_log_roll_num")),(0,n.kt)("p",null,"Default\uff1a50000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Master FE will save image every ",(0,n.kt)("em",{parentName:"p"},"edit_log_roll_num")," meta journals."),(0,n.kt)("h4",{id:"force_do_metadata_checkpoint"},(0,n.kt)("inlineCode",{parentName:"h4"},"force_do_metadata_checkpoint")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"If set to true, the checkpoint thread will make the checkpoint regardless of the jvm memory used percent"),(0,n.kt)("h4",{id:"metadata_checkpoint_memory_threshold"},(0,n.kt)("inlineCode",{parentName:"h4"},"metadata_checkpoint_memory_threshold")),(0,n.kt)("p",null,"Default\uff1a60  \uff0860%\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"If the jvm memory used percent(heap or old mem pool) exceed this threshold, checkpoint thread will  not work to avoid OOM."),(0,n.kt)("h4",{id:"max_same_name_catalog_trash_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_same_name_catalog_trash_num")),(0,n.kt)("p",null,"It is used to set the maximum number of meta information with the same name in the catalog recycle bin. When the maximum value is exceeded, the earliest deleted meta trash will be completely deleted and cannot be recovered. 0 means not to keep objects of the same name. < 0 means no limit."),(0,n.kt)("p",null,"Note: The judgment of metadata with the same name will be limited to a certain range. For example, the judgment of the database with the same name will be limited to the same cluster, the judgment of the table with the same name will be limited to the same database (with the same database id), the judgment of the partition with the same name will be limited to the same database (with the same database id) and the same table (with the same table) same table id)."),(0,n.kt)("p",null,"Default: 3"),(0,n.kt)("p",null,"Is it possible to dynamically configure: true"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"cluster_id"},(0,n.kt)("inlineCode",{parentName:"h4"},"cluster_id")),(0,n.kt)("p",null,"Default\uff1a-1"),(0,n.kt)("p",null,"node(FE or BE) will be considered belonging to the same Palo cluster if they have same cluster id.  Cluster id is usually a random integer generated when master FE start at first time. You can also specify one."),(0,n.kt)("h4",{id:"heartbeat_mgr_blocking_queue_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"heartbeat_mgr_blocking_queue_size")),(0,n.kt)("p",null,"Default\uff1a1024"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"blocking queue size to store heartbeat task in heartbeat_mgr."),(0,n.kt)("h4",{id:"heartbeat_mgr_threads_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"heartbeat_mgr_threads_num")),(0,n.kt)("p",null,"Default\uff1a8"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"num of thread to handle heartbeat events in heartbeat_mgr."),(0,n.kt)("h4",{id:"disable_cluster_feature"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_cluster_feature")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"The multi cluster feature will be deprecated in version 0.12 \uff0cset this config to true will disable all operations related to cluster feature, include:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"create/drop cluster"),(0,n.kt)("li",{parentName:"ol"},"add free backend/add backend to cluster/decommission cluster balance"),(0,n.kt)("li",{parentName:"ol"},"change the backends num of cluster"),(0,n.kt)("li",{parentName:"ol"},"link/migration db")),(0,n.kt)("h4",{id:"enable_deploy_manager"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_deploy_manager")),(0,n.kt)("p",null,"Default\uff1adisable"),(0,n.kt)("p",null,"Set to true if you deploy Doris using thirdparty deploy manager"),(0,n.kt)("p",null,"Valid options are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"disable:    no deploy manager"),(0,n.kt)("li",{parentName:"ul"},"k8s:        Kubernetes"),(0,n.kt)("li",{parentName:"ul"},"ambari:     Ambari"),(0,n.kt)("li",{parentName:"ul"},"local:      Local File (for test or Boxer2 BCC version)")),(0,n.kt)("h4",{id:"with_k8s_certs"},(0,n.kt)("inlineCode",{parentName:"h4"},"with_k8s_certs")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"If use k8s deploy manager locally, set this to true and prepare the certs files"),(0,n.kt)("h4",{id:"enable_fqdn_mode"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_fqdn_mode")),(0,n.kt)("p",null,"This configuration is mainly used in the k8s cluster environment. When enable_fqdn_mode is true, the name of the pod where the be is located will remain unchanged after reconstruction, while the ip can be changed."),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"enable_token_check"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_token_check")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"For forward compatibility, will be removed later. check token when download image file."),(0,n.kt)("h4",{id:"enable_multi_tags"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_multi_tags")),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: true"),(0,n.kt)("p",null,"Whether to enable the multi-tags function of a single BE"),(0,n.kt)("h4",{id:"initial_root_password"},(0,n.kt)("inlineCode",{parentName:"h4"},"initial_root_password")),(0,n.kt)("p",null,"Set root user initial 2-staged SHA-1 encrypted password, default as '', means no root password. Subsequent ",(0,n.kt)("inlineCode",{parentName:"p"},"set password")," operations for root user will overwrite the initial root password."),(0,n.kt)("p",null,"Example: If you want to configure a plaintext password ",(0,n.kt)("inlineCode",{parentName:"p"},"root@123"),". You can execute Doris SQL ",(0,n.kt)("inlineCode",{parentName:"p"},"select password('root@123')")," to generate encrypted password ",(0,n.kt)("inlineCode",{parentName:"p"},"*A00C34073A26B40AB4307650BFB9309D6BFA6999"),"."),(0,n.kt)("p",null,"Default: empty string"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: true"),(0,n.kt)("h3",{id:"service"},"Service"),(0,n.kt)("h4",{id:"query_port"},(0,n.kt)("inlineCode",{parentName:"h4"},"query_port")),(0,n.kt)("p",null,"Default\uff1a9030"),(0,n.kt)("p",null,"FE MySQL server port"),(0,n.kt)("h4",{id:"arrow_flight_sql_port"},(0,n.kt)("inlineCode",{parentName:"h4"},"arrow_flight_sql_port")),(0,n.kt)("p",null,"Default\uff1a-1"),(0,n.kt)("p",null,"Arrow Flight SQL server port"),(0,n.kt)("h4",{id:"frontend_address"},(0,n.kt)("inlineCode",{parentName:"h4"},"frontend_address")),(0,n.kt)("p",null,"Status: Deprecated, not recommended use. This parameter may be deleted later"),(0,n.kt)("p",null,"Type: string"),(0,n.kt)("p",null,"Description: Explicitly set the IP address of FE instead of using ",(0,n.kt)("em",{parentName:"p"},"InetAddress.getByName")," to get the IP address. Usually in ",(0,n.kt)("em",{parentName:"p"},"InetAddress.getByName")," When the expected results cannot be obtained. Only IP address is supported, not hostname."),(0,n.kt)("p",null,"Default value: 0.0.0.0"),(0,n.kt)("h4",{id:"priority_networks"},(0,n.kt)("inlineCode",{parentName:"h4"},"priority_networks")),(0,n.kt)("p",null,"Default\uff1anone"),(0,n.kt)("p",null,"Declare a selection strategy for those servers have many ips.  Note that there should at most one ip match this list.  this is a list in semicolon-delimited format, in CIDR notation, e.g. 10.10.10.0/24 \uff0c If no ip match this rule, will choose one randomly."),(0,n.kt)("h4",{id:"http_port"},(0,n.kt)("inlineCode",{parentName:"h4"},"http_port")),(0,n.kt)("p",null,"Default\uff1a8030"),(0,n.kt)("p",null,"HTTP bind port. All FE http ports must be same currently."),(0,n.kt)("h4",{id:"https_port"},(0,n.kt)("inlineCode",{parentName:"h4"},"https_port")),(0,n.kt)("p",null,"Default\uff1a8050"),(0,n.kt)("p",null,"HTTPS bind port. All FE https ports must be same currently."),(0,n.kt)("h4",{id:"enable_https"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_https")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"Https enable flag. If the value is false, http is supported. Otherwise, both http and https are supported, and http requests are automatically redirected to https.\nIf enable_https is true, you need to configure ssl certificate information in fe.conf."),(0,n.kt)("h4",{id:"enable_ssl"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_ssl")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"If set to ture, doris will establish an encrypted channel based on the SSL protocol with mysql."),(0,n.kt)("h4",{id:"qe_max_connection"},(0,n.kt)("inlineCode",{parentName:"h4"},"qe_max_connection")),(0,n.kt)("p",null,"Default\uff1a1024"),(0,n.kt)("p",null,"Maximal number of connections per FE."),(0,n.kt)("h4",{id:"check_java_version"},(0,n.kt)("inlineCode",{parentName:"h4"},"check_java_version")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"Doris will check whether the compiled and run Java versions are compatible, if not, it will throw a Java version mismatch exception message and terminate the startup"),(0,n.kt)("h4",{id:"rpc_port"},(0,n.kt)("inlineCode",{parentName:"h4"},"rpc_port")),(0,n.kt)("p",null,"Default\uff1a9020"),(0,n.kt)("p",null,"FE Thrift Server port"),(0,n.kt)("h4",{id:"thrift_server_type"},(0,n.kt)("inlineCode",{parentName:"h4"},"thrift_server_type")),(0,n.kt)("p",null,"This configuration represents the service model used by The Thrift Service of FE, is of type String and is case-insensitive."),(0,n.kt)("p",null,"If this parameter is 'SIMPLE', then the 'TSimpleServer' model is used, which is generally not suitable for production and is limited to test use."),(0,n.kt)("p",null,"If the parameter is 'THREADED', then the 'TThreadedSelectorServer' model is used, which is a non-blocking I/O model, namely the master-slave Reactor model, which can timely respond to a large number of concurrent connection requests and performs well in most scenarios."),(0,n.kt)("p",null,"If this parameter is ",(0,n.kt)("inlineCode",{parentName:"p"},"THREAD_POOL"),", then the ",(0,n.kt)("inlineCode",{parentName:"p"},"TThreadPoolServer")," model is used, the model for blocking I/O model, use the thread pool to handle user connections, the number of simultaneous connections are limited by the number of thread pool, if we can estimate the number of concurrent requests in advance, and tolerant enough thread resources cost, this model will have a better performance, the service model is used by default"),(0,n.kt)("h4",{id:"thrift_server_max_worker_threads"},(0,n.kt)("inlineCode",{parentName:"h4"},"thrift_server_max_worker_threads")),(0,n.kt)("p",null,"Default\uff1a4096"),(0,n.kt)("p",null,"The thrift server max worker threads"),(0,n.kt)("h4",{id:"thrift_backlog_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"thrift_backlog_num")),(0,n.kt)("p",null,"Default\uff1a1024"),(0,n.kt)("p",null,"The backlog_num for thrift server \uff0c When you enlarge this backlog_num, you should ensure it's value larger than the linux /proc/sys/net/core/somaxconn config"),(0,n.kt)("h4",{id:"thrift_client_timeout_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"thrift_client_timeout_ms")),(0,n.kt)("p",null,"Default\uff1a0"),(0,n.kt)("p",null,"The connection timeout and socket timeout config for thrift server."),(0,n.kt)("p",null,"The value for thrift_client_timeout_ms is set to be zero to prevent read timeout."),(0,n.kt)("h4",{id:"use_compact_thrift_rpc"},(0,n.kt)("inlineCode",{parentName:"h4"},"use_compact_thrift_rpc")),(0,n.kt)("p",null,"Default: true"),(0,n.kt)("p",null,'Whether to use compressed format to send query plan structure. After it is turned on, the size of the query plan structure can be reduced by about 50%, thereby avoiding some "send fragment timeout" errors.\nHowever, in some high-concurrency small query scenarios, the concurrency may be reduced by about 10%.'),(0,n.kt)("h4",{id:"grpc_max_message_size_bytes"},(0,n.kt)("inlineCode",{parentName:"h4"},"grpc_max_message_size_bytes")),(0,n.kt)("p",null,"Default\uff1a1G"),(0,n.kt)("p",null,"Used to set the initial flow window size of the GRPC client channel, and also used to max message size.  When the result set is large, you may need to increase this value."),(0,n.kt)("h4",{id:"max_mysql_service_task_threads_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_mysql_service_task_threads_num")),(0,n.kt)("p",null,"Default\uff1a4096"),(0,n.kt)("p",null,"The number of threads responsible for Task events."),(0,n.kt)("h4",{id:"mysql_service_io_threads_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"mysql_service_io_threads_num")),(0,n.kt)("p",null,"Default\uff1a4"),(0,n.kt)("p",null,"When FE starts the MySQL server based on NIO model, the number of threads responsible for IO events."),(0,n.kt)("h4",{id:"mysql_nio_backlog_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"mysql_nio_backlog_num")),(0,n.kt)("p",null,"Default\uff1a1024"),(0,n.kt)("p",null,"The backlog_num for mysql nio server, When you enlarge this backlog_num, you should enlarge the value in the linux /proc/sys/net/core/somaxconn file at the same time"),(0,n.kt)("h4",{id:"broker_timeout_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"broker_timeout_ms")),(0,n.kt)("p",null,"Default\uff1a10000   \uff0810s\uff09"),(0,n.kt)("p",null,"Default broker RPC timeout"),(0,n.kt)("h4",{id:"backend_rpc_timeout_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"backend_rpc_timeout_ms")),(0,n.kt)("p",null,"Timeout millisecond for Fe sending rpc request to BE"),(0,n.kt)("p",null,"Default: 60000"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"drop_backend_after_decommission"},(0,n.kt)("inlineCode",{parentName:"h4"},"drop_backend_after_decommission")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"This configuration is used to control whether the system drops the BE after successfully decommissioning the BE. If true, the BE node will be deleted after the BE is successfully offline. If false, after the BE successfully goes offline, the BE will remain in the DECOMMISSION state, but will not be dropped."),(0,n.kt)("p",{parentName:"li"},"This configuration can play a role in certain scenarios. Assume that the initial state of a Doris cluster is one disk per BE node. After running for a period of time, the system has been vertically expanded, that is, each BE node adds 2 new disks. Because Doris currently does not support data balancing among the disks within the BE, the data volume of the initial disk may always be much higher than the data volume of the newly added disk. At this time, we can perform manual inter-disk balancing by the following operations:"),(0,n.kt)("ol",{parentName:"li"},(0,n.kt)("li",{parentName:"ol"},"Set the configuration item to false."),(0,n.kt)("li",{parentName:"ol"},"Perform a decommission operation on a certain BE node. This operation will migrate all data on the BE to other nodes."),(0,n.kt)("li",{parentName:"ol"},"After the decommission operation is completed, the BE will not be dropped. At this time, cancel the decommission status of the BE. Then the data will start to balance from other BE nodes back to this node. At this time, the data will be evenly distributed to all disks of the BE."),(0,n.kt)("li",{parentName:"ol"},"Perform steps 2 and 3 for all BE nodes in sequence, and finally achieve the purpose of disk balancing for all nodes")))),(0,n.kt)("h4",{id:"max_backend_down_time_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_backend_down_time_second")),(0,n.kt)("p",null,"Default\uff1a3600  \uff081 hour\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"If a backend is down for ",(0,n.kt)("em",{parentName:"p"},"max_backend_down_time_second"),", a BACKEND_DOWN event will be triggered."),(0,n.kt)("h4",{id:"disable_backend_black_list"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_backend_black_list")),(0,n.kt)("p",null,"Used to disable the BE blacklist function. After this function is disabled, if the query request to the BE fails, the BE will not be added to the blacklist.\nThis parameter is suitable for regression testing environments to reduce occasional bugs that cause a large number of regression tests to fail."),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"Is it possible to configure dynamically: true"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: false"),(0,n.kt)("h4",{id:"max_backend_heartbeat_failure_tolerance_count"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_backend_heartbeat_failure_tolerance_count")),(0,n.kt)("p",null,"The maximum tolerable number of BE node heartbeat failures. If the number of consecutive heartbeat failures exceeds this value, the BE state will be set to dead.\nThis parameter is suitable for regression test environments to reduce occasional heartbeat failures that cause a large number of regression test failures."),(0,n.kt)("p",null,"Default: 1"),(0,n.kt)("p",null,"Is it possible to configure dynamically: true"),(0,n.kt)("p",null,"Whether it is a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"enable_access_file_without_broker"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_access_file_without_broker")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This config is used to try skip broker when access bos or other cloud storage via broker"),(0,n.kt)("h4",{id:"agent_task_resend_wait_time_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"agent_task_resend_wait_time_ms")),(0,n.kt)("p",null,"Default\uff1a5000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This configuration will decide whether to resend agent task when create_time for agent_task is set, only when current_time - create_time > agent_task_resend_wait_time_ms can ReportHandler do resend agent task."),(0,n.kt)("p",null,"This configuration is currently mainly used to solve the problem of repeated sending of ",(0,n.kt)("inlineCode",{parentName:"p"},"PUBLISH_VERSION")," agent tasks. The current default value of this configuration is 5000, which is an experimental value."),(0,n.kt)("p",null,"Because there is a certain time delay between submitting agent tasks to AgentTaskQueue and submitting to be, Increasing the value of this configuration can effectively solve the problem of repeated sending of agent tasks,"),(0,n.kt)("p",null,"But at the same time, it will cause the submission of failed or failed execution of the agent task to be executed again for an extended period of time"),(0,n.kt)("h4",{id:"max_agent_task_threads_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_agent_task_threads_num")),(0,n.kt)("p",null,"Default\uff1a4096"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"max num of thread to handle agent task in agent task thread-pool."),(0,n.kt)("h4",{id:"remote_fragment_exec_timeout_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"remote_fragment_exec_timeout_ms")),(0,n.kt)("p",null,"Default\uff1a30000  \uff08ms\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"The timeout of executing async remote fragment.  In normal case, the async remote fragment will be executed in a short time. If system are under high load condition\uff0ctry to set this timeout longer."),(0,n.kt)("h4",{id:"auth_token"},(0,n.kt)("inlineCode",{parentName:"h4"},"auth_token")),(0,n.kt)("p",null,"Default\uff1aempty"),(0,n.kt)("p",null,"Cluster token used for internal authentication."),(0,n.kt)("h4",{id:"enable_http_server_v2"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_http_server_v2")),(0,n.kt)("p",null,"Default\uff1aThe default is true after the official 0.14.0 version is released, and the default is false before"),(0,n.kt)("p",null,"HTTP Server V2 is implemented by SpringBoot. It uses an architecture that separates the front and back ends. Only when httpv2 is enabled can users use the new front-end UI interface."),(0,n.kt)("h4",{id:"http_api_extra_base_path"},(0,n.kt)("inlineCode",{parentName:"h4"},"http_api_extra_base_path")),(0,n.kt)("p",null,"In some deployment environments, user need to specify an additional base path as the unified prefix of the HTTP API. This parameter is used by the user to specify additional prefixes.\nAfter setting, user can get the parameter value through the ",(0,n.kt)("inlineCode",{parentName:"p"},"GET /api/basepath")," interface. And the new UI will also try to get this base path first to assemble the URL. Only valid when ",(0,n.kt)("inlineCode",{parentName:"p"},"enable_http_server_v2")," is true."),(0,n.kt)("p",null,"The default is empty, that is, not set"),(0,n.kt)("h4",{id:"jetty_server_acceptors"},(0,n.kt)("inlineCode",{parentName:"h4"},"jetty_server_acceptors")),(0,n.kt)("p",null,"Default\uff1a2"),(0,n.kt)("h4",{id:"jetty_server_selectors"},(0,n.kt)("inlineCode",{parentName:"h4"},"jetty_server_selectors")),(0,n.kt)("p",null,"Default\uff1a4"),(0,n.kt)("h4",{id:"jetty_server_workers"},(0,n.kt)("inlineCode",{parentName:"h4"},"jetty_server_workers")),(0,n.kt)("p",null,"Default\uff1a0"),(0,n.kt)("p",null,"With the above three parameters, Jetty's thread architecture model is very simple, divided into acceptors, selectors and workers three thread pools. Acceptors are responsible for accepting new connections, and then hand them over to selectors to process the unpacking of the HTTP message protocol, and finally workers process the request. The first two thread pools adopt a non-blocking model, and one thread can handle the read and write of many sockets, so the number of thread pools is small."),(0,n.kt)("p",null,"For most projects, only 1-2 acceptors threads are required, and 2 to 4 selectors threads are sufficient. Workers are obstructive business logic, often have more database operations, and require a large number of threads. The specific number depends on the proportion of QPS and IO events of the application. The higher the QPS, the more threads are required, the higher the proportion of IO, the more threads waiting, and the more total threads required."),(0,n.kt)("p",null,"Worker thread pool is not set by default, set according to your needs"),(0,n.kt)("h4",{id:"jetty_server_max_http_post_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"jetty_server_max_http_post_size")),(0,n.kt)("p",null,"Default\uff1a",(0,n.kt)("inlineCode",{parentName:"p"},"100 * 1024 * 1024"),"  \uff08100MB\uff09"),(0,n.kt)("p",null,"This is the maximum number of bytes of the file uploaded by the put or post method, the default value: 100MB"),(0,n.kt)("h4",{id:"jetty_server_max_http_header_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"jetty_server_max_http_header_size")),(0,n.kt)("p",null,"Default\uff1a1048576  \uff081M\uff09"),(0,n.kt)("p",null,"http header size configuration parameter, the default value is 1M."),(0,n.kt)("h3",{id:"query-engine"},"Query Engine"),(0,n.kt)("h4",{id:"default_max_query_instances"},(0,n.kt)("inlineCode",{parentName:"h4"},"default_max_query_instances")),(0,n.kt)("p",null,"The default value when user property max_query_instances is equal or less than 0. This config is used to limit the max number of instances for a user. This parameter is less than or equal to 0 means unlimited."),(0,n.kt)("p",null,"The default value is -1"),(0,n.kt)("h4",{id:"max_query_retry_time"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_query_retry_time")),(0,n.kt)("p",null,"Default\uff1a1"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"The number of query retries.  A query may retry if we encounter RPC exception and no result has been sent to user.  You may reduce this number to avoid Avalanche disaster"),(0,n.kt)("h4",{id:"max_dynamic_partition_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_dynamic_partition_num")),(0,n.kt)("p",null,"Default\uff1a500"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,'Used to limit the maximum number of partitions that can be created when creating a dynamic partition table,  to avoid creating too many partitions at one time. The number is determined by "start" and "end" in the dynamic partition parameters.'),(0,n.kt)("h4",{id:"dynamic_partition_enable"},(0,n.kt)("inlineCode",{parentName:"h4"},"dynamic_partition_enable")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Whether to enable dynamic partition scheduler, enabled by default"),(0,n.kt)("h4",{id:"dynamic_partition_check_interval_seconds"},(0,n.kt)("inlineCode",{parentName:"h4"},"dynamic_partition_check_interval_seconds")),(0,n.kt)("p",null,"Default\uff1a600 \uff08s\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Decide how often to check dynamic partition"),(0,n.kt)("version",{since:"1.2.0"},(0,n.kt)("h4",{id:"max_multi_partition_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_multi_partition_num")),(0,n.kt)("p",null,"Default\uff1a4096"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,'Use this parameter to set the partition name prefix for multi partition,Only multi partition takes effect, not dynamic partitions. The default prefix is "p_".')),(0,n.kt)("h4",{id:"multi_partition_name_prefix"},(0,n.kt)("inlineCode",{parentName:"h4"},"multi_partition_name_prefix")),(0,n.kt)("p",null,"Default\uff1ap_"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,'Use this parameter to set the partition name prefix for multi partition, Only multi partition takes effect, not dynamic partitions.The default prefix is "p_".'),(0,n.kt)("h4",{id:"partition_in_memory_update_interval_secs"},(0,n.kt)("inlineCode",{parentName:"h4"},"partition_in_memory_update_interval_secs")),(0,n.kt)("p",null,"Default\uff1a300 (s)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Time to update global partition information in memory"),(0,n.kt)("h4",{id:"enable_concurrent_update"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_concurrent_update")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1afalse"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Whether to enable concurrent update"),(0,n.kt)("h4",{id:"lower_case_table_names"},(0,n.kt)("inlineCode",{parentName:"h4"},"lower_case_table_names")),(0,n.kt)("p",null,"Default\uff1a0"),(0,n.kt)("p",null,"IsMutable\uff1afalse"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This configuration can only be configured during cluster initialization and cannot be modified during cluster\nrestart and upgrade after initialization is complete."),(0,n.kt)("p",null,"0: table names are stored as specified and comparisons are case sensitive.\n1: table names are stored in lowercase and comparisons are not case sensitive.\n2: table names are stored as given but compared in lowercase."),(0,n.kt)("h4",{id:"table_name_length_limit"},(0,n.kt)("inlineCode",{parentName:"h4"},"table_name_length_limit")),(0,n.kt)("p",null,"Default\uff1a64"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Used to control the maximum table name length"),(0,n.kt)("h4",{id:"cache_enable_sql_mode"},(0,n.kt)("inlineCode",{parentName:"h4"},"cache_enable_sql_mode")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"If this switch is turned on, the SQL query result set will be cached. If the interval between the last visit version time in all partitions of all tables in the query is greater than cache_last_version_interval_second, and the result set is less than cache_result_max_row_count, and the data size is less than cache_result_max_data_size, the result set will be cached, and the next same SQL will hit the cache"),(0,n.kt)("p",null,"If set to true, fe will enable sql result caching. This option is suitable for offline data update scenarios"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null}),(0,n.kt)("th",{parentName:"tr",align:null},"case1"),(0,n.kt)("th",{parentName:"tr",align:null},"case2"),(0,n.kt)("th",{parentName:"tr",align:null},"case3"),(0,n.kt)("th",{parentName:"tr",align:null},"case4"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"enable_sql_cache"),(0,n.kt)("td",{parentName:"tr",align:null},"false"),(0,n.kt)("td",{parentName:"tr",align:null},"true"),(0,n.kt)("td",{parentName:"tr",align:null},"true"),(0,n.kt)("td",{parentName:"tr",align:null},"false")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"enable_partition_cache"),(0,n.kt)("td",{parentName:"tr",align:null},"false"),(0,n.kt)("td",{parentName:"tr",align:null},"false"),(0,n.kt)("td",{parentName:"tr",align:null},"true"),(0,n.kt)("td",{parentName:"tr",align:null},"true")))),(0,n.kt)("h4",{id:"cache_enable_partition_mode"},(0,n.kt)("inlineCode",{parentName:"h4"},"cache_enable_partition_mode")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"If set to true, fe will get data from be cache, This option is suitable for real-time updating of partial partitions."),(0,n.kt)("h4",{id:"cache_result_max_row_count"},(0,n.kt)("inlineCode",{parentName:"h4"},"cache_result_max_row_count")),(0,n.kt)("p",null,"Default\uff1a3000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"In order to avoid occupying too much memory, the maximum number of rows that can be cached is 3000 by default. If this threshold is exceeded, the cache cannot be set"),(0,n.kt)("h4",{id:"cache_result_max_data_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"cache_result_max_data_size")),(0,n.kt)("p",null,"Default: 31457280"),(0,n.kt)("p",null,"IsMutable: true"),(0,n.kt)("p",null,"MasterOnly: false"),(0,n.kt)("p",null,"In order to avoid occupying too much memory, the maximum data size of rows that can be cached is 10MB by default. If this threshold is exceeded, the cache cannot be set"),(0,n.kt)("h4",{id:"cache_last_version_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"cache_last_version_interval_second")),(0,n.kt)("p",null,"Default\uff1a30"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"The time interval of the latest partitioned version of the table refers to the time interval between the data update and the current version. It is generally set to 900 seconds, which distinguishes offline and real-time import"),(0,n.kt)("h4",{id:"enable_batch_delete_by_default"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_batch_delete_by_default")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Whether to add a delete sign column when create unique table"),(0,n.kt)("h4",{id:"max_allowed_in_element_num_of_delete"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_allowed_in_element_num_of_delete")),(0,n.kt)("p",null,"Default\uff1a1024"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This configuration is used to limit element num of InPredicate in delete statement."),(0,n.kt)("h4",{id:"max_running_rollup_job_num_per_table"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_running_rollup_job_num_per_table")),(0,n.kt)("p",null,"Default\uff1a1"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Control the concurrency limit of Rollup jobs"),(0,n.kt)("h4",{id:"max_distribution_pruner_recursion_depth"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_distribution_pruner_recursion_depth")),(0,n.kt)("p",null,"Default\uff1a100"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"This will limit the max recursion depth of hash distribution pruner.\neg: where a in (5 elements) and b in (4 elements) and c in (3 elements) and d in (2 elements).\na/b/c/d are distribution columns, so the recursion depth will be 5 ",(0,n.kt)("em",{parentName:"p"}," 4 ")," 3 * 2 = 120, larger than 100,\nSo that distribution pruner will no work and just return all buckets.\nIncrease the depth can support distribution pruning for more elements, but may cost more CPU."),(0,n.kt)("h4",{id:"enable_local_replica_selection"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_local_replica_selection")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"If set to true, Planner will try to select replica of tablet on same host as this Frontend.\nThis may reduce network transmission in following case:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"N hosts with N Backends and N Frontends deployed.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The data has N replicas.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"High concurrency queries are syyuyuient to all Frontends evenly"))),(0,n.kt)("p",null,"In this case, all Frontends can only use local replicas to do the query. If you want to allow fallback to nonlocal replicas when no local replicas available, set enable_local_replica_selection_fallback to true."),(0,n.kt)("h4",{id:"enable_local_replica_selection_fallback"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_local_replica_selection_fallback")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"Used with enable_local_replica_selection. If the local replicas is not available, fallback to the nonlocal replicas."),(0,n.kt)("h4",{id:"expr_depth_limit"},(0,n.kt)("inlineCode",{parentName:"h4"},"expr_depth_limit")),(0,n.kt)("p",null,"Default\uff1a3000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"Limit on the depth of an expr tree.  Exceed this limit may cause long analysis time while holding db read lock.  Do not set this if you know what you are doing"),(0,n.kt)("h4",{id:"expr_children_limit"},(0,n.kt)("inlineCode",{parentName:"h4"},"expr_children_limit")),(0,n.kt)("p",null,"Default\uff1a10000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"Limit on the number of expr children of an expr tree.  Exceed this limit may cause long analysis time while holding database read lock."),(0,n.kt)("h4",{id:"be_exec_version"},(0,n.kt)("inlineCode",{parentName:"h4"},"be_exec_version")),(0,n.kt)("p",null,"Used to define the serialization format for passing blocks between fragments."),(0,n.kt)("p",null,"Sometimes some of our code changes will change the data format of the block. In order to make the BE compatible with each other during the rolling upgrade process, we need to issue a data version from the FE to decide what format to send the data in."),(0,n.kt)("p",null,"Specifically, for example, there are 2 BEs in the cluster, one of which can support the latest $v_1$ after being upgraded, while the other only supports $v_0$. At this time, since the FE has not been upgraded yet, $v_0 is issued uniformly. $, BE interact in the old data format. After all BEs are upgraded, we will upgrade FE. At this time, the new FE will issue $v_1$, and the cluster will be uniformly switched to the new data format."),(0,n.kt)("p",null,"The default value is ",(0,n.kt)("inlineCode",{parentName:"p"},"max_be_exec_version"),". If there are special needs, we can manually set the format version to lower, but it should not be lower than ",(0,n.kt)("inlineCode",{parentName:"p"},"min_be_exec_version"),"."),(0,n.kt)("p",null,"Note that we should always keep the value of this variable between ",(0,n.kt)("inlineCode",{parentName:"p"},"BeExecVersionManager::min_be_exec_version")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"BeExecVersionManager::max_be_exec_version")," for all BEs. (That is to say, if a cluster that has completed the update needs to be downgraded, it should ensure the order of downgrading FE and then downgrading BE, or manually lower the variable in the settings and downgrade BE)"),(0,n.kt)("h4",{id:"max_be_exec_version"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_be_exec_version")),(0,n.kt)("p",null,"The latest data version currently supported, cannot be modified, and should be consistent with the ",(0,n.kt)("inlineCode",{parentName:"p"},"BeExecVersionManager::max_be_exec_version")," in the BE of the matching version."),(0,n.kt)("h4",{id:"min_be_exec_version"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_be_exec_version")),(0,n.kt)("p",null,"The oldest data version currently supported, which cannot be modified, should be consistent with the ",(0,n.kt)("inlineCode",{parentName:"p"},"BeExecVersionManager::min_be_exec_version")," in the BE of the matching version."),(0,n.kt)("h4",{id:"max_query_profile_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_query_profile_num")),(0,n.kt)("p",null,"The max number of query profile."),(0,n.kt)("p",null,"Default: 100"),(0,n.kt)("p",null,"Is it possible to dynamically configure: true"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: false"),(0,n.kt)("h4",{id:"publish_version_interval_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"publish_version_interval_ms")),(0,n.kt)("p",null,"Default\uff1a10 \uff08ms\uff09"),(0,n.kt)("p",null,"minimal intervals between two publish version action"),(0,n.kt)("h4",{id:"publish_version_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"publish_version_timeout_second")),(0,n.kt)("p",null,"Default\uff1a30 \uff08s\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Maximal waiting time for all publish version tasks of one transaction to be finished"),(0,n.kt)("h4",{id:"query_colocate_join_memory_limit_penalty_factor"},(0,n.kt)("inlineCode",{parentName:"h4"},"query_colocate_join_memory_limit_penalty_factor")),(0,n.kt)("p",null,"Default\uff1a1"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"colocote join PlanFragment instance\u7684memory_limit = exec_mem_limit / min (query_colocate_join_memory_limit_penalty_factor, instance_num)"),(0,n.kt)("h4",{id:"rewrite_count_distinct_to_bitmap_hll"},(0,n.kt)("inlineCode",{parentName:"h4"},"rewrite_count_distinct_to_bitmap_hll")),(0,n.kt)("p",null,"Default: true"),(0,n.kt)("p",null,"This variable is a session variable, and the session level takes effect."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Type: boolean"),(0,n.kt)("li",{parentName:"ul"},"Description: ",(0,n.kt)("strong",{parentName:"li"},"Only for the table of the AGG model"),", when the variable is true, when the user query contains aggregate functions such as count(distinct c1), if the type of the c1 column itself is bitmap, count distnct will be rewritten It is bitmap_union_count(c1). When the type of the c1 column itself is hll, count distinct will be rewritten as hll_union_agg(c1) If the variable is false, no overwriting occurs..")),(0,n.kt)("h3",{id:"load-and-export"},"Load And Export"),(0,n.kt)("h4",{id:"enable_vectorized_load"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_vectorized_load")),(0,n.kt)("p",null,"Default: true"),(0,n.kt)("p",null,"Whether to enable vectorized load"),(0,n.kt)("h4",{id:"enable_new_load_scan_node"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_new_load_scan_node")),(0,n.kt)("p",null,"Default: true"),(0,n.kt)("p",null,"Whether to enable file scan node"),(0,n.kt)("h4",{id:"default_max_filter_ratio"},(0,n.kt)("inlineCode",{parentName:"h4"},"default_max_filter_ratio")),(0,n.kt)("p",null,"Default\uff1a0"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Maximum percentage of data that can be filtered (due to reasons such as data is irregularly) , The default value is 0."),(0,n.kt)("h4",{id:"max_running_txn_num_per_db"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_running_txn_num_per_db")),(0,n.kt)("p",null,"Default\uff1a1000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This configuration is mainly used to control the number of concurrent load jobs of the same database."),(0,n.kt)("p",null,"When there are too many load jobs running in the cluster, the newly submitted load jobs may report errors:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-text"},"current running txns on db xxx is xx, larger than limit xx\n")),(0,n.kt)("p",null,"When this error is encountered, it means that the load jobs currently running in the cluster exceeds the configuration value. At this time, it is recommended to wait on the business side and retry the load jobs."),(0,n.kt)("p",null,"If you use the Connector, the value of this parameter can be adjusted appropriately, and there is no problem with thousands"),(0,n.kt)("h4",{id:"using_old_load_usage_pattern"},(0,n.kt)("inlineCode",{parentName:"h4"},"using_old_load_usage_pattern")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"If set to true, the insert stmt with processing error will still return a label to user.  And user can use this label to check the load job's status. The default value is false, which means if insert operation encounter errors,  exception will be thrown to user client directly without load label."),(0,n.kt)("h4",{id:"disable_load_job"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_load_job")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"if this is set to true"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"all pending load job will failed when call begin txn api"),(0,n.kt)("li",{parentName:"ul"},"all prepare load job will failed when call commit txn api"),(0,n.kt)("li",{parentName:"ul"},"all committed load job will waiting to be published")),(0,n.kt)("h4",{id:"commit_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"commit_timeout_second")),(0,n.kt)("p",null,"Default\uff1a30"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,'Maximal waiting time for all data inserted before one transaction to be committed\nThis is the timeout second for the command "commit"'),(0,n.kt)("h4",{id:"max_unfinished_load_job"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_unfinished_load_job")),(0,n.kt)("p",null,"Default\uff1a1000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Max number of load jobs, include PENDING\u3001ETL\u3001LOADING\u3001QUORUM_FINISHED. If exceed this number, load job is not allowed to be submitted"),(0,n.kt)("h4",{id:"db_used_data_quota_update_interval_secs"},(0,n.kt)("inlineCode",{parentName:"h4"},"db_used_data_quota_update_interval_secs")),(0,n.kt)("p",null,"Default\uff1a300 (s)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"One master daemon thread will update database used data quota for db txn manager every ",(0,n.kt)("inlineCode",{parentName:"p"},"db_used_data_quota_update_interval_secs")),(0,n.kt)("p",null,"For better data load performance, in the check of whether the amount of data used by the database before data load exceeds the quota, we do not calculate the amount of data already used by the database in real time, but obtain the periodically updated value of the daemon thread."),(0,n.kt)("p",null,"This configuration is used to set the time interval for updating the value of the amount of data used by the database"),(0,n.kt)("h4",{id:"disable_show_stream_load"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_show_stream_load")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Whether to disable show stream load and clear stream load records in memory."),(0,n.kt)("h4",{id:"max_stream_load_record_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_stream_load_record_size")),(0,n.kt)("p",null,"Default\uff1a5000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default max number of recent stream load record that can be stored in memory."),(0,n.kt)("h4",{id:"fetch_stream_load_record_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"fetch_stream_load_record_interval_second")),(0,n.kt)("p",null,"Default\uff1a120"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"fetch stream load record interval."),(0,n.kt)("h4",{id:"max_bytes_per_broker_scanner"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_bytes_per_broker_scanner")),(0,n.kt)("p",null,"Default\uff1a",(0,n.kt)("inlineCode",{parentName:"p"},"500 * 1024 * 1024 * 1024L"),"  \uff08500G\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Max bytes a broker scanner can process in one broker load job. Commonly, each Backends has one broker scanner."),(0,n.kt)("h4",{id:"default_load_parallelism"},(0,n.kt)("inlineCode",{parentName:"h4"},"default_load_parallelism")),(0,n.kt)("p",null,"Default: 1"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default parallelism of the broker load execution plan on a single node.\nIf the user to set the parallelism when the broker load is submitted, this parameter will be ignored.\nThis parameter will determine the concurrency of import tasks together with multiple configurations such as ",(0,n.kt)("inlineCode",{parentName:"p"},"max broker concurrency"),", ",(0,n.kt)("inlineCode",{parentName:"p"},"min bytes per broker scanner"),"."),(0,n.kt)("h4",{id:"max_broker_concurrency"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_broker_concurrency")),(0,n.kt)("p",null,"Default\uff1a10"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Maximal concurrency of broker scanners."),(0,n.kt)("h4",{id:"min_bytes_per_broker_scanner"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_bytes_per_broker_scanner")),(0,n.kt)("p",null,"Default\uff1a67108864L (64M)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Minimum bytes that a single broker scanner will read."),(0,n.kt)("h4",{id:"period_of_auto_resume_min"},(0,n.kt)("inlineCode",{parentName:"h4"},"period_of_auto_resume_min")),(0,n.kt)("p",null,"Default\uff1a5 \uff08s\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Automatically restore the cycle of Routine load"),(0,n.kt)("h4",{id:"max_tolerable_backend_down_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_tolerable_backend_down_num")),(0,n.kt)("p",null,"Default\uff1a0"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"As long as one BE is down, Routine Load cannot be automatically restored"),(0,n.kt)("h4",{id:"max_routine_load_task_num_per_be"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_routine_load_task_num_per_be")),(0,n.kt)("p",null,"Default\uff1a5"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"the max concurrent routine load task num per BE.  This is to limit the num of routine load tasks sending to a BE, and it should also less than BE config 'routine_load_thread_pool_size'(default 10), which is the routine load task thread pool size on BE."),(0,n.kt)("h4",{id:"max_routine_load_task_concurrent_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_routine_load_task_concurrent_num")),(0,n.kt)("p",null,"Default\uff1a5"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"the max concurrent routine load task num of a single routine load job"),(0,n.kt)("h4",{id:"max_routine_load_job_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_routine_load_job_num")),(0,n.kt)("p",null,"Default\uff1a100"),(0,n.kt)("p",null,"the max routine load job num, including NEED_SCHEDULED, RUNNING, PAUSE"),(0,n.kt)("h4",{id:"desired_max_waiting_jobs"},(0,n.kt)("inlineCode",{parentName:"h4"},"desired_max_waiting_jobs")),(0,n.kt)("p",null,"Default\uff1a100"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default number of waiting jobs for routine load and version 2 of load \uff0c This is a desired number.  In some situation, such as switch the master, the current number is maybe more than desired_max_waiting_jobs."),(0,n.kt)("h4",{id:"disable_hadoop_load"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_hadoop_load")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Load using hadoop cluster will be deprecated in future. Set to true to disable this kind of load."),(0,n.kt)("h4",{id:"enable_spark_load"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_spark_load")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Whether to enable spark load temporarily, it is not enabled by default"),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," This parameter has been deleted in version 1.2, spark_load is enabled by default"),(0,n.kt)("h4",{id:"spark_load_checker_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"spark_load_checker_interval_second")),(0,n.kt)("p",null,"Default\uff1a60"),(0,n.kt)("p",null,"Spark load scheduler run interval, default 60 seconds"),(0,n.kt)("h4",{id:"async_loading_load_task_pool_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"async_loading_load_task_pool_size")),(0,n.kt)("p",null,"Default\uff1a10"),(0,n.kt)("p",null,"IsMutable\uff1afalse"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"The loading_load task executor pool size. This pool size limits the max running loading_load tasks."),(0,n.kt)("p",null,"Currently, it only limits the loading_load task of broker load"),(0,n.kt)("h4",{id:"async_pending_load_task_pool_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"async_pending_load_task_pool_size")),(0,n.kt)("p",null,"Default\uff1a10"),(0,n.kt)("p",null,"IsMutable\uff1afalse"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"The pending_load task executor pool size. This pool size limits the max running pending_load tasks."),(0,n.kt)("p",null,"Currently, it only limits the pending_load task of broker load and spark load."),(0,n.kt)("p",null,"It should be less than 'max_running_txn_num_per_db'"),(0,n.kt)("h4",{id:"async_load_task_pool_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"async_load_task_pool_size")),(0,n.kt)("p",null,"Default\uff1a10"),(0,n.kt)("p",null,"IsMutable\uff1afalse"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This configuration is just for compatible with old version, this config has been replaced by async_loading_load_task_pool_size, it will be removed in the future."),(0,n.kt)("h4",{id:"enable_single_replica_load"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_single_replica_load")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Whether to enable to write single replica for stream load and broker load."),(0,n.kt)("h4",{id:"min_load_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_load_timeout_second")),(0,n.kt)("p",null,"Default\uff1a1 \uff081s\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Min stream load timeout applicable to all type of load"),(0,n.kt)("h4",{id:"max_stream_load_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_stream_load_timeout_second")),(0,n.kt)("p",null,"Default\uff1a259200 \uff083 day\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This configuration is specifically used to limit timeout setting for stream load. It is to prevent that failed stream load transactions cannot be canceled within a short time because of the user's large timeout setting"),(0,n.kt)("h4",{id:"max_load_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_load_timeout_second")),(0,n.kt)("p",null,"Default\uff1a259200 \uff083 day\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Max load timeout applicable to all type of load except for stream load"),(0,n.kt)("h4",{id:"stream_load_default_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"stream_load_default_timeout_second")),(0,n.kt)("p",null,"Default\uff1a86400 * 3 \uff083 day\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default stream load and streaming mini load timeout"),(0,n.kt)("h4",{id:"stream_load_default_precommit_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"stream_load_default_precommit_timeout_second")),(0,n.kt)("p",null,"Default\uff1a3600\uff08s\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default stream load pre-submission timeout"),(0,n.kt)("h4",{id:"stream_load_default_memtable_on_sink_node"},(0,n.kt)("inlineCode",{parentName:"h4"},"stream_load_default_memtable_on_sink_node")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"Enable memtable on sink node for stream load by default.\nWhen HTTP header ",(0,n.kt)("inlineCode",{parentName:"p"},"memtable_on_sink_node")," is not set."),(0,n.kt)("h4",{id:"insert_load_default_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"insert_load_default_timeout_second")),(0,n.kt)("p",null,"Default\uff1a3600\uff081 hour\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default insert load timeout"),(0,n.kt)("h4",{id:"mini_load_default_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"mini_load_default_timeout_second")),(0,n.kt)("p",null,"Default\uff1a3600\uff081 hour\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default non-streaming mini load timeout"),(0,n.kt)("h4",{id:"broker_load_default_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"broker_load_default_timeout_second")),(0,n.kt)("p",null,"Default\uff1a14400\uff084 hour\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default broker load timeout"),(0,n.kt)("h4",{id:"spark_load_default_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"spark_load_default_timeout_second")),(0,n.kt)("p",null,"Default\uff1a86400  (1 day)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default spark load timeout"),(0,n.kt)("h4",{id:"hadoop_load_default_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"hadoop_load_default_timeout_second")),(0,n.kt)("p",null,"Default\uff1a86400 * 3   (3 day)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default hadoop load timeout"),(0,n.kt)("h4",{id:"load_running_job_num_limit"},(0,n.kt)("inlineCode",{parentName:"h4"},"load_running_job_num_limit")),(0,n.kt)("p",null,"Default\uff1a0"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"The number of loading tasks is limited, the default is 0, no limit"),(0,n.kt)("h4",{id:"load_input_size_limit_gb"},(0,n.kt)("inlineCode",{parentName:"h4"},"load_input_size_limit_gb")),(0,n.kt)("p",null,"Default\uff1a0"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"The size of the data entered by the Load job, the default is 0, unlimited"),(0,n.kt)("h4",{id:"load_etl_thread_num_normal_priority"},(0,n.kt)("inlineCode",{parentName:"h4"},"load_etl_thread_num_normal_priority")),(0,n.kt)("p",null,"Default\uff1a10"),(0,n.kt)("p",null,"Concurrency of NORMAL priority etl load jobs. Do not change this if you know what you are doing."),(0,n.kt)("h4",{id:"load_etl_thread_num_high_priority"},(0,n.kt)("inlineCode",{parentName:"h4"},"load_etl_thread_num_high_priority")),(0,n.kt)("p",null,"Default\uff1a3"),(0,n.kt)("p",null,"Concurrency of HIGH priority etl load jobs. Do not change this if you know what you are doing"),(0,n.kt)("h4",{id:"load_pending_thread_num_normal_priority"},(0,n.kt)("inlineCode",{parentName:"h4"},"load_pending_thread_num_normal_priority")),(0,n.kt)("p",null,"Default\uff1a10"),(0,n.kt)("p",null,"Concurrency of NORMAL priority pending load jobs.  Do not change this if you know what you are doing."),(0,n.kt)("h4",{id:"load_pending_thread_num_high_priority"},(0,n.kt)("inlineCode",{parentName:"h4"},"load_pending_thread_num_high_priority")),(0,n.kt)("p",null,"Default\uff1a3"),(0,n.kt)("p",null,"Concurrency of HIGH priority pending load jobs. Load job priority is defined as HIGH or NORMAL.  All mini batch load jobs are HIGH priority, other types of load jobs are NORMAL priority.  Priority is set to avoid that a slow load job occupies a thread for a long time.  This is just a internal optimized scheduling policy.  Currently, you can not specified the job priority manually, and do not change this if you know what you are doing."),(0,n.kt)("h4",{id:"load_checker_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"load_checker_interval_second")),(0,n.kt)("p",null,"Default\uff1a5 \uff08s\uff09"),(0,n.kt)("p",null,"The load scheduler running interval. A load job will transfer its state from PENDING to LOADING to FINISHED.  The load scheduler will transfer load job from PENDING to LOADING while the txn callback will transfer load job from LOADING to FINISHED.  So a load job will cost at most one interval to finish when the concurrency has not reached the upper limit."),(0,n.kt)("h4",{id:"load_straggler_wait_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"load_straggler_wait_second")),(0,n.kt)("p",null,"Default\uff1a300"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Maximal wait seconds for straggler node in load\neg.\nthere are 3 replicas A, B, C\nload is already quorum finished(A,B) at t1 and C is not finished\nif (current_time - t1) > 300s, then palo will treat C as a failure node\nwill call transaction manager to commit the transaction and tell transaction manager that C is failed"),(0,n.kt)("p",null,"This is also used when waiting for publish tasks"),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," this parameter is the default value for all job and the DBA could specify it for separate job"),(0,n.kt)("h4",{id:"label_keep_max_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"label_keep_max_second")),(0,n.kt)("p",null,"Default\uff1a",(0,n.kt)("inlineCode",{parentName:"p"},"3 * 24 * 3600"),"  (3 day)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"labels of finished or cancelled load jobs will be removed after ",(0,n.kt)("inlineCode",{parentName:"p"},"label_keep_max_second")," \uff0c"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"The removed labels can be reused."),(0,n.kt)("li",{parentName:"ol"},"Set a short time will lower the FE memory usage.  (Because all load jobs' info is kept in memory before being removed)")),(0,n.kt)("p",null,"In the case of high concurrent writes, if there is a large backlog of jobs and call frontend service failed, check the log. If the metadata write takes too long to lock, you can adjust this value to 12 hours, or 6 hours less"),(0,n.kt)("h4",{id:"streaming_label_keep_max_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"streaming_label_keep_max_second")),(0,n.kt)("p",null,"Default\uff1a43200 \uff0812 hour\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"For some high-frequency load work, such as: INSERT, STREAMING LOAD, ROUTINE_LOAD_TASK. If it expires, delete the completed job or task."),(0,n.kt)("h4",{id:"label_clean_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"label_clean_interval_second")),(0,n.kt)("p",null,"Default\uff1a1 * 3600  \uff081 hour\uff09"),(0,n.kt)("p",null,"Load label cleaner will run every ",(0,n.kt)("em",{parentName:"p"},"label_clean_interval_second")," to clean the outdated jobs."),(0,n.kt)("h4",{id:"transaction_clean_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"transaction_clean_interval_second")),(0,n.kt)("p",null,"Default\uff1a30"),(0,n.kt)("p",null,"the transaction will be cleaned after transaction_clean_interval_second seconds if the transaction is visible or aborted  we should make this interval as short as possible and each clean cycle as soon as possible"),(0,n.kt)("h4",{id:"sync_commit_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"sync_commit_interval_second")),(0,n.kt)("p",null,"The maximum time interval for committing transactions. If there is still data in the channel that has not been submitted after this time, the consumer will notify the channel to submit the transaction."),(0,n.kt)("p",null,"Default: 10 (seconds)"),(0,n.kt)("p",null,"Is it possible to configure dynamically: true"),(0,n.kt)("p",null,"Whether it is a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"sync_checker_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"sync_checker_interval_second")),(0,n.kt)("p",null,"Data synchronization job running status check."),(0,n.kt)("p",null,"Default: 10\uff08s\uff09"),(0,n.kt)("h4",{id:"max_sync_task_threads_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_sync_task_threads_num")),(0,n.kt)("p",null,"The maximum number of threads in the data synchronization job thread pool."),(0,n.kt)("p",null,"\u9ed8\u8ba4\u503c\uff1a10"),(0,n.kt)("h4",{id:"min_sync_commit_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_sync_commit_size")),(0,n.kt)("p",null,"The minimum number of events that must be satisfied to commit a transaction. If the number of events received by Fe is less than it, it will continue to wait for the next batch of data until the time exceeds ",(0,n.kt)("inlineCode",{parentName:"p"},"sync_commit_interval_second"),". The default value is 10000 events. If you want to modify this configuration, please make sure that this value is smaller than the ",(0,n.kt)("inlineCode",{parentName:"p"},"canal.instance.memory.buffer.size")," configuration on the canal side (default 16384), otherwise Fe will try to get the queue length longer than the store before ack More events cause the store queue to block until it times out."),(0,n.kt)("p",null,"Default: 10000"),(0,n.kt)("p",null,"Is it possible to configure dynamically: true"),(0,n.kt)("p",null,"Whether it is a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"min_bytes_sync_commit"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_bytes_sync_commit")),(0,n.kt)("p",null,"The minimum data size required to commit a transaction. If the data size received by Fe is smaller than it, it will continue to wait for the next batch of data until the time exceeds ",(0,n.kt)("inlineCode",{parentName:"p"},"sync_commit_interval_second"),". The default value is 15MB, if you want to modify this configuration, please make sure this value is less than the product of ",(0,n.kt)("inlineCode",{parentName:"p"},"canal.instance.memory.buffer.size")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"canal.instance.memory.buffer.memunit")," on the canal side (default 16MB), otherwise Before the ack, Fe will try to obtain data that is larger than the store space, causing the store queue to block until it times out."),(0,n.kt)("p",null,"Default: ",(0,n.kt)("inlineCode",{parentName:"p"},"15*1024*1024")," (15M)"),(0,n.kt)("p",null,"Is it possible to configure dynamically: true"),(0,n.kt)("p",null,"Whether it is a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"max_bytes_sync_commit"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_bytes_sync_commit")),(0,n.kt)("p",null,"The maximum number of threads in the data synchronization job thread pool. There is only one thread pool in the entire FE, which is used to process all data synchronization tasks in the FE that send data to the BE. The implementation of the thread pool is in the ",(0,n.kt)("inlineCode",{parentName:"p"},"SyncTaskPool")," class."),(0,n.kt)("p",null,"Default: 10"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: false"),(0,n.kt)("h4",{id:"enable_outfile_to_local"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_outfile_to_local")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"Whether to allow the outfile function to export the results to the local disk."),(0,n.kt)("h4",{id:"export_tablet_num_per_task"},(0,n.kt)("inlineCode",{parentName:"h4"},"export_tablet_num_per_task")),(0,n.kt)("p",null,"Default\uff1a5"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Number of tablets per export query plan"),(0,n.kt)("h4",{id:"export_task_default_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"export_task_default_timeout_second")),(0,n.kt)("p",null,"Default\uff1a2 * 3600   \uff082 hour\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default timeout of export jobs."),(0,n.kt)("h4",{id:"export_running_job_num_limit"},(0,n.kt)("inlineCode",{parentName:"h4"},"export_running_job_num_limit")),(0,n.kt)("p",null,"Default\uff1a5"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Limitation of the concurrency of running export jobs.  Default is 5.  0 is unlimited"),(0,n.kt)("h4",{id:"export_checker_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"export_checker_interval_second")),(0,n.kt)("p",null,"Default\uff1a5"),(0,n.kt)("p",null,"Export checker's running interval."),(0,n.kt)("h3",{id:"log"},"Log"),(0,n.kt)("h4",{id:"log_roll_size_mb"},(0,n.kt)("inlineCode",{parentName:"h4"},"log_roll_size_mb")),(0,n.kt)("p",null,"Default\uff1a1024  \uff081G\uff09"),(0,n.kt)("p",null,"The max size of one sys log and audit log"),(0,n.kt)("h4",{id:"sys_log_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"sys_log_dir")),(0,n.kt)("p",null,'Default\uff1aDorisFE.DORIS_HOME_DIR + "/log"'),(0,n.kt)("p",null,"sys_log_dir:"),(0,n.kt)("p",null,"This specifies FE log dir. FE will produces 2 log files:"),(0,n.kt)("p",null,"fe.log:      all logs of FE process.\nfe.warn.log  all WARNING and ERROR log of FE process."),(0,n.kt)("h4",{id:"sys_log_level"},(0,n.kt)("inlineCode",{parentName:"h4"},"sys_log_level")),(0,n.kt)("p",null,"Default\uff1aINFO"),(0,n.kt)("p",null,"log level\uff1aINFO, WARNING, ERROR, FATAL"),(0,n.kt)("h4",{id:"sys_log_roll_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"sys_log_roll_num")),(0,n.kt)("p",null,"Default\uff1a10"),(0,n.kt)("p",null,"Maximal FE log files to be kept within an sys_log_roll_interval. default is 10, which means there will be at most 10 log files in a day"),(0,n.kt)("h4",{id:"sys_log_verbose_modules"},(0,n.kt)("inlineCode",{parentName:"h4"},"sys_log_verbose_modules")),(0,n.kt)("p",null,"Default\uff1a{}"),(0,n.kt)("p",null,"Verbose modules. VERBOSE level is implemented by log4j DEBUG level."),(0,n.kt)("p",null,"eg\uff1a\nsys_log_verbose_modules = org.apache.doris.catalog\nThis will only print debug log of files in package org.apache.doris.catalog and all its sub packages."),(0,n.kt)("h4",{id:"sys_log_roll_interval"},(0,n.kt)("inlineCode",{parentName:"h4"},"sys_log_roll_interval")),(0,n.kt)("p",null,"Default\uff1aDAY"),(0,n.kt)("p",null,"sys_log_roll_interval:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"DAY:  log suffix is  yyyyMMdd"),(0,n.kt)("li",{parentName:"ul"},"HOUR: log suffix is  yyyyMMddHH")),(0,n.kt)("h4",{id:"sys_log_delete_age"},(0,n.kt)("inlineCode",{parentName:"h4"},"sys_log_delete_age")),(0,n.kt)("p",null,"Default\uff1a7d"),(0,n.kt)("p",null,"default is 7 days, if log's last modify time is 7 days ago, it will be deleted."),(0,n.kt)("p",null,"support format:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"7d      7 day"),(0,n.kt)("li",{parentName:"ul"},"10h     10 hours"),(0,n.kt)("li",{parentName:"ul"},"60m     60 min"),(0,n.kt)("li",{parentName:"ul"},"120s    120 seconds")),(0,n.kt)("h4",{id:"sys_log_roll_mode"},(0,n.kt)("inlineCode",{parentName:"h4"},"sys_log_roll_mode")),(0,n.kt)("p",null,"Default\uff1aSIZE-MB-1024"),(0,n.kt)("p",null,"The size of the log split, split a log file every 1 G"),(0,n.kt)("h4",{id:"sys_log_enable_compress"},(0,n.kt)("inlineCode",{parentName:"h4"},"sys_log_enable_compress")),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"If true, will compress fe.log & fe.warn.log by gzip"),(0,n.kt)("h4",{id:"audit_log_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"audit_log_dir")),(0,n.kt)("p",null,'Default\uff1aDORIS_HOME_DIR + "/log"'),(0,n.kt)("p",null,"audit_log_dir\uff1a\nThis specifies FE audit log dir..\nAudit log fe.audit.log contains all requests with related infos such as user, host, cost, status, etc"),(0,n.kt)("h4",{id:"audit_log_roll_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"audit_log_roll_num")),(0,n.kt)("p",null,"Default\uff1a90"),(0,n.kt)("p",null,"Maximal FE audit log files to be kept within an audit_log_roll_interval."),(0,n.kt)("h4",{id:"audit_log_modules"},(0,n.kt)("inlineCode",{parentName:"h4"},"audit_log_modules")),(0,n.kt)("p",null,'Default\uff1a{"slow_query", "query", "load", "stream_load"}'),(0,n.kt)("p",null,"Slow query contains all queries which cost exceed ",(0,n.kt)("em",{parentName:"p"},"qe_slow_log_ms")),(0,n.kt)("h4",{id:"qe_slow_log_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"qe_slow_log_ms")),(0,n.kt)("p",null,"Default\uff1a5000 \uff085 seconds\uff09"),(0,n.kt)("p",null,"If the response time of a query exceed this threshold, it will be recorded in audit log as slow_query."),(0,n.kt)("h4",{id:"audit_log_roll_interval"},(0,n.kt)("inlineCode",{parentName:"h4"},"audit_log_roll_interval")),(0,n.kt)("p",null,"Default\uff1aDAY"),(0,n.kt)("p",null,"DAY:  logsuffix is \uff1ayyyyMMdd\nHOUR: logsuffix is \uff1ayyyyMMddHH"),(0,n.kt)("h4",{id:"audit_log_delete_age"},(0,n.kt)("inlineCode",{parentName:"h4"},"audit_log_delete_age")),(0,n.kt)("p",null,"Default\uff1a30d"),(0,n.kt)("p",null,"default is 30 days, if log's last modify time is 30 days ago, it will be deleted."),(0,n.kt)("p",null,"support format:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"7d      7 day"),(0,n.kt)("li",{parentName:"ul"},"10h     10 hours"),(0,n.kt)("li",{parentName:"ul"},"60m     60 min"),(0,n.kt)("li",{parentName:"ul"},"120s    120 seconds")),(0,n.kt)("h4",{id:"audit_log_enable_compress"},(0,n.kt)("inlineCode",{parentName:"h4"},"audit_log_enable_compress")),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"If true, will compress fe.audit.log by gzip"),(0,n.kt)("h4",{id:"nereids_trace_log_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"nereids_trace_log_dir")),(0,n.kt)("p",null,'Default: DorisFE.DORIS_HOME_DIR + "/log/nereids_trace"'),(0,n.kt)("p",null,"Used to specify the directory of the nereids trace log"),(0,n.kt)("h3",{id:"storage"},"Storage"),(0,n.kt)("h4",{id:"min_replication_num_per_tablet"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_replication_num_per_tablet")),(0,n.kt)("p",null,"Default: 1"),(0,n.kt)("p",null,"Used to set minimal number of replication per tablet."),(0,n.kt)("h4",{id:"max_replication_num_per_tablet"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_replication_num_per_tablet")),(0,n.kt)("p",null,"Default: 32767"),(0,n.kt)("p",null,"Used to set maximal number of replication per tablet."),(0,n.kt)("h4",{id:"default_db_data_quota_bytes"},(0,n.kt)("inlineCode",{parentName:"h4"},"default_db_data_quota_bytes")),(0,n.kt)("p",null,"Default\uff1a1PB"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Used to set the default database data quota size. To set the quota size of a single database, you can use:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"Set the database data quota, the unit is:B/K/KB/M/MB/G/GB/T/TB/P/PB\nALTER DATABASE db_name SET DATA QUOTA quota;\nView configuration\nshow data \uff08Detail\uff1aHELP SHOW DATA\uff09\n")),(0,n.kt)("h4",{id:"default_db_replica_quota_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"default_db_replica_quota_size")),(0,n.kt)("p",null,"Default: 1073741824"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Used to set the default database replica quota. To set the quota size of a single database, you can use:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"Set the database replica quota\nALTER DATABASE db_name SET REPLICA QUOTA quota;\nView configuration\nshow data \uff08Detail\uff1aHELP SHOW DATA\uff09\n")),(0,n.kt)("h4",{id:"recover_with_empty_tablet"},(0,n.kt)("inlineCode",{parentName:"h4"},"recover_with_empty_tablet")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"In some very special circumstances, such as code bugs, or human misoperation, etc., all replicas of some tablets may be lost. In this case, the data has been substantially lost. However, in some scenarios, the business still hopes to ensure that the query will not report errors even if there is data loss, and reduce the perception of the user layer. At this point, we can use the blank Tablet to fill the missing replica to ensure that the query can be executed normally."),(0,n.kt)("p",null,"Set to true so that Doris will automatically use blank replicas to fill tablets which all replicas have been damaged or missing"),(0,n.kt)("h4",{id:"min_clone_task_timeout_sec-and-max_clone_task_timeout_sec"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_clone_task_timeout_sec")," ",(0,n.kt)("inlineCode",{parentName:"h4"},"And max_clone_task_timeout_sec")),(0,n.kt)("p",null,"Default\uff1aMinimum 3 minutes, maximum two hours"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Can cooperate with ",(0,n.kt)("inlineCode",{parentName:"p"},"mix_clone_task_timeout_sec")," to control the maximum and minimum timeout of a clone task. Under normal circumstances, the timeout of a clone task is estimated by the amount of data and the minimum transfer rate (5MB/s). In some special cases, these two configurations can be used to set the upper and lower bounds of the clone task timeout to ensure that the clone task can be completed successfully."),(0,n.kt)("h4",{id:"disable_storage_medium_check"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_storage_medium_check")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"If disable_storage_medium_check is true, ReportHandler would not check tablet's storage medium and disable storage cool down function, the default value is false. You can set the value true when you don't care what the storage medium of the tablet is."),(0,n.kt)("h4",{id:"decommission_tablet_check_threshold"},(0,n.kt)("inlineCode",{parentName:"h4"},"decommission_tablet_check_threshold")),(0,n.kt)("p",null,"Default\uff1a5000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This configuration is used to control whether the Master FE need to check the status of tablets on decommissioned BE. If the size of tablets on decommissioned BE is lower than this threshold, FE will start a periodic check, if all tablets on decommissioned BE have been recycled, FE will drop this BE immediately."),(0,n.kt)("p",null,"For performance consideration, please don't set a very high value for this configuration."),(0,n.kt)("h4",{id:"partition_rebalance_max_moves_num_per_selection"},(0,n.kt)("inlineCode",{parentName:"h4"},"partition_rebalance_max_moves_num_per_selection")),(0,n.kt)("p",null,"Default\uff1a10"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Valid only if use PartitionRebalancer\uff0c"),(0,n.kt)("h4",{id:"partition_rebalance_move_expire_after_access"},(0,n.kt)("inlineCode",{parentName:"h4"},"partition_rebalance_move_expire_after_access")),(0,n.kt)("p",null,"Default\uff1a600   (s)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Valid only if use PartitionRebalancer. If this changed, cached moves will be cleared"),(0,n.kt)("h4",{id:"tablet_rebalancer_type"},(0,n.kt)("inlineCode",{parentName:"h4"},"tablet_rebalancer_type")),(0,n.kt)("p",null,"Default\uff1aBeLoad"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Rebalancer type(ignore case): BeLoad, Partition. If type parse failed, use BeLoad as default"),(0,n.kt)("h4",{id:"max_balancing_tablets"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_balancing_tablets")),(0,n.kt)("p",null,"Default\uff1a100"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"if the number of balancing tablets in TabletScheduler exceed max_balancing_tablets, no more balance check"),(0,n.kt)("h4",{id:"max_scheduling_tablets"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_scheduling_tablets")),(0,n.kt)("p",null,"Default\uff1a2000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"if the number of scheduled tablets in TabletScheduler exceed max_scheduling_tablets skip checking."),(0,n.kt)("h4",{id:"disable_balance"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_balance")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"if set to true, TabletScheduler will not do balance."),(0,n.kt)("h4",{id:"disable_disk_balance"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_disk_balance")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"if set to true, TabletScheduler will not do disk balance."),(0,n.kt)("h4",{id:"balance_load_score_threshold"},(0,n.kt)("inlineCode",{parentName:"h4"},"balance_load_score_threshold")),(0,n.kt)("p",null,"Default\uff1a0.1 (10%)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"the threshold of cluster balance score, if a backend's load score is 10% lower than average score,  this backend will be marked as LOW load, if load score is 10% higher than average score, HIGH load  will be marked"),(0,n.kt)("h4",{id:"capacity_used_percent_high_water"},(0,n.kt)("inlineCode",{parentName:"h4"},"capacity_used_percent_high_water")),(0,n.kt)("p",null,"Default\uff1a0.75  \uff0875%\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"The high water of disk capacity used percent. This is used for calculating load score of a backend"),(0,n.kt)("h4",{id:"clone_distribution_balance_threshold"},(0,n.kt)("inlineCode",{parentName:"h4"},"clone_distribution_balance_threshold")),(0,n.kt)("p",null,"Default\uff1a0.2"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Balance threshold of num of replicas in Backends."),(0,n.kt)("h4",{id:"clone_capacity_balance_threshold"},(0,n.kt)("inlineCode",{parentName:"h4"},"clone_capacity_balance_threshold")),(0,n.kt)("p",null,"Default\uff1a0.2"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Balance threshold of data size in BE."),(0,n.kt)("p",{parentName:"li"}," The balance algorithm is:"),(0,n.kt)("ol",{parentName:"li"},(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Calculate the average used capacity(AUC) of the entire cluster. (total data size / total backends num)")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"The high water level is (AUC * (1 + clone_capacity_balance_threshold))")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"The low water level is (AUC * (1 - clone_capacity_balance_threshold))")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"The Clone checker will try to move replica from high water level BE to low water level BE."))))),(0,n.kt)("h4",{id:"disable_colocate_balance"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_colocate_balance")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This configs can set to true to disable the automatic colocate tables's relocate and balance.  If 'disable_colocate_balance' is set to true,   ColocateTableBalancer will not relocate and balance colocate tables."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Attention"),":"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Under normal circumstances, there is no need to turn off balance at all."),(0,n.kt)("li",{parentName:"ol"},"Because once the balance is turned off, the unstable colocate table may not be restored"),(0,n.kt)("li",{parentName:"ol"},"Eventually the colocate plan cannot be used when querying.")),(0,n.kt)("h4",{id:"balance_slot_num_per_path"},(0,n.kt)("inlineCode",{parentName:"h4"},"balance_slot_num_per_path")),(0,n.kt)("p",null,"Default: 1"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default number of slots per path during balance."),(0,n.kt)("h4",{id:"disable_tablet_scheduler"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_tablet_scheduler")),(0,n.kt)("p",null,"Default:false"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"If set to true, the tablet scheduler will not work, so that all tablet repair/balance task will not work."),(0,n.kt)("h4",{id:"enable_force_drop_redundant_replica"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_force_drop_redundant_replica")),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"Dynamically configured: true"),(0,n.kt)("p",null,"Only for Master FE: true"),(0,n.kt)("p",null,"If set to true, the system will immediately drop redundant replicas in the tablet scheduling logic. This may cause some load jobs that are writing to the corresponding replica to fail, but it will speed up the balance and repair speed of the tablet.\nWhen there are a large number of replicas waiting to be balanced or repaired in the cluster, you can try to set this config to speed up the balance and repair of replicas at the expense of partial load success rate."),(0,n.kt)("h4",{id:"colocate_group_relocate_delay_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"colocate_group_relocate_delay_second")),(0,n.kt)("p",null,"Default: 1800"),(0,n.kt)("p",null,"Dynamically configured: true"),(0,n.kt)("p",null,"Only for Master FE: true"),(0,n.kt)("p",null,"The relocation of a colocation group may involve a large number of tablets moving within the cluster. Therefore, we should use a more conservative strategy to avoid relocation of colocation groups as much as possible.\nReloaction usually occurs after a BE node goes offline or goes down. This parameter is used to delay the determination of BE node unavailability. The default is 30 minutes, i.e., if a BE node recovers within 30 minutes, relocation of the colocation group will not be triggered."),(0,n.kt)("p",null,"####",(0,n.kt)("inlineCode",{parentName:"p"}," allow_replica_on_same_host")),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"Dynamically configured: false"),(0,n.kt)("p",null,"Only for Master FE: false"),(0,n.kt)("p",null,"Whether to allow multiple replicas of the same tablet to be distributed on the same host. This parameter is mainly used for local testing, to facilitate building multiple BEs to test certain multi-replica situations. Do not use it for non-test environments."),(0,n.kt)("h4",{id:"repair_slow_replica"},(0,n.kt)("inlineCode",{parentName:"h4"},"repair_slow_replica")),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly: true"),(0,n.kt)("p",null,"If set to true, the replica with slower compaction will be automatically detected and migrated to other machines. The detection condition is that the version count of the fastest replica exceeds the value of ",(0,n.kt)("inlineCode",{parentName:"p"},"min_version_count_indicate_replica_compaction_too_slow"),", and the ratio of the version count difference from the fastest replica exceeds the value of ",(0,n.kt)("inlineCode",{parentName:"p"},"valid_version_count_delta_ratio_between_replicas")),(0,n.kt)("h4",{id:"min_version_count_indicate_replica_compaction_too_slow"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_version_count_indicate_replica_compaction_too_slow")),(0,n.kt)("p",null,"Default: 200"),(0,n.kt)("p",null,"Dynamically configured: true"),(0,n.kt)("p",null,"Only for Master FE: false"),(0,n.kt)("p",null,"The version count threshold used to judge whether replica compaction is too slow"),(0,n.kt)("h4",{id:"skip_compaction_slower_replica"},(0,n.kt)("inlineCode",{parentName:"h4"},"skip_compaction_slower_replica")),(0,n.kt)("p",null,"Default: true"),(0,n.kt)("p",null,"Dynamically configured: true"),(0,n.kt)("p",null,"Only for Master FE: false"),(0,n.kt)("p",null,"If set to true, the compaction slower replica will be skipped when select get queryable replicas"),(0,n.kt)("h4",{id:"valid_version_count_delta_ratio_between_replicas"},(0,n.kt)("inlineCode",{parentName:"h4"},"valid_version_count_delta_ratio_between_replicas")),(0,n.kt)("p",null,"Default: 0.5"),(0,n.kt)("p",null,"Dynamically configured: true"),(0,n.kt)("p",null,"Only for Master FE: true"),(0,n.kt)("p",null,"The valid ratio threshold of the difference between the version count of the slowest replica and the fastest replica. If ",(0,n.kt)("inlineCode",{parentName:"p"},"repair_slow_replica")," is set to true, it is used to determine whether to repair the slowest replica"),(0,n.kt)("h4",{id:"min_bytes_indicate_replica_too_large"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_bytes_indicate_replica_too_large")),(0,n.kt)("p",null,"Default: ",(0,n.kt)("inlineCode",{parentName:"p"},"2 * 1024 * 1024 * 1024")," (2G)"),(0,n.kt)("p",null,"Dynamically configured: true"),(0,n.kt)("p",null,"Only for Master FE: true"),(0,n.kt)("p",null,"The data size threshold used to judge whether replica is too large"),(0,n.kt)("h4",{id:"schedule_slot_num_per_hdd_path"},(0,n.kt)("inlineCode",{parentName:"h4"},"schedule_slot_num_per_hdd_path")),(0,n.kt)("p",null,"Default\uff1a4"),(0,n.kt)("p",null,"the default slot number per path in tablet scheduler for hdd , remove this config and dynamically adjust it by clone task statistic"),(0,n.kt)("h4",{id:"schedule_slot_num_per_ssd_path"},(0,n.kt)("inlineCode",{parentName:"h4"},"schedule_slot_num_per_ssd_path")),(0,n.kt)("p",null,"Default\uff1a8"),(0,n.kt)("p",null,"the default slot number per path in tablet scheduler for ssd , remove this config and dynamically adjust it by clone task statistic"),(0,n.kt)("h4",{id:"tablet_repair_delay_factor_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"tablet_repair_delay_factor_second")),(0,n.kt)("p",null,"Default\uff1a60 \uff08s\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"the factor of delay time before deciding to repair tablet."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"if priority is VERY_HIGH, repair it immediately."),(0,n.kt)("li",{parentName:"ul"},"HIGH, delay tablet_repair_delay_factor_second * 1;"),(0,n.kt)("li",{parentName:"ul"},"NORMAL: delay tablet_repair_delay_factor_second * 2;"),(0,n.kt)("li",{parentName:"ul"},"LOW: delay tablet_repair_delay_factor_second * 3;")),(0,n.kt)("h4",{id:"tablet_stat_update_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"tablet_stat_update_interval_second")),(0,n.kt)("p",null,"Default\uff1a300\uff085min\uff09"),(0,n.kt)("p",null,"update interval of tablet stat,\nAll frontends will get tablet stat from all backends at each interval"),(0,n.kt)("h4",{id:"storage_flood_stage_usage_percent"},(0,n.kt)("inlineCode",{parentName:"h4"},"storage_flood_stage_usage_percent")),(0,n.kt)("p",null,"Default\uff1a95 \uff0895%\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("h5",{id:"storage_flood_stage_left_capacity_bytes"},(0,n.kt)("inlineCode",{parentName:"h5"},"storage_flood_stage_left_capacity_bytes")),(0,n.kt)("p",null,"Default\uff1a1 ",(0,n.kt)("em",{parentName:"p"}," 1024 ")," 1024 * 1024 (1GB)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"If capacity of disk reach the 'storage_flood_stage_usage_percent' and  'storage_flood_stage_left_capacity_bytes', the following operation will be rejected:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"load job"),(0,n.kt)("li",{parentName:"ol"},"restore job")),(0,n.kt)("h4",{id:"storage_high_watermark_usage_percent"},(0,n.kt)("inlineCode",{parentName:"h4"},"storage_high_watermark_usage_percent")),(0,n.kt)("p",null,"Default\uff1a85  (85%)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("h4",{id:"storage_min_left_capacity_bytes"},(0,n.kt)("inlineCode",{parentName:"h4"},"storage_min_left_capacity_bytes")),(0,n.kt)("p",null,"Default\uff1a ",(0,n.kt)("inlineCode",{parentName:"p"},"2 * 1024 * 1024 * 1024"),"  (2GB)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"'storage_high_watermark_usage_percent' limit the max capacity usage percent of a Backend storage path.  'storage_min_left_capacity_bytes' limit the minimum left capacity of a Backend storage path.  If both limitations are reached, this storage path can not be chose as tablet balance destination. But for tablet recovery, we may exceed these limit for keeping data integrity as much as possible."),(0,n.kt)("h4",{id:"catalog_trash_expire_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"catalog_trash_expire_second")),(0,n.kt)("p",null,"Default\uff1a86400L (1 day)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"After dropping database(table/partition), you can recover it by using RECOVER stmt. And this specifies the maximal data retention time. After time, the data will be deleted permanently."),(0,n.kt)("h4",{id:"storage_cooldown_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"storage_cooldown_second")),(0,n.kt)("version",{deprecated:"2.0"}),(0,n.kt)("p",null,"Default\uff1a",(0,n.kt)("inlineCode",{parentName:"p"},"30 * 24 * 3600L"),"  \uff0830 day\uff09"),(0,n.kt)("p",null,"When create a table(or partition), you can specify its storage medium(HDD or SSD). If set to SSD, this specifies the default duration that tablets will stay on SSD.  After that, tablets will be moved to HDD automatically.  You can set storage cooldown time in CREATE TABLE stmt."),(0,n.kt)("h4",{id:"default_storage_medium"},(0,n.kt)("inlineCode",{parentName:"h4"},"default_storage_medium")),(0,n.kt)("p",null,"Default\uff1aHDD"),(0,n.kt)("p",null,"When create a table(or partition), you can specify its storage medium(HDD or SSD). If not set, this specifies the default medium when creat."),(0,n.kt)("h4",{id:"enable_storage_policy"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_storage_policy")),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Whether to enable the Storage Policy feature. This config allows users to separate hot and cold data.\nDefault: false")),(0,n.kt)("p",null,"Is it possible to dynamically configure: true"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"check_consistency_default_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"check_consistency_default_timeout_second")),(0,n.kt)("p",null,"Default\uff1a600 \uff0810 minutes\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default timeout of a single consistency check task. Set long enough to fit your tablet size"),(0,n.kt)("h4",{id:"consistency_check_start_time"},(0,n.kt)("inlineCode",{parentName:"h4"},"consistency_check_start_time")),(0,n.kt)("p",null,"Default\uff1a23"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Consistency check start time"),(0,n.kt)("p",null,"Consistency checker will run from ",(0,n.kt)("em",{parentName:"p"},"consistency_check_start_time")," to ",(0,n.kt)("em",{parentName:"p"},"consistency_check_end_time"),"."),(0,n.kt)("p",null,"If the two times are the same, no consistency check will be triggered."),(0,n.kt)("h4",{id:"consistency_check_end_time"},(0,n.kt)("inlineCode",{parentName:"h4"},"consistency_check_end_time")),(0,n.kt)("p",null,"Default\uff1a23"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Consistency check end time"),(0,n.kt)("p",null,"Consistency checker will run from ",(0,n.kt)("em",{parentName:"p"},"consistency_check_start_time")," to ",(0,n.kt)("em",{parentName:"p"},"consistency_check_end_time"),"."),(0,n.kt)("p",null,"If the two times are the same, no consistency check will be triggered."),(0,n.kt)("h4",{id:"replica_delay_recovery_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"replica_delay_recovery_second")),(0,n.kt)("p",null,"Default\uff1a0"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"the minimal delay seconds between a replica is failed and fe try to recovery it using clone."),(0,n.kt)("h4",{id:"tablet_create_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"tablet_create_timeout_second")),(0,n.kt)("p",null,"Default\uff1a1\uff08s\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Maximal waiting time for creating a single replica."),(0,n.kt)("p",null,"eg.\nif you create a table with #m tablets and #n replicas for each tablet,\nthe create table request will run at most (m ",(0,n.kt)("em",{parentName:"p"}," n ")," tablet_create_timeout_second) before timeout."),(0,n.kt)("h4",{id:"tablet_delete_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"tablet_delete_timeout_second")),(0,n.kt)("p",null,"Default\uff1a2"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Same meaning as ",(0,n.kt)("em",{parentName:"p"},"tablet_create_timeout_second"),", but used when delete a tablet."),(0,n.kt)("h4",{id:"alter_table_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"alter_table_timeout_second")),(0,n.kt)("p",null,"Default\uff1a86400 * 30\uff081 month\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Maximal timeout of ALTER TABLE request. Set long enough to fit your table data size."),(0,n.kt)("h4",{id:"max_replica_count_when_schema_change"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_replica_count_when_schema_change")),(0,n.kt)("p",null,"The maximum number of replicas allowed when OlapTable is doing schema changes. Too many replicas will lead to FE OOM."),(0,n.kt)("p",null,"Default: 100000"),(0,n.kt)("p",null,"Is it possible to configure dynamically: true"),(0,n.kt)("p",null,"Whether it is a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"history_job_keep_max_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"history_job_keep_max_second")),(0,n.kt)("p",null,"Default\uff1a",(0,n.kt)("inlineCode",{parentName:"p"},"7 * 24 * 3600")," \uff087 day\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"The max keep time of some kind of jobs. like schema change job and rollup job."),(0,n.kt)("h4",{id:"max_create_table_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_create_table_timeout_second")),(0,n.kt)("p",null,"Default\uff1a60 \uff08s\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"In order not to wait too long for create table(index), set a max timeout."),(0,n.kt)("h3",{id:"external-table"},"External Table"),(0,n.kt)("h4",{id:"file_scan_node_split_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"file_scan_node_split_num")),(0,n.kt)("p",null,"Default\uff1a128"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"multi catalog concurrent file scanning threads"),(0,n.kt)("h4",{id:"file_scan_node_split_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"file_scan_node_split_size")),(0,n.kt)("p",null,"Default\uff1a256 ",(0,n.kt)("em",{parentName:"p"}," 1024 ")," 1024"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"multi catalog concurrent file scan size"),(0,n.kt)("h4",{id:"enable_odbc_mysql_broker_table"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_odbc_mysql_broker_table")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"Starting from version 2.1, we no longer support create odbc, jdbc and broker external table. For odbc and mysql external table, use jdbc table or jdbc catalog instead. For broker table, use table valued function instead."),(0,n.kt)("h4",{id:"max_hive_partition_cache_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_hive_partition_cache_num")),(0,n.kt)("p",null,"The maximum number of caches for the hive partition."),(0,n.kt)("p",null,"Default: 100000"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: false"),(0,n.kt)("h4",{id:"hive_metastore_client_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"hive_metastore_client_timeout_second")),(0,n.kt)("p",null,"The default connection timeout for hive metastore."),(0,n.kt)("p",null,"Default: 10"),(0,n.kt)("p",null,"Is it possible to dynamically configure: true"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"max_external_cache_loader_thread_pool_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_external_cache_loader_thread_pool_size")),(0,n.kt)("p",null,"Maximum thread pool size for loading external meta cache."),(0,n.kt)("p",null,"Default: 10"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: false"),(0,n.kt)("h4",{id:"max_external_file_cache_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_external_file_cache_num")),(0,n.kt)("p",null,"Maximum number of file cache to use for external tables."),(0,n.kt)("p",null,"Default: 100000"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: false"),(0,n.kt)("h4",{id:"max_external_schema_cache_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_external_schema_cache_num")),(0,n.kt)("p",null,"Maximum number of schema cache to use for external external tables."),(0,n.kt)("p",null,"Default: 10000"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: false"),(0,n.kt)("h4",{id:"external_cache_expire_time_minutes_after_access"},(0,n.kt)("inlineCode",{parentName:"h4"},"external_cache_expire_time_minutes_after_access")),(0,n.kt)("p",null,"Set how long the data in the cache expires after the last access. The unit is minutes.\nApplies to External Schema Cache as well as Hive Partition Cache."),(0,n.kt)("p",null,"Default: 1440"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: false"),(0,n.kt)("h4",{id:"es_state_sync_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"es_state_sync_interval_second")),(0,n.kt)("p",null,"Default\uff1a10"),(0,n.kt)("p",null,"fe will call es api to get es index shard info every es_state_sync_interval_secs"),(0,n.kt)("h3",{id:"external-resources"},"External Resources"),(0,n.kt)("h4",{id:"dpp_hadoop_client_path"},(0,n.kt)("inlineCode",{parentName:"h4"},"dpp_hadoop_client_path")),(0,n.kt)("p",null,"Default\uff1a/lib/hadoop-client/hadoop/bin/hadoop"),(0,n.kt)("h4",{id:"dpp_bytes_per_reduce"},(0,n.kt)("inlineCode",{parentName:"h4"},"dpp_bytes_per_reduce")),(0,n.kt)("p",null,"Default\uff1a",(0,n.kt)("inlineCode",{parentName:"p"},"100 * 1024 * 1024L")," (100M)"),(0,n.kt)("h4",{id:"dpp_default_cluster"},(0,n.kt)("inlineCode",{parentName:"h4"},"dpp_default_cluster")),(0,n.kt)("p",null,"Default\uff1apalo-dpp"),(0,n.kt)("h4",{id:"dpp_default_config_str"},(0,n.kt)("inlineCode",{parentName:"h4"},"dpp_default_config_str")),(0,n.kt)("p",null,"Default\uff1a{\nhadoop_configs : 'mapred.job.priority=NORMAL;mapred.job.map.capacity=50;mapred.job.reduce.capacity=50;mapred.hce.replace.streaming=false;abaci.long.stored.job=true;dce.shuffle.enable=false;dfs.client.authserver.force_stop=true;dfs.client.auth.method=0'\n}"),(0,n.kt)("h4",{id:"dpp_config_str"},(0,n.kt)("inlineCode",{parentName:"h4"},"dpp_config_str")),(0,n.kt)("p",null,"Default\uff1a{\npalo-dpp : {\nhadoop_palo_path : '/dir',\nhadoop_configs : 'fs.default.name=hdfs://host:port;mapred.job.tracker=host:port;hadoop.job.ugi=user,password'\n}\n}"),(0,n.kt)("h4",{id:"yarn_config_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"yarn_config_dir")),(0,n.kt)("p",null,'Default\uff1aDorisFE.DORIS_HOME_DIR + "/lib/yarn-config"'),(0,n.kt)("p",null,"Default yarn config file directory \uff0cEach time before running the yarn command, we need to check that the  config file exists under this path, and if not, create them."),(0,n.kt)("h4",{id:"yarn_client_path"},(0,n.kt)("inlineCode",{parentName:"h4"},"yarn_client_path")),(0,n.kt)("p",null,'Default\uff1aDORIS_HOME_DIR + "/lib/yarn-client/hadoop/bin/yarn"'),(0,n.kt)("p",null,"Default yarn client path"),(0,n.kt)("h4",{id:"spark_launcher_log_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"spark_launcher_log_dir")),(0,n.kt)("p",null,'Default\uff1a sys_log_dir + "/spark_launcher_log"'),(0,n.kt)("p",null,"The specified spark launcher log dir"),(0,n.kt)("h4",{id:"spark_resource_path"},(0,n.kt)("inlineCode",{parentName:"h4"},"spark_resource_path")),(0,n.kt)("p",null,"Default\uff1anone"),(0,n.kt)("p",null,"Default spark dependencies path"),(0,n.kt)("h4",{id:"spark_home_default_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"spark_home_default_dir")),(0,n.kt)("p",null,'Default\uff1aDORIS_HOME_DIR + "/lib/spark2x"'),(0,n.kt)("p",null,"Default spark home dir"),(0,n.kt)("h4",{id:"spark_dpp_version"},(0,n.kt)("inlineCode",{parentName:"h4"},"spark_dpp_version")),(0,n.kt)("p",null,"Default\uff1a1.0.0"),(0,n.kt)("p",null,"Default spark dpp version"),(0,n.kt)("h3",{id:"else"},"Else"),(0,n.kt)("h4",{id:"tmp_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"tmp_dir")),(0,n.kt)("p",null,'Default\uff1aDorisFE.DORIS_HOME_DIR + "/temp_dir"'),(0,n.kt)("p",null,"temp dir is used to save intermediate results of some process, such as backup and restore process.  file in this dir will be cleaned after these process is finished."),(0,n.kt)("h4",{id:"custom_config_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"custom_config_dir")),(0,n.kt)("p",null,'Default\uff1aDorisFE.DORIS_HOME_DIR + "/conf"'),(0,n.kt)("p",null,"Custom configuration file directory"),(0,n.kt)("p",null,"Configure the location of the ",(0,n.kt)("inlineCode",{parentName:"p"},"fe_custom.conf")," file. The default is in the ",(0,n.kt)("inlineCode",{parentName:"p"},"conf/")," directory."),(0,n.kt)("p",null,"In some deployment environments, the ",(0,n.kt)("inlineCode",{parentName:"p"},"conf/")," directory may be overwritten due to system upgrades. This will cause the user modified configuration items to be overwritten. At this time, we can store ",(0,n.kt)("inlineCode",{parentName:"p"},"fe_custom.conf")," in another specified directory to prevent the configuration file from being overwritten."),(0,n.kt)("h4",{id:"plugin_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"plugin_dir")),(0,n.kt)("p",null,'Default\uff1aDORIS_HOME + "/plugins'),(0,n.kt)("p",null,"plugin install directory"),(0,n.kt)("h4",{id:"plugin_enable"},(0,n.kt)("inlineCode",{parentName:"h4"},"plugin_enable")),(0,n.kt)("p",null,"Default:true"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Whether the plug-in is enabled, enabled by default"),(0,n.kt)("h4",{id:"small_file_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"small_file_dir")),(0,n.kt)("p",null,"Default\uff1aDORIS_HOME_DIR/small_files"),(0,n.kt)("p",null,"Save small files"),(0,n.kt)("h4",{id:"max_small_file_size_bytes"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_small_file_size_bytes")),(0,n.kt)("p",null,"Default\uff1a1M"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"The max size of a single file store in SmallFileMgr"),(0,n.kt)("h4",{id:"max_small_file_number"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_small_file_number")),(0,n.kt)("p",null,"Default\uff1a100"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"The max number of files store in SmallFileMgr"),(0,n.kt)("h4",{id:"enable_metric_calculator"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_metric_calculator")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"If set to true, metric collector will be run as a daemon timer to collect metrics at fix interval"),(0,n.kt)("h4",{id:"report_queue_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"report_queue_size")),(0,n.kt)("p",null,"Default\uff1a 100"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This threshold is to avoid piling up too many report task in FE, which may cause OOM exception.  In some large Doris cluster, eg: 100 Backends with ten million replicas, a tablet report may cost  several seconds after some modification of metadata(drop partition, etc..). And one Backend will report tablets info every 1 min, so unlimited receiving reports is unacceptable. we will optimize the processing speed of tablet report in future, but now, just discard the report if queue size exceeding limit.\nSome online time cost:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"  1. disk report: 0-1 msta\n  2. sk report: 0-1 ms\n  3. tablet report\n  4. 10000 replicas: 200ms\n")),(0,n.kt)("h4",{id:"backup_job_default_timeout_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"backup_job_default_timeout_ms")),(0,n.kt)("p",null,"Default\uff1a86400 * 1000  (1 day)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"default timeout of backup job"),(0,n.kt)("h4",{id:"max_backup_restore_job_num_per_db"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_backup_restore_job_num_per_db")),(0,n.kt)("p",null,"Default: 10"),(0,n.kt)("p",null,"This configuration is mainly used to control the number of backup/restore tasks recorded in each database."),(0,n.kt)("h4",{id:"enable_quantile_state_type"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_quantile_state_type")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Whether to enable the quantile_state data type"),(0,n.kt)("h4",{id:"enable_date_conversion"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_date_conversion")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"FE will convert date/datetime to datev2/datetimev2(0) automatically."),(0,n.kt)("h4",{id:"enable_decimal_conversion"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_decimal_conversion")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"FE will convert DecimalV2 to DecimalV3 automatically."),(0,n.kt)("h4",{id:"proxy_auth_magic_prefix"},(0,n.kt)("inlineCode",{parentName:"h4"},"proxy_auth_magic_prefix")),(0,n.kt)("p",null,"Default\uff1ax@8"),(0,n.kt)("h4",{id:"proxy_auth_enable"},(0,n.kt)("inlineCode",{parentName:"h4"},"proxy_auth_enable")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("h4",{id:"enable_func_pushdown"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_func_pushdown")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"Whether to push the filter conditions with functions down to MYSQL, when exectue query of ODBC\u3001JDBC external tables"),(0,n.kt)("h4",{id:"jdbc_drivers_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"jdbc_drivers_dir")),(0,n.kt)("p",null,"Default: ",(0,n.kt)("inlineCode",{parentName:"p"},"${DORIS_HOME}/jdbc_drivers"),";"),(0,n.kt)("p",null,"IsMutable\uff1afalse"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"The default dir to put jdbc drivers."),(0,n.kt)("h4",{id:"max_error_tablet_of_broker_load"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_error_tablet_of_broker_load")),(0,n.kt)("p",null,"Default: 3;"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Maximum number of error tablet showed in broker load."),(0,n.kt)("h4",{id:"default_db_max_running_txn_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"default_db_max_running_txn_num")),(0,n.kt)("p",null,"Default\uff1a-1"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Used to set the default database transaction quota size."),(0,n.kt)("p",null,"The default value setting to -1 means using ",(0,n.kt)("inlineCode",{parentName:"p"},"max_running_txn_num_per_db")," instead of ",(0,n.kt)("inlineCode",{parentName:"p"},"default_db_max_running_txn_num"),"."),(0,n.kt)("p",null,"To set the quota size of a single database, you can use:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"Set the database transaction quota\nALTER DATABASE db_name SET TRANSACTION QUOTA quota;\nView configuration\nshow data \uff08Detail\uff1aHELP SHOW DATA\uff09\n")),(0,n.kt)("h4",{id:"prefer_compute_node_for_external_table"},(0,n.kt)("inlineCode",{parentName:"h4"},"prefer_compute_node_for_external_table")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"If set to true, query on external table will prefer to assign to compute node. And the max number of compute node is controlled by ",(0,n.kt)("inlineCode",{parentName:"p"},"min_backend_num_for_external_table"),".\nIf set to false, query on external table will assign to any node."),(0,n.kt)("h4",{id:"min_backend_num_for_external_table"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_backend_num_for_external_table")),(0,n.kt)("p",null,"Default\uff1a3"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"Only take effect when ",(0,n.kt)("inlineCode",{parentName:"p"},"prefer_compute_node_for_external_table")," is true. If the compute node number is less than this value, query on external table will try to get some mix node to assign, to let the total number of node reach this value.\nIf the compute node number is larger than this value, query on external table will assign to compute node only."),(0,n.kt)("h4",{id:"infodb_support_ext_catalog"},(0,n.kt)("inlineCode",{parentName:"h4"},"infodb_support_ext_catalog")),(0,n.kt)("version",{since:"1.2.4"}),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"IsMutable: true"),(0,n.kt)("p",null,"MasterOnly: false"),(0,n.kt)("p",null,"If false, when select from tables in information_schema database,\nthe result will not contain the information of the table in external catalog.\nThis is to avoid query time when external catalog is not reachable."),(0,n.kt)("h4",{id:"enable_query_hit_stats"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_query_hit_stats")),(0,n.kt)("version",{since:"dev"}),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"IsMutable: true"),(0,n.kt)("p",null,"MasterOnly: false"),(0,n.kt)("p",null,"Controls whether to enable query hit statistics. The default is false."),(0,n.kt)("h4",{id:"div_precision_increment"},(0,n.kt)("inlineCode",{parentName:"h4"},"div_precision_increment")),(0,n.kt)("version",{since:"dev"}),(0,n.kt)("p",null,"Default: 4"),(0,n.kt)("p",null,"This variable indicates the number of digits by which to increase the scale of the result of\ndivision operations performed with the ",(0,n.kt)("inlineCode",{parentName:"p"},"/")," operator."),(0,n.kt)("h4",{id:"enable_convert_light_weight_schema_change"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_convert_light_weight_schema_change")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"Temporary configuration option. After it is enabled, a background thread will be started to automatically modify all olap tables to light schema change. The modification results can be viewed through the command ",(0,n.kt)("inlineCode",{parentName:"p"},"show convert_light_schema_change [from db]"),", and the conversion results of all non-light schema change tables will be displayed."),(0,n.kt)("h4",{id:"disable_local_deploy_manager_drop_node"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_local_deploy_manager_drop_node")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"Forbid LocalDeployManager drop nodes to prevent errors in the cluster.info file from causing nodes to be dropped."),(0,n.kt)("h4",{id:"mysqldb_replace_name"},(0,n.kt)("inlineCode",{parentName:"h4"},"mysqldb_replace_name")),(0,n.kt)("p",null,"Default: mysql"),(0,n.kt)("p",null,"To ensure compatibility with the MySQL ecosystem, Doris includes a built-in database called mysql. If this database conflicts with a user's own database, please modify this field to replace the name of the Doris built-in MySQL database with a different name."),(0,n.kt)("h4",{id:"max_auto_partition_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_auto_partition_num")),(0,n.kt)("p",null,"Default value: 2000"),(0,n.kt)("p",null,"For auto-partitioned tables to prevent users from accidentally creating a large number of partitions, the number of partitions allowed per OLAP table is ",(0,n.kt)("inlineCode",{parentName:"p"},"max_auto_partition_num"),". Default 2000."))}c.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/3dd99dca.d99cc6c2.js b/assets/js/3dd99dca.d99cc6c2.js
new file mode 100644
index 0000000..edf2bef
--- /dev/null
+++ b/assets/js/3dd99dca.d99cc6c2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoris_website=self.webpackChunkdoris_website||[]).push([[84891],{3905:(e,t,l)=>{l.d(t,{Zo:()=>u,kt:()=>m});var a=l(67294);function n(e,t,l){return t in e?Object.defineProperty(e,t,{value:l,enumerable:!0,configurable:!0,writable:!0}):e[t]=l,e}function i(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}function o(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?i(Object(l),!0).forEach((function(t){n(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):i(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}function r(e,t){if(null==e)return{};var l,a,n=function(e,t){if(null==e)return{};var l,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)l=i[a],t.indexOf(l)>=0||(n[l]=e[l]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)l=i[a],t.indexOf(l)>=0||Object.prototype.propertyIsEnumerable.call(e,l)&&(n[l]=e[l])}return n}var s=a.createContext({}),d=function(e){var t=a.useContext(s),l=t;return e&&(l="function"==typeof e?e(t):o(o({},t),e)),l},u=function(e){var t=d(e.components);return a.createElement(s.Provider,{value:t},e.children)},_="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var l=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=r(e,["components","mdxType","originalType","parentName"]),_=d(l),p=n,m=_["".concat(s,".").concat(p)]||_[p]||c[p]||i;return l?a.createElement(m,o(o({ref:t},u),{},{components:l})):a.createElement(m,o({ref:t},u))}));function m(e,t){var l=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=l.length,o=new Array(i);o[0]=p;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r[_]="string"==typeof e?e:n,o[1]=r;for(var d=2;d<i;d++)o[d]=l[d];return a.createElement.apply(null,o)}return a.createElement.apply(null,l)}p.displayName="MDXCreateElement"},11019:(e,t,l)=>{l.r(t),l.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>r,toc:()=>d});var a=l(87462),n=(l(67294),l(3905));const i={title:"FE Configuration",language:"en",toc_min_heading_level:2,toc_max_heading_level:4},o=void 0,r={unversionedId:"admin-manual/config/fe-config",id:"admin-manual/config/fe-config",title:"FE Configuration",description:"\x3c!--",source:"@site/docs/admin-manual/config/fe-config.md",sourceDirName:"admin-manual/config",slug:"/admin-manual/config/fe-config",permalink:"/docs/dev/admin-manual/config/fe-config",draft:!1,tags:[],version:"current",frontMatter:{title:"FE Configuration",language:"en",toc_min_heading_level:2,toc_max_heading_level:4},sidebar:"docs",previous:{title:"Config Dir",permalink:"/docs/dev/admin-manual/config/config-dir"},next:{title:"BE Configuration",permalink:"/docs/dev/admin-manual/config/be-config"}},s={},d=[{value:"View configuration items",id:"view-configuration-items",level:2},{value:"Set configuration items",id:"set-configuration-items",level:2},{value:"Examples",id:"examples",level:2},{value:"Configurations",id:"configurations",level:2},{value:"Metadata And Cluster",id:"metadata-and-cluster",level:3},{value:"<code>meta_dir</code>",id:"meta_dir",level:4},{value:"<code>catalog_try_lock_timeout_ms</code>",id:"catalog_try_lock_timeout_ms",level:4},{value:"<code>enable_bdbje_debug_mode</code>",id:"enable_bdbje_debug_mode",level:4},{value:"<code>max_bdbje_clock_delta_ms</code>",id:"max_bdbje_clock_delta_ms",level:4},{value:"<code>metadata_failure_recovery</code>",id:"metadata_failure_recovery",level:4},{value:"<code>txn_rollback_limit</code>",id:"txn_rollback_limit",level:4},{value:"<code>grpc_threadmgr_threads_nums</code>",id:"grpc_threadmgr_threads_nums",level:4},{value:"<code>bdbje_replica_ack_timeout_second</code>",id:"bdbje_replica_ack_timeout_second",level:4},{value:"<code>bdbje_lock_timeout_second</code>",id:"bdbje_lock_timeout_second",level:4},{value:"<code>bdbje_heartbeat_timeout_second</code>",id:"bdbje_heartbeat_timeout_second",level:4},{value:"<code>replica_ack_policy</code>",id:"replica_ack_policy",level:4},{value:"<code>replica_sync_policy</code>",id:"replica_sync_policy",level:4},{value:"<code>master_sync_policy</code>",id:"master_sync_policy",level:4},{value:"<code>bdbje_reserved_disk_bytes</code>",id:"bdbje_reserved_disk_bytes",level:4},{value:"<code>ignore_meta_check</code>",id:"ignore_meta_check",level:4},{value:"<code>meta_delay_toleration_second</code>",id:"meta_delay_toleration_second",level:4},{value:"<code>edit_log_port</code>",id:"edit_log_port",level:4},{value:"<code>edit_log_type</code>",id:"edit_log_type",level:4},{value:"<code>edit_log_roll_num</code>",id:"edit_log_roll_num",level:4},{value:"<code>force_do_metadata_checkpoint</code>",id:"force_do_metadata_checkpoint",level:4},{value:"<code>metadata_checkpoint_memory_threshold</code>",id:"metadata_checkpoint_memory_threshold",level:4},{value:"<code>max_same_name_catalog_trash_num</code>",id:"max_same_name_catalog_trash_num",level:4},{value:"<code>cluster_id</code>",id:"cluster_id",level:4},{value:"<code>heartbeat_mgr_blocking_queue_size</code>",id:"heartbeat_mgr_blocking_queue_size",level:4},{value:"<code>heartbeat_mgr_threads_num</code>",id:"heartbeat_mgr_threads_num",level:4},{value:"<code>disable_cluster_feature</code>",id:"disable_cluster_feature",level:4},{value:"<code>enable_deploy_manager</code>",id:"enable_deploy_manager",level:4},{value:"<code>with_k8s_certs</code>",id:"with_k8s_certs",level:4},{value:"<code>enable_fqdn_mode</code>",id:"enable_fqdn_mode",level:4},{value:"<code>enable_token_check</code>",id:"enable_token_check",level:4},{value:"<code>enable_multi_tags</code>",id:"enable_multi_tags",level:4},{value:"<code>initial_root_password</code>",id:"initial_root_password",level:4},{value:"Service",id:"service",level:3},{value:"<code>query_port</code>",id:"query_port",level:4},{value:"<code>arrow_flight_sql_port</code>",id:"arrow_flight_sql_port",level:4},{value:"<code>frontend_address</code>",id:"frontend_address",level:4},{value:"<code>priority_networks</code>",id:"priority_networks",level:4},{value:"<code>http_port</code>",id:"http_port",level:4},{value:"<code>https_port</code>",id:"https_port",level:4},{value:"<code>enable_https</code>",id:"enable_https",level:4},{value:"<code>enable_ssl</code>",id:"enable_ssl",level:4},{value:"<code>qe_max_connection</code>",id:"qe_max_connection",level:4},{value:"<code>check_java_version</code>",id:"check_java_version",level:4},{value:"<code>rpc_port</code>",id:"rpc_port",level:4},{value:"<code>thrift_server_type</code>",id:"thrift_server_type",level:4},{value:"<code>thrift_server_max_worker_threads</code>",id:"thrift_server_max_worker_threads",level:4},{value:"<code>thrift_backlog_num</code>",id:"thrift_backlog_num",level:4},{value:"<code>thrift_client_timeout_ms</code>",id:"thrift_client_timeout_ms",level:4},{value:"<code>use_compact_thrift_rpc</code>",id:"use_compact_thrift_rpc",level:4},{value:"<code>grpc_max_message_size_bytes</code>",id:"grpc_max_message_size_bytes",level:4},{value:"<code>max_mysql_service_task_threads_num</code>",id:"max_mysql_service_task_threads_num",level:4},{value:"<code>mysql_service_io_threads_num</code>",id:"mysql_service_io_threads_num",level:4},{value:"<code>mysql_nio_backlog_num</code>",id:"mysql_nio_backlog_num",level:4},{value:"<code>broker_timeout_ms</code>",id:"broker_timeout_ms",level:4},{value:"<code>backend_rpc_timeout_ms</code>",id:"backend_rpc_timeout_ms",level:4},{value:"<code>drop_backend_after_decommission</code>",id:"drop_backend_after_decommission",level:4},{value:"<code>max_backend_down_time_second</code>",id:"max_backend_down_time_second",level:4},{value:"<code>disable_backend_black_list</code>",id:"disable_backend_black_list",level:4},{value:"<code>max_backend_heartbeat_failure_tolerance_count</code>",id:"max_backend_heartbeat_failure_tolerance_count",level:4},{value:"<code>enable_access_file_without_broker</code>",id:"enable_access_file_without_broker",level:4},{value:"<code>agent_task_resend_wait_time_ms</code>",id:"agent_task_resend_wait_time_ms",level:4},{value:"<code>max_agent_task_threads_num</code>",id:"max_agent_task_threads_num",level:4},{value:"<code>remote_fragment_exec_timeout_ms</code>",id:"remote_fragment_exec_timeout_ms",level:4},{value:"<code>auth_token</code>",id:"auth_token",level:4},{value:"<code>enable_http_server_v2</code>",id:"enable_http_server_v2",level:4},{value:"<code>http_api_extra_base_path</code>",id:"http_api_extra_base_path",level:4},{value:"<code>jetty_server_acceptors</code>",id:"jetty_server_acceptors",level:4},{value:"<code>jetty_server_selectors</code>",id:"jetty_server_selectors",level:4},{value:"<code>jetty_server_workers</code>",id:"jetty_server_workers",level:4},{value:"<code>jetty_server_max_http_post_size</code>",id:"jetty_server_max_http_post_size",level:4},{value:"<code>jetty_server_max_http_header_size</code>",id:"jetty_server_max_http_header_size",level:4},{value:"Query Engine",id:"query-engine",level:3},{value:"<code>default_max_query_instances</code>",id:"default_max_query_instances",level:4},{value:"<code>max_query_retry_time</code>",id:"max_query_retry_time",level:4},{value:"<code>max_dynamic_partition_num</code>",id:"max_dynamic_partition_num",level:4},{value:"<code>dynamic_partition_enable</code>",id:"dynamic_partition_enable",level:4},{value:"<code>dynamic_partition_check_interval_seconds</code>",id:"dynamic_partition_check_interval_seconds",level:4},{value:"<code>max_multi_partition_num</code>",id:"max_multi_partition_num",level:4},{value:"<code>multi_partition_name_prefix</code>",id:"multi_partition_name_prefix",level:4},{value:"<code>partition_in_memory_update_interval_secs</code>",id:"partition_in_memory_update_interval_secs",level:4},{value:"<code>enable_concurrent_update</code>",id:"enable_concurrent_update",level:4},{value:"<code>lower_case_table_names</code>",id:"lower_case_table_names",level:4},{value:"<code>table_name_length_limit</code>",id:"table_name_length_limit",level:4},{value:"<code>cache_enable_sql_mode</code>",id:"cache_enable_sql_mode",level:4},{value:"<code>cache_enable_partition_mode</code>",id:"cache_enable_partition_mode",level:4},{value:"<code>cache_result_max_row_count</code>",id:"cache_result_max_row_count",level:4},{value:"<code>cache_result_max_data_size</code>",id:"cache_result_max_data_size",level:4},{value:"<code>cache_last_version_interval_second</code>",id:"cache_last_version_interval_second",level:4},{value:"<code>enable_batch_delete_by_default</code>",id:"enable_batch_delete_by_default",level:4},{value:"<code>max_allowed_in_element_num_of_delete</code>",id:"max_allowed_in_element_num_of_delete",level:4},{value:"<code>max_running_rollup_job_num_per_table</code>",id:"max_running_rollup_job_num_per_table",level:4},{value:"<code>max_distribution_pruner_recursion_depth</code>",id:"max_distribution_pruner_recursion_depth",level:4},{value:"<code>enable_local_replica_selection</code>",id:"enable_local_replica_selection",level:4},{value:"<code>enable_local_replica_selection_fallback</code>",id:"enable_local_replica_selection_fallback",level:4},{value:"<code>expr_depth_limit</code>",id:"expr_depth_limit",level:4},{value:"<code>expr_children_limit</code>",id:"expr_children_limit",level:4},{value:"<code>be_exec_version</code>",id:"be_exec_version",level:4},{value:"<code>max_be_exec_version</code>",id:"max_be_exec_version",level:4},{value:"<code>min_be_exec_version</code>",id:"min_be_exec_version",level:4},{value:"<code>max_query_profile_num</code>",id:"max_query_profile_num",level:4},{value:"<code>publish_version_interval_ms</code>",id:"publish_version_interval_ms",level:4},{value:"<code>publish_version_timeout_second</code>",id:"publish_version_timeout_second",level:4},{value:"<code>query_colocate_join_memory_limit_penalty_factor</code>",id:"query_colocate_join_memory_limit_penalty_factor",level:4},{value:"<code>rewrite_count_distinct_to_bitmap_hll</code>",id:"rewrite_count_distinct_to_bitmap_hll",level:4},{value:"Load And Export",id:"load-and-export",level:3},{value:"<code>enable_vectorized_load</code>",id:"enable_vectorized_load",level:4},{value:"<code>enable_new_load_scan_node</code>",id:"enable_new_load_scan_node",level:4},{value:"<code>default_max_filter_ratio</code>",id:"default_max_filter_ratio",level:4},{value:"<code>max_running_txn_num_per_db</code>",id:"max_running_txn_num_per_db",level:4},{value:"<code>using_old_load_usage_pattern</code>",id:"using_old_load_usage_pattern",level:4},{value:"<code>disable_load_job</code>",id:"disable_load_job",level:4},{value:"<code>commit_timeout_second</code>",id:"commit_timeout_second",level:4},{value:"<code>max_unfinished_load_job</code>",id:"max_unfinished_load_job",level:4},{value:"<code>db_used_data_quota_update_interval_secs</code>",id:"db_used_data_quota_update_interval_secs",level:4},{value:"<code>disable_show_stream_load</code>",id:"disable_show_stream_load",level:4},{value:"<code>max_stream_load_record_size</code>",id:"max_stream_load_record_size",level:4},{value:"<code>fetch_stream_load_record_interval_second</code>",id:"fetch_stream_load_record_interval_second",level:4},{value:"<code>max_bytes_per_broker_scanner</code>",id:"max_bytes_per_broker_scanner",level:4},{value:"<code>default_load_parallelism</code>",id:"default_load_parallelism",level:4},{value:"<code>max_broker_concurrency</code>",id:"max_broker_concurrency",level:4},{value:"<code>min_bytes_per_broker_scanner</code>",id:"min_bytes_per_broker_scanner",level:4},{value:"<code>period_of_auto_resume_min</code>",id:"period_of_auto_resume_min",level:4},{value:"<code>max_tolerable_backend_down_num</code>",id:"max_tolerable_backend_down_num",level:4},{value:"<code>max_routine_load_task_num_per_be</code>",id:"max_routine_load_task_num_per_be",level:4},{value:"<code>max_routine_load_task_concurrent_num</code>",id:"max_routine_load_task_concurrent_num",level:4},{value:"<code>max_routine_load_job_num</code>",id:"max_routine_load_job_num",level:4},{value:"<code>desired_max_waiting_jobs</code>",id:"desired_max_waiting_jobs",level:4},{value:"<code>disable_hadoop_load</code>",id:"disable_hadoop_load",level:4},{value:"<code>enable_spark_load</code>",id:"enable_spark_load",level:4},{value:"<code>spark_load_checker_interval_second</code>",id:"spark_load_checker_interval_second",level:4},{value:"<code>async_loading_load_task_pool_size</code>",id:"async_loading_load_task_pool_size",level:4},{value:"<code>async_pending_load_task_pool_size</code>",id:"async_pending_load_task_pool_size",level:4},{value:"<code>async_load_task_pool_size</code>",id:"async_load_task_pool_size",level:4},{value:"<code>enable_single_replica_load</code>",id:"enable_single_replica_load",level:4},{value:"<code>min_load_timeout_second</code>",id:"min_load_timeout_second",level:4},{value:"<code>max_stream_load_timeout_second</code>",id:"max_stream_load_timeout_second",level:4},{value:"<code>max_load_timeout_second</code>",id:"max_load_timeout_second",level:4},{value:"<code>stream_load_default_timeout_second</code>",id:"stream_load_default_timeout_second",level:4},{value:"<code>stream_load_default_precommit_timeout_second</code>",id:"stream_load_default_precommit_timeout_second",level:4},{value:"<code>stream_load_default_memtable_on_sink_node</code>",id:"stream_load_default_memtable_on_sink_node",level:4},{value:"<code>insert_load_default_timeout_second</code>",id:"insert_load_default_timeout_second",level:4},{value:"<code>mini_load_default_timeout_second</code>",id:"mini_load_default_timeout_second",level:4},{value:"<code>broker_load_default_timeout_second</code>",id:"broker_load_default_timeout_second",level:4},{value:"<code>spark_load_default_timeout_second</code>",id:"spark_load_default_timeout_second",level:4},{value:"<code>hadoop_load_default_timeout_second</code>",id:"hadoop_load_default_timeout_second",level:4},{value:"<code>load_running_job_num_limit</code>",id:"load_running_job_num_limit",level:4},{value:"<code>load_input_size_limit_gb</code>",id:"load_input_size_limit_gb",level:4},{value:"<code>load_etl_thread_num_normal_priority</code>",id:"load_etl_thread_num_normal_priority",level:4},{value:"<code>load_etl_thread_num_high_priority</code>",id:"load_etl_thread_num_high_priority",level:4},{value:"<code>load_pending_thread_num_normal_priority</code>",id:"load_pending_thread_num_normal_priority",level:4},{value:"<code>load_pending_thread_num_high_priority</code>",id:"load_pending_thread_num_high_priority",level:4},{value:"<code>load_checker_interval_second</code>",id:"load_checker_interval_second",level:4},{value:"<code>load_straggler_wait_second</code>",id:"load_straggler_wait_second",level:4},{value:"<code>label_keep_max_second</code>",id:"label_keep_max_second",level:4},{value:"<code>streaming_label_keep_max_second</code>",id:"streaming_label_keep_max_second",level:4},{value:"<code>label_clean_interval_second</code>",id:"label_clean_interval_second",level:4},{value:"<code>transaction_clean_interval_second</code>",id:"transaction_clean_interval_second",level:4},{value:"<code>sync_commit_interval_second</code>",id:"sync_commit_interval_second",level:4},{value:"<code>sync_checker_interval_second</code>",id:"sync_checker_interval_second",level:4},{value:"<code>max_sync_task_threads_num</code>",id:"max_sync_task_threads_num",level:4},{value:"<code>min_sync_commit_size</code>",id:"min_sync_commit_size",level:4},{value:"<code>min_bytes_sync_commit</code>",id:"min_bytes_sync_commit",level:4},{value:"<code>max_bytes_sync_commit</code>",id:"max_bytes_sync_commit",level:4},{value:"<code>enable_outfile_to_local</code>",id:"enable_outfile_to_local",level:4},{value:"<code>export_tablet_num_per_task</code>",id:"export_tablet_num_per_task",level:4},{value:"<code>export_task_default_timeout_second</code>",id:"export_task_default_timeout_second",level:4},{value:"<code>export_running_job_num_limit</code>",id:"export_running_job_num_limit",level:4},{value:"<code>export_checker_interval_second</code>",id:"export_checker_interval_second",level:4},{value:"Log",id:"log",level:3},{value:"<code>log_roll_size_mb</code>",id:"log_roll_size_mb",level:4},{value:"<code>sys_log_dir</code>",id:"sys_log_dir",level:4},{value:"<code>sys_log_level</code>",id:"sys_log_level",level:4},{value:"<code>sys_log_roll_num</code>",id:"sys_log_roll_num",level:4},{value:"<code>sys_log_verbose_modules</code>",id:"sys_log_verbose_modules",level:4},{value:"<code>sys_log_roll_interval</code>",id:"sys_log_roll_interval",level:4},{value:"<code>sys_log_delete_age</code>",id:"sys_log_delete_age",level:4},{value:"<code>sys_log_roll_mode</code>",id:"sys_log_roll_mode",level:4},{value:"<code>sys_log_enable_compress</code>",id:"sys_log_enable_compress",level:4},{value:"<code>audit_log_dir</code>",id:"audit_log_dir",level:4},{value:"<code>audit_log_roll_num</code>",id:"audit_log_roll_num",level:4},{value:"<code>audit_log_modules</code>",id:"audit_log_modules",level:4},{value:"<code>qe_slow_log_ms</code>",id:"qe_slow_log_ms",level:4},{value:"<code>audit_log_roll_interval</code>",id:"audit_log_roll_interval",level:4},{value:"<code>audit_log_delete_age</code>",id:"audit_log_delete_age",level:4},{value:"<code>audit_log_enable_compress</code>",id:"audit_log_enable_compress",level:4},{value:"<code>nereids_trace_log_dir</code>",id:"nereids_trace_log_dir",level:4},{value:"Storage",id:"storage",level:3},{value:"<code>min_replication_num_per_tablet</code>",id:"min_replication_num_per_tablet",level:4},{value:"<code>max_replication_num_per_tablet</code>",id:"max_replication_num_per_tablet",level:4},{value:"<code>default_db_data_quota_bytes</code>",id:"default_db_data_quota_bytes",level:4},{value:"<code>default_db_replica_quota_size</code>",id:"default_db_replica_quota_size",level:4},{value:"<code>recover_with_empty_tablet</code>",id:"recover_with_empty_tablet",level:4},{value:"<code>min_clone_task_timeout_sec</code> <code>And max_clone_task_timeout_sec</code>",id:"min_clone_task_timeout_sec-and-max_clone_task_timeout_sec",level:4},{value:"<code>disable_storage_medium_check</code>",id:"disable_storage_medium_check",level:4},{value:"<code>decommission_tablet_check_threshold</code>",id:"decommission_tablet_check_threshold",level:4},{value:"<code>partition_rebalance_max_moves_num_per_selection</code>",id:"partition_rebalance_max_moves_num_per_selection",level:4},{value:"<code>partition_rebalance_move_expire_after_access</code>",id:"partition_rebalance_move_expire_after_access",level:4},{value:"<code>tablet_rebalancer_type</code>",id:"tablet_rebalancer_type",level:4},{value:"<code>max_balancing_tablets</code>",id:"max_balancing_tablets",level:4},{value:"<code>max_scheduling_tablets</code>",id:"max_scheduling_tablets",level:4},{value:"<code>disable_balance</code>",id:"disable_balance",level:4},{value:"<code>disable_disk_balance</code>",id:"disable_disk_balance",level:4},{value:"<code>balance_load_score_threshold</code>",id:"balance_load_score_threshold",level:4},{value:"<code>capacity_used_percent_high_water</code>",id:"capacity_used_percent_high_water",level:4},{value:"<code>clone_distribution_balance_threshold</code>",id:"clone_distribution_balance_threshold",level:4},{value:"<code>clone_capacity_balance_threshold</code>",id:"clone_capacity_balance_threshold",level:4},{value:"<code>disable_colocate_balance</code>",id:"disable_colocate_balance",level:4},{value:"<code>balance_slot_num_per_path</code>",id:"balance_slot_num_per_path",level:4},{value:"<code>disable_tablet_scheduler</code>",id:"disable_tablet_scheduler",level:4},{value:"<code>enable_force_drop_redundant_replica</code>",id:"enable_force_drop_redundant_replica",level:4},{value:"<code>colocate_group_relocate_delay_second</code>",id:"colocate_group_relocate_delay_second",level:4},{value:"<code>repair_slow_replica</code>",id:"repair_slow_replica",level:4},{value:"<code>min_version_count_indicate_replica_compaction_too_slow</code>",id:"min_version_count_indicate_replica_compaction_too_slow",level:4},{value:"<code>skip_compaction_slower_replica</code>",id:"skip_compaction_slower_replica",level:4},{value:"<code>valid_version_count_delta_ratio_between_replicas</code>",id:"valid_version_count_delta_ratio_between_replicas",level:4},{value:"<code>min_bytes_indicate_replica_too_large</code>",id:"min_bytes_indicate_replica_too_large",level:4},{value:"<code>schedule_slot_num_per_hdd_path</code>",id:"schedule_slot_num_per_hdd_path",level:4},{value:"<code>schedule_slot_num_per_ssd_path</code>",id:"schedule_slot_num_per_ssd_path",level:4},{value:"<code>tablet_repair_delay_factor_second</code>",id:"tablet_repair_delay_factor_second",level:4},{value:"<code>tablet_stat_update_interval_second</code>",id:"tablet_stat_update_interval_second",level:4},{value:"<code>storage_flood_stage_usage_percent</code>",id:"storage_flood_stage_usage_percent",level:4},{value:"<code>storage_flood_stage_left_capacity_bytes</code>",id:"storage_flood_stage_left_capacity_bytes",level:5},{value:"<code>storage_high_watermark_usage_percent</code>",id:"storage_high_watermark_usage_percent",level:4},{value:"<code>storage_min_left_capacity_bytes</code>",id:"storage_min_left_capacity_bytes",level:4},{value:"<code>catalog_trash_expire_second</code>",id:"catalog_trash_expire_second",level:4},{value:"<code>storage_cooldown_second</code>",id:"storage_cooldown_second",level:4},{value:"<code>default_storage_medium</code>",id:"default_storage_medium",level:4},{value:"<code>enable_storage_policy</code>",id:"enable_storage_policy",level:4},{value:"<code>check_consistency_default_timeout_second</code>",id:"check_consistency_default_timeout_second",level:4},{value:"<code>consistency_check_start_time</code>",id:"consistency_check_start_time",level:4},{value:"<code>consistency_check_end_time</code>",id:"consistency_check_end_time",level:4},{value:"<code>replica_delay_recovery_second</code>",id:"replica_delay_recovery_second",level:4},{value:"<code>tablet_create_timeout_second</code>",id:"tablet_create_timeout_second",level:4},{value:"<code>tablet_delete_timeout_second</code>",id:"tablet_delete_timeout_second",level:4},{value:"<code>delete_job_max_timeout_second</code>",id:"delete_job_max_timeout_second",level:4},{value:"<code>alter_table_timeout_second</code>",id:"alter_table_timeout_second",level:4},{value:"<code>max_replica_count_when_schema_change</code>",id:"max_replica_count_when_schema_change",level:4},{value:"<code>history_job_keep_max_second</code>",id:"history_job_keep_max_second",level:4},{value:"<code>max_create_table_timeout_second</code>",id:"max_create_table_timeout_second",level:4},{value:"External Table",id:"external-table",level:3},{value:"<code>file_scan_node_split_num</code>",id:"file_scan_node_split_num",level:4},{value:"<code>file_scan_node_split_size</code>",id:"file_scan_node_split_size",level:4},{value:"<code>enable_odbc_mysql_broker_table</code>",id:"enable_odbc_mysql_broker_table",level:4},{value:"<code>max_hive_partition_cache_num</code>",id:"max_hive_partition_cache_num",level:4},{value:"<code>hive_metastore_client_timeout_second</code>",id:"hive_metastore_client_timeout_second",level:4},{value:"<code>max_external_cache_loader_thread_pool_size</code>",id:"max_external_cache_loader_thread_pool_size",level:4},{value:"<code>max_external_file_cache_num</code>",id:"max_external_file_cache_num",level:4},{value:"<code>max_external_schema_cache_num</code>",id:"max_external_schema_cache_num",level:4},{value:"<code>external_cache_expire_time_minutes_after_access</code>",id:"external_cache_expire_time_minutes_after_access",level:4},{value:"<code>es_state_sync_interval_second</code>",id:"es_state_sync_interval_second",level:4},{value:"External Resources",id:"external-resources",level:3},{value:"<code>dpp_hadoop_client_path</code>",id:"dpp_hadoop_client_path",level:4},{value:"<code>dpp_bytes_per_reduce</code>",id:"dpp_bytes_per_reduce",level:4},{value:"<code>dpp_default_cluster</code>",id:"dpp_default_cluster",level:4},{value:"<code>dpp_default_config_str</code>",id:"dpp_default_config_str",level:4},{value:"<code>dpp_config_str</code>",id:"dpp_config_str",level:4},{value:"<code>yarn_config_dir</code>",id:"yarn_config_dir",level:4},{value:"<code>yarn_client_path</code>",id:"yarn_client_path",level:4},{value:"<code>spark_launcher_log_dir</code>",id:"spark_launcher_log_dir",level:4},{value:"<code>spark_resource_path</code>",id:"spark_resource_path",level:4},{value:"<code>spark_home_default_dir</code>",id:"spark_home_default_dir",level:4},{value:"<code>spark_dpp_version</code>",id:"spark_dpp_version",level:4},{value:"Else",id:"else",level:3},{value:"<code>tmp_dir</code>",id:"tmp_dir",level:4},{value:"<code>custom_config_dir</code>",id:"custom_config_dir",level:4},{value:"<code>plugin_dir</code>",id:"plugin_dir",level:4},{value:"<code>plugin_enable</code>",id:"plugin_enable",level:4},{value:"<code>small_file_dir</code>",id:"small_file_dir",level:4},{value:"<code>max_small_file_size_bytes</code>",id:"max_small_file_size_bytes",level:4},{value:"<code>max_small_file_number</code>",id:"max_small_file_number",level:4},{value:"<code>enable_metric_calculator</code>",id:"enable_metric_calculator",level:4},{value:"<code>report_queue_size</code>",id:"report_queue_size",level:4},{value:"<code>backup_job_default_timeout_ms</code>",id:"backup_job_default_timeout_ms",level:4},{value:"<code>max_backup_restore_job_num_per_db</code>",id:"max_backup_restore_job_num_per_db",level:4},{value:"<code>enable_quantile_state_type</code>",id:"enable_quantile_state_type",level:4},{value:"<code>enable_date_conversion</code>",id:"enable_date_conversion",level:4},{value:"<code>enable_decimal_conversion</code>",id:"enable_decimal_conversion",level:4},{value:"<code>proxy_auth_magic_prefix</code>",id:"proxy_auth_magic_prefix",level:4},{value:"<code>proxy_auth_enable</code>",id:"proxy_auth_enable",level:4},{value:"<code>enable_func_pushdown</code>",id:"enable_func_pushdown",level:4},{value:"<code>jdbc_drivers_dir</code>",id:"jdbc_drivers_dir",level:4},{value:"<code>max_error_tablet_of_broker_load</code>",id:"max_error_tablet_of_broker_load",level:4},{value:"<code>default_db_max_running_txn_num</code>",id:"default_db_max_running_txn_num",level:4},{value:"<code>prefer_compute_node_for_external_table</code>",id:"prefer_compute_node_for_external_table",level:4},{value:"<code>min_backend_num_for_external_table</code>",id:"min_backend_num_for_external_table",level:4},{value:"<code>infodb_support_ext_catalog</code>",id:"infodb_support_ext_catalog",level:4},{value:"<code>enable_query_hit_stats</code>",id:"enable_query_hit_stats",level:4},{value:"<code>div_precision_increment</code>",id:"div_precision_increment",level:4},{value:"<code>enable_convert_light_weight_schema_change</code>",id:"enable_convert_light_weight_schema_change",level:4},{value:"<code>disable_local_deploy_manager_drop_node</code>",id:"disable_local_deploy_manager_drop_node",level:4},{value:"<code>mysqldb_replace_name</code>",id:"mysqldb_replace_name",level:4},{value:"<code>max_auto_partition_num</code>",id:"max_auto_partition_num",level:4}],u={toc:d},_="wrapper";function c(e){let{components:t,...l}=e;return(0,n.kt)(_,(0,a.Z)({},u,l,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"fe-configuration"},"FE Configuration"),(0,n.kt)("p",null,"This document mainly introduces the relevant configuration items of FE."),(0,n.kt)("p",null,"The FE configuration file ",(0,n.kt)("inlineCode",{parentName:"p"},"fe.conf")," is usually stored in the ",(0,n.kt)("inlineCode",{parentName:"p"},"conf/")," directory of the FE deployment path. In version 0.14, another configuration file ",(0,n.kt)("inlineCode",{parentName:"p"},"fe_custom.conf")," will be introduced. The configuration file is used to record the configuration items that are dynamically configured and persisted by the user during operation."),(0,n.kt)("p",null,"After the FE process is started, it will read the configuration items in ",(0,n.kt)("inlineCode",{parentName:"p"},"fe.conf")," first, and then read the configuration items in ",(0,n.kt)("inlineCode",{parentName:"p"},"fe_custom.conf"),". The configuration items in ",(0,n.kt)("inlineCode",{parentName:"p"},"fe_custom.conf")," will overwrite the same configuration items in ",(0,n.kt)("inlineCode",{parentName:"p"},"fe.conf"),"."),(0,n.kt)("p",null,"The location of the ",(0,n.kt)("inlineCode",{parentName:"p"},"fe_custom.conf")," file can be configured in ",(0,n.kt)("inlineCode",{parentName:"p"},"fe.conf")," through the ",(0,n.kt)("inlineCode",{parentName:"p"},"custom_config_dir")," configuration item."),(0,n.kt)("h2",{id:"view-configuration-items"},"View configuration items"),(0,n.kt)("p",null,"There are two ways to view the configuration items of FE:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"FE web page"),(0,n.kt)("p",{parentName:"li"},"Open the FE web page ",(0,n.kt)("inlineCode",{parentName:"p"},"http://fe_host:fe_http_port/variable")," in the browser. You can see the currently effective FE configuration items in ",(0,n.kt)("inlineCode",{parentName:"p"},"Configure Info"),".")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"View by command"),(0,n.kt)("p",{parentName:"li"},"After the FE is started, you can view the configuration items of the FE in the MySQL client with the following command,Concrete language law reference ",(0,n.kt)("a",{parentName:"p",href:"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SHOW-CONFIG"},"ADMIN-SHOW-CONFIG"),":"),(0,n.kt)("p",{parentName:"li"},(0,n.kt)("inlineCode",{parentName:"p"},"ADMIN SHOW FRONTEND CONFIG;")),(0,n.kt)("p",{parentName:"li"},"The meanings of the columns in the results are as follows:"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Key: the name of the configuration item."),(0,n.kt)("li",{parentName:"ul"},"Value: The value of the current configuration item."),(0,n.kt)("li",{parentName:"ul"},"Type: The configuration item value type, such as integer or string."),(0,n.kt)("li",{parentName:"ul"},"IsMutable: whether it can be dynamically configured. If true, the configuration item can be dynamically configured at runtime. If false, it means that the configuration item can only be configured in ",(0,n.kt)("inlineCode",{parentName:"li"},"fe.conf")," and takes effect after restarting FE."),(0,n.kt)("li",{parentName:"ul"},"MasterOnly: Whether it is a unique configuration item of Master FE node. If it is true, it means that the configuration item is meaningful only at the Master FE node, and is meaningless to other types of FE nodes. If false, it means that the configuration item is meaningful in all types of FE nodes."),(0,n.kt)("li",{parentName:"ul"},"Comment: The description of the configuration item.")))),(0,n.kt)("h2",{id:"set-configuration-items"},"Set configuration items"),(0,n.kt)("p",null,"There are two ways to configure FE configuration items:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Static configuration"),(0,n.kt)("p",{parentName:"li"},"Add and set configuration items in the ",(0,n.kt)("inlineCode",{parentName:"p"},"conf/fe.conf")," file. The configuration items in ",(0,n.kt)("inlineCode",{parentName:"p"},"fe.conf")," will be read when the FE process starts. Configuration items not in ",(0,n.kt)("inlineCode",{parentName:"p"},"fe.conf")," will use default values.")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Dynamic configuration via MySQL protocol"),(0,n.kt)("p",{parentName:"li"},"After the FE starts, you can set the configuration items dynamically through the following commands. This command requires administrator privilege."),(0,n.kt)("p",{parentName:"li"},(0,n.kt)("inlineCode",{parentName:"p"},'ADMIN SET FRONTEND CONFIG (" fe_config_name "=" fe_config_value ");')),(0,n.kt)("p",{parentName:"li"},"Not all configuration items support dynamic configuration. You can check whether the dynamic configuration is supported by the ",(0,n.kt)("inlineCode",{parentName:"p"},"IsMutable")," column in the",(0,n.kt)("inlineCode",{parentName:"p"},"ADMIN SHOW FRONTEND CONFIG;"),"command result."),(0,n.kt)("p",{parentName:"li"},"If the configuration item of ",(0,n.kt)("inlineCode",{parentName:"p"},"MasterOnly")," is modified, the command will be directly forwarded to the Master FE and only the corresponding configuration item in the Master FE will be modified."),(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Configuration items modified in this way will become invalid after the FE process restarts.")),(0,n.kt)("p",{parentName:"li"},"For more help on this command, you can view it through the ",(0,n.kt)("inlineCode",{parentName:"p"},"HELP ADMIN SET CONFIG;")," command.")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Dynamic configuration via HTTP protocol"),(0,n.kt)("p",{parentName:"li"},"For details, please refer to ",(0,n.kt)("a",{parentName:"p",href:"/docs/dev/admin-manual/http-actions/fe/set-config-action"},"Set Config Action")),(0,n.kt)("p",{parentName:"li"},"This method can also persist the modified configuration items. The configuration items will be persisted in the ",(0,n.kt)("inlineCode",{parentName:"p"},"fe_custom.conf")," file and will still take effect after FE is restarted."))),(0,n.kt)("h2",{id:"examples"},"Examples"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Modify ",(0,n.kt)("inlineCode",{parentName:"p"},"async_pending_load_task_pool_size")),(0,n.kt)("p",{parentName:"li"},"Through ",(0,n.kt)("inlineCode",{parentName:"p"},"ADMIN SHOW FRONTEND CONFIG;")," you can see that this configuration item cannot be dynamically configured (",(0,n.kt)("inlineCode",{parentName:"p"},"IsMutable")," is false). You need to add in ",(0,n.kt)("inlineCode",{parentName:"p"},"fe.conf"),":"),(0,n.kt)("p",{parentName:"li"},(0,n.kt)("inlineCode",{parentName:"p"},"async_pending_load_task_pool_size = 20")),(0,n.kt)("p",{parentName:"li"},"Then restart the FE process to take effect the configuration.")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Modify ",(0,n.kt)("inlineCode",{parentName:"p"},"dynamic_partition_enable")),(0,n.kt)("p",{parentName:"li"},"Through ",(0,n.kt)("inlineCode",{parentName:"p"},"ADMIN SHOW FRONTEND CONFIG;")," you can see that the configuration item can be dynamically configured (",(0,n.kt)("inlineCode",{parentName:"p"},"IsMutable")," is true). And it is the unique configuration of Master FE. Then first we can connect to any FE and execute the following command to modify the configuration:"),(0,n.kt)("pre",{parentName:"li"},(0,n.kt)("code",{parentName:"pre"},'ADMIN SET FRONTEND CONFIG ("dynamic_partition_enable" = "true"); `\n')),(0,n.kt)("p",{parentName:"li"},"Afterwards, you can view the modified value with the following command:"),(0,n.kt)("pre",{parentName:"li"},(0,n.kt)("code",{parentName:"pre"},"set forward_to_master = true;\nADMIN SHOW FRONTEND CONFIG;\n")),(0,n.kt)("p",{parentName:"li"},"After modification in the above manner, if the Master FE restarts or a Master election is performed, the configuration will be invalid. You can add the configuration item directly in ",(0,n.kt)("inlineCode",{parentName:"p"},"fe.conf")," and restart the FE to make the configuration item permanent.")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Modify ",(0,n.kt)("inlineCode",{parentName:"p"},"max_distribution_pruner_recursion_depth")),(0,n.kt)("p",{parentName:"li"},"Through ",(0,n.kt)("inlineCode",{parentName:"p"},"ADMIN SHOW FRONTEND CONFIG;")," you can see that the configuration item can be dynamically configured (",(0,n.kt)("inlineCode",{parentName:"p"},"IsMutable")," is true). It is not unique to Master FE."),(0,n.kt)("p",{parentName:"li"},"Similarly, we can modify the configuration by dynamically modifying the configuration command. Because this configuration is not unique to the Master FE, user need to connect to different FEs separately to modify the configuration dynamically, so that all FEs use the modified configuration values."))),(0,n.kt)("h2",{id:"configurations"},"Configurations"),(0,n.kt)("h3",{id:"metadata-and-cluster"},"Metadata And Cluster"),(0,n.kt)("h4",{id:"meta_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"meta_dir")),(0,n.kt)("p",null,'Default\uff1aDORIS_HOME_DIR + "/doris-meta"'),(0,n.kt)("p",null,"Type: string Description: Doris meta data will be saved here.The storage of this dir is highly recommended as to be:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"High write performance (SSD)"),(0,n.kt)("li",{parentName:"ul"},"Safe (RAID\uff09")),(0,n.kt)("h4",{id:"catalog_try_lock_timeout_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"catalog_try_lock_timeout_ms")),(0,n.kt)("p",null,"Default\uff1a5000  \uff08ms\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"The tryLock timeout configuration of catalog lock.  Normally it does not need to change, unless you need to test something."),(0,n.kt)("h4",{id:"enable_bdbje_debug_mode"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_bdbje_debug_mode")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"If set to true, FE will be started in BDBJE debug mode"),(0,n.kt)("h4",{id:"max_bdbje_clock_delta_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_bdbje_clock_delta_ms")),(0,n.kt)("p",null,"Default\uff1a5000 \uff085s\uff09"),(0,n.kt)("p",null,"Set the maximum acceptable clock skew between non-master FE to Master FE host. This value is checked whenever a non-master FE establishes a connection to master FE via BDBJE. The connection is abandoned if the clock skew is larger than this value."),(0,n.kt)("h4",{id:"metadata_failure_recovery"},(0,n.kt)("inlineCode",{parentName:"h4"},"metadata_failure_recovery")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"If true, FE will reset bdbje replication group(that is, to remove all electable nodes info)  and is supposed to start as Master.  If all the electable nodes can not start, we can copy the meta data to another node and set this config to true to try to restart the FE.."),(0,n.kt)("h4",{id:"txn_rollback_limit"},(0,n.kt)("inlineCode",{parentName:"h4"},"txn_rollback_limit")),(0,n.kt)("p",null,"Default\uff1a100"),(0,n.kt)("p",null,"the max txn number which bdbje can rollback when trying to rejoin the group"),(0,n.kt)("h4",{id:"grpc_threadmgr_threads_nums"},(0,n.kt)("inlineCode",{parentName:"h4"},"grpc_threadmgr_threads_nums")),(0,n.kt)("p",null,"Default: 4096"),(0,n.kt)("p",null,"Num of thread to handle grpc events in grpc_threadmgr."),(0,n.kt)("h4",{id:"bdbje_replica_ack_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"bdbje_replica_ack_timeout_second")),(0,n.kt)("p",null,"Default\uff1a10  (s)"),(0,n.kt)("p",null,"The replica ack timeout when writing to bdbje \uff0c When writing some relatively large logs, the ack time may time out, resulting in log writing failure.  At this time, you can increase this value appropriately."),(0,n.kt)("h4",{id:"bdbje_lock_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"bdbje_lock_timeout_second")),(0,n.kt)("p",null,"Default\uff1a5"),(0,n.kt)("p",null,"The lock timeout of bdbje operation\uff0c If there are many LockTimeoutException in FE WARN log, you can try to increase this value"),(0,n.kt)("h4",{id:"bdbje_heartbeat_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"bdbje_heartbeat_timeout_second")),(0,n.kt)("p",null,"Default\uff1a30"),(0,n.kt)("p",null,"The heartbeat timeout of bdbje between master and follower. the default is 30 seconds, which is same as default value in bdbje. If the network is experiencing transient problems, of some unexpected long java GC annoying you,  you can try to increase this value to decrease the chances of false timeouts"),(0,n.kt)("h4",{id:"replica_ack_policy"},(0,n.kt)("inlineCode",{parentName:"h4"},"replica_ack_policy")),(0,n.kt)("p",null,"Default\uff1aSIMPLE_MAJORITY"),(0,n.kt)("p",null,"OPTION\uff1aALL, NONE, SIMPLE_MAJORITY"),(0,n.kt)("p",null,"Replica ack policy of bdbje. more info, see: ",(0,n.kt)("a",{parentName:"p",href:"http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/Durability.ReplicaAckPolicy.html"},"http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/Durability.ReplicaAckPolicy.html")),(0,n.kt)("h4",{id:"replica_sync_policy"},(0,n.kt)("inlineCode",{parentName:"h4"},"replica_sync_policy")),(0,n.kt)("p",null,"Default\uff1aSYNC"),(0,n.kt)("p",null,"\u9009\u9879\uff1aSYNC, NO_SYNC, WRITE_NO_SYNC"),(0,n.kt)("p",null,"Follower FE sync policy of bdbje."),(0,n.kt)("h4",{id:"master_sync_policy"},(0,n.kt)("inlineCode",{parentName:"h4"},"master_sync_policy")),(0,n.kt)("p",null,"Default\uff1aSYNC"),(0,n.kt)("p",null,"\u9009\u9879\uff1aSYNC, NO_SYNC, WRITE_NO_SYNC"),(0,n.kt)("p",null,"Master FE sync policy of bdbje. If you only deploy one Follower FE, set this to 'SYNC'. If you deploy more than 3 Follower FE,  you can set this and the following 'replica_sync_policy' to WRITE_NO_SYNC.  more info, see: ",(0,n.kt)("a",{parentName:"p",href:"http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/Durability.SyncPolicy.html"},"http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/Durability.SyncPolicy.html")),(0,n.kt)("h4",{id:"bdbje_reserved_disk_bytes"},(0,n.kt)("inlineCode",{parentName:"h4"},"bdbje_reserved_disk_bytes")),(0,n.kt)("p",null,"The desired upper limit on the number of bytes of reserved space to retain in a replicated JE Environment."),(0,n.kt)("p",null,"Default: 1073741824"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: false"),(0,n.kt)("h4",{id:"ignore_meta_check"},(0,n.kt)("inlineCode",{parentName:"h4"},"ignore_meta_check")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"If true, non-master FE will ignore the meta data delay gap between Master FE and its self,  even if the metadata delay gap exceeds ",(0,n.kt)("em",{parentName:"p"},"meta_delay_toleration_second"),".  Non-master FE will still offer read service.\nThis is helpful when you try to stop the Master FE for a relatively long time for some reason,  but still wish the non-master FE can offer read service."),(0,n.kt)("h4",{id:"meta_delay_toleration_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"meta_delay_toleration_second")),(0,n.kt)("p",null,"Default\uff1a300 \uff085 min\uff09"),(0,n.kt)("p",null,"Non-master FE will stop offering service  if meta data delay gap exceeds ",(0,n.kt)("em",{parentName:"p"},"meta_delay_toleration_second")),(0,n.kt)("h4",{id:"edit_log_port"},(0,n.kt)("inlineCode",{parentName:"h4"},"edit_log_port")),(0,n.kt)("p",null,"Default\uff1a9010"),(0,n.kt)("p",null,"bdbje port"),(0,n.kt)("h4",{id:"edit_log_type"},(0,n.kt)("inlineCode",{parentName:"h4"},"edit_log_type")),(0,n.kt)("p",null,"Default\uff1aBDB"),(0,n.kt)("p",null,"Edit log type.\nBDB: write log to bdbje\nLOCAL: deprecated.."),(0,n.kt)("h4",{id:"edit_log_roll_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"edit_log_roll_num")),(0,n.kt)("p",null,"Default\uff1a50000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Master FE will save image every ",(0,n.kt)("em",{parentName:"p"},"edit_log_roll_num")," meta journals."),(0,n.kt)("h4",{id:"force_do_metadata_checkpoint"},(0,n.kt)("inlineCode",{parentName:"h4"},"force_do_metadata_checkpoint")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"If set to true, the checkpoint thread will make the checkpoint regardless of the jvm memory used percent"),(0,n.kt)("h4",{id:"metadata_checkpoint_memory_threshold"},(0,n.kt)("inlineCode",{parentName:"h4"},"metadata_checkpoint_memory_threshold")),(0,n.kt)("p",null,"Default\uff1a60  \uff0860%\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"If the jvm memory used percent(heap or old mem pool) exceed this threshold, checkpoint thread will  not work to avoid OOM."),(0,n.kt)("h4",{id:"max_same_name_catalog_trash_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_same_name_catalog_trash_num")),(0,n.kt)("p",null,"It is used to set the maximum number of meta information with the same name in the catalog recycle bin. When the maximum value is exceeded, the earliest deleted meta trash will be completely deleted and cannot be recovered. 0 means not to keep objects of the same name. < 0 means no limit."),(0,n.kt)("p",null,"Note: The judgment of metadata with the same name will be limited to a certain range. For example, the judgment of the database with the same name will be limited to the same cluster, the judgment of the table with the same name will be limited to the same database (with the same database id), the judgment of the partition with the same name will be limited to the same database (with the same database id) and the same table (with the same table) same table id)."),(0,n.kt)("p",null,"Default: 3"),(0,n.kt)("p",null,"Is it possible to dynamically configure: true"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"cluster_id"},(0,n.kt)("inlineCode",{parentName:"h4"},"cluster_id")),(0,n.kt)("p",null,"Default\uff1a-1"),(0,n.kt)("p",null,"node(FE or BE) will be considered belonging to the same Palo cluster if they have same cluster id.  Cluster id is usually a random integer generated when master FE start at first time. You can also specify one."),(0,n.kt)("h4",{id:"heartbeat_mgr_blocking_queue_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"heartbeat_mgr_blocking_queue_size")),(0,n.kt)("p",null,"Default\uff1a1024"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"blocking queue size to store heartbeat task in heartbeat_mgr."),(0,n.kt)("h4",{id:"heartbeat_mgr_threads_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"heartbeat_mgr_threads_num")),(0,n.kt)("p",null,"Default\uff1a8"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"num of thread to handle heartbeat events in heartbeat_mgr."),(0,n.kt)("h4",{id:"disable_cluster_feature"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_cluster_feature")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"The multi cluster feature will be deprecated in version 0.12 \uff0cset this config to true will disable all operations related to cluster feature, include:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"create/drop cluster"),(0,n.kt)("li",{parentName:"ol"},"add free backend/add backend to cluster/decommission cluster balance"),(0,n.kt)("li",{parentName:"ol"},"change the backends num of cluster"),(0,n.kt)("li",{parentName:"ol"},"link/migration db")),(0,n.kt)("h4",{id:"enable_deploy_manager"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_deploy_manager")),(0,n.kt)("p",null,"Default\uff1adisable"),(0,n.kt)("p",null,"Set to true if you deploy Doris using thirdparty deploy manager"),(0,n.kt)("p",null,"Valid options are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"disable:    no deploy manager"),(0,n.kt)("li",{parentName:"ul"},"k8s:        Kubernetes"),(0,n.kt)("li",{parentName:"ul"},"ambari:     Ambari"),(0,n.kt)("li",{parentName:"ul"},"local:      Local File (for test or Boxer2 BCC version)")),(0,n.kt)("h4",{id:"with_k8s_certs"},(0,n.kt)("inlineCode",{parentName:"h4"},"with_k8s_certs")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"If use k8s deploy manager locally, set this to true and prepare the certs files"),(0,n.kt)("h4",{id:"enable_fqdn_mode"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_fqdn_mode")),(0,n.kt)("p",null,"This configuration is mainly used in the k8s cluster environment. When enable_fqdn_mode is true, the name of the pod where the be is located will remain unchanged after reconstruction, while the ip can be changed."),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"enable_token_check"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_token_check")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"For forward compatibility, will be removed later. check token when download image file."),(0,n.kt)("h4",{id:"enable_multi_tags"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_multi_tags")),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: true"),(0,n.kt)("p",null,"Whether to enable the multi-tags function of a single BE"),(0,n.kt)("h4",{id:"initial_root_password"},(0,n.kt)("inlineCode",{parentName:"h4"},"initial_root_password")),(0,n.kt)("p",null,"Set root user initial 2-staged SHA-1 encrypted password, default as '', means no root password. Subsequent ",(0,n.kt)("inlineCode",{parentName:"p"},"set password")," operations for root user will overwrite the initial root password."),(0,n.kt)("p",null,"Example: If you want to configure a plaintext password ",(0,n.kt)("inlineCode",{parentName:"p"},"root@123"),". You can execute Doris SQL ",(0,n.kt)("inlineCode",{parentName:"p"},"select password('root@123')")," to generate encrypted password ",(0,n.kt)("inlineCode",{parentName:"p"},"*A00C34073A26B40AB4307650BFB9309D6BFA6999"),"."),(0,n.kt)("p",null,"Default: empty string"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: true"),(0,n.kt)("h3",{id:"service"},"Service"),(0,n.kt)("h4",{id:"query_port"},(0,n.kt)("inlineCode",{parentName:"h4"},"query_port")),(0,n.kt)("p",null,"Default\uff1a9030"),(0,n.kt)("p",null,"FE MySQL server port"),(0,n.kt)("h4",{id:"arrow_flight_sql_port"},(0,n.kt)("inlineCode",{parentName:"h4"},"arrow_flight_sql_port")),(0,n.kt)("p",null,"Default\uff1a-1"),(0,n.kt)("p",null,"Arrow Flight SQL server port"),(0,n.kt)("h4",{id:"frontend_address"},(0,n.kt)("inlineCode",{parentName:"h4"},"frontend_address")),(0,n.kt)("p",null,"Status: Deprecated, not recommended use. This parameter may be deleted later"),(0,n.kt)("p",null,"Type: string"),(0,n.kt)("p",null,"Description: Explicitly set the IP address of FE instead of using ",(0,n.kt)("em",{parentName:"p"},"InetAddress.getByName")," to get the IP address. Usually in ",(0,n.kt)("em",{parentName:"p"},"InetAddress.getByName")," When the expected results cannot be obtained. Only IP address is supported, not hostname."),(0,n.kt)("p",null,"Default value: 0.0.0.0"),(0,n.kt)("h4",{id:"priority_networks"},(0,n.kt)("inlineCode",{parentName:"h4"},"priority_networks")),(0,n.kt)("p",null,"Default\uff1anone"),(0,n.kt)("p",null,"Declare a selection strategy for those servers have many ips.  Note that there should at most one ip match this list.  this is a list in semicolon-delimited format, in CIDR notation, e.g. 10.10.10.0/24 \uff0c If no ip match this rule, will choose one randomly."),(0,n.kt)("h4",{id:"http_port"},(0,n.kt)("inlineCode",{parentName:"h4"},"http_port")),(0,n.kt)("p",null,"Default\uff1a8030"),(0,n.kt)("p",null,"HTTP bind port. All FE http ports must be same currently."),(0,n.kt)("h4",{id:"https_port"},(0,n.kt)("inlineCode",{parentName:"h4"},"https_port")),(0,n.kt)("p",null,"Default\uff1a8050"),(0,n.kt)("p",null,"HTTPS bind port. All FE https ports must be same currently."),(0,n.kt)("h4",{id:"enable_https"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_https")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"Https enable flag. If the value is false, http is supported. Otherwise, both http and https are supported, and http requests are automatically redirected to https.\nIf enable_https is true, you need to configure ssl certificate information in fe.conf."),(0,n.kt)("h4",{id:"enable_ssl"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_ssl")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"If set to ture, doris will establish an encrypted channel based on the SSL protocol with mysql."),(0,n.kt)("h4",{id:"qe_max_connection"},(0,n.kt)("inlineCode",{parentName:"h4"},"qe_max_connection")),(0,n.kt)("p",null,"Default\uff1a1024"),(0,n.kt)("p",null,"Maximal number of connections per FE."),(0,n.kt)("h4",{id:"check_java_version"},(0,n.kt)("inlineCode",{parentName:"h4"},"check_java_version")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"Doris will check whether the compiled and run Java versions are compatible, if not, it will throw a Java version mismatch exception message and terminate the startup"),(0,n.kt)("h4",{id:"rpc_port"},(0,n.kt)("inlineCode",{parentName:"h4"},"rpc_port")),(0,n.kt)("p",null,"Default\uff1a9020"),(0,n.kt)("p",null,"FE Thrift Server port"),(0,n.kt)("h4",{id:"thrift_server_type"},(0,n.kt)("inlineCode",{parentName:"h4"},"thrift_server_type")),(0,n.kt)("p",null,"This configuration represents the service model used by The Thrift Service of FE, is of type String and is case-insensitive."),(0,n.kt)("p",null,"If this parameter is 'SIMPLE', then the 'TSimpleServer' model is used, which is generally not suitable for production and is limited to test use."),(0,n.kt)("p",null,"If the parameter is 'THREADED', then the 'TThreadedSelectorServer' model is used, which is a non-blocking I/O model, namely the master-slave Reactor model, which can timely respond to a large number of concurrent connection requests and performs well in most scenarios."),(0,n.kt)("p",null,"If this parameter is ",(0,n.kt)("inlineCode",{parentName:"p"},"THREAD_POOL"),", then the ",(0,n.kt)("inlineCode",{parentName:"p"},"TThreadPoolServer")," model is used, the model for blocking I/O model, use the thread pool to handle user connections, the number of simultaneous connections are limited by the number of thread pool, if we can estimate the number of concurrent requests in advance, and tolerant enough thread resources cost, this model will have a better performance, the service model is used by default"),(0,n.kt)("h4",{id:"thrift_server_max_worker_threads"},(0,n.kt)("inlineCode",{parentName:"h4"},"thrift_server_max_worker_threads")),(0,n.kt)("p",null,"Default\uff1a4096"),(0,n.kt)("p",null,"The thrift server max worker threads"),(0,n.kt)("h4",{id:"thrift_backlog_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"thrift_backlog_num")),(0,n.kt)("p",null,"Default\uff1a1024"),(0,n.kt)("p",null,"The backlog_num for thrift server \uff0c When you enlarge this backlog_num, you should ensure it's value larger than the linux /proc/sys/net/core/somaxconn config"),(0,n.kt)("h4",{id:"thrift_client_timeout_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"thrift_client_timeout_ms")),(0,n.kt)("p",null,"Default\uff1a0"),(0,n.kt)("p",null,"The connection timeout and socket timeout config for thrift server."),(0,n.kt)("p",null,"The value for thrift_client_timeout_ms is set to be zero to prevent read timeout."),(0,n.kt)("h4",{id:"use_compact_thrift_rpc"},(0,n.kt)("inlineCode",{parentName:"h4"},"use_compact_thrift_rpc")),(0,n.kt)("p",null,"Default: true"),(0,n.kt)("p",null,'Whether to use compressed format to send query plan structure. After it is turned on, the size of the query plan structure can be reduced by about 50%, thereby avoiding some "send fragment timeout" errors.\nHowever, in some high-concurrency small query scenarios, the concurrency may be reduced by about 10%.'),(0,n.kt)("h4",{id:"grpc_max_message_size_bytes"},(0,n.kt)("inlineCode",{parentName:"h4"},"grpc_max_message_size_bytes")),(0,n.kt)("p",null,"Default\uff1a1G"),(0,n.kt)("p",null,"Used to set the initial flow window size of the GRPC client channel, and also used to max message size.  When the result set is large, you may need to increase this value."),(0,n.kt)("h4",{id:"max_mysql_service_task_threads_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_mysql_service_task_threads_num")),(0,n.kt)("p",null,"Default\uff1a4096"),(0,n.kt)("p",null,"The number of threads responsible for Task events."),(0,n.kt)("h4",{id:"mysql_service_io_threads_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"mysql_service_io_threads_num")),(0,n.kt)("p",null,"Default\uff1a4"),(0,n.kt)("p",null,"When FE starts the MySQL server based on NIO model, the number of threads responsible for IO events."),(0,n.kt)("h4",{id:"mysql_nio_backlog_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"mysql_nio_backlog_num")),(0,n.kt)("p",null,"Default\uff1a1024"),(0,n.kt)("p",null,"The backlog_num for mysql nio server, When you enlarge this backlog_num, you should enlarge the value in the linux /proc/sys/net/core/somaxconn file at the same time"),(0,n.kt)("h4",{id:"broker_timeout_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"broker_timeout_ms")),(0,n.kt)("p",null,"Default\uff1a10000   \uff0810s\uff09"),(0,n.kt)("p",null,"Default broker RPC timeout"),(0,n.kt)("h4",{id:"backend_rpc_timeout_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"backend_rpc_timeout_ms")),(0,n.kt)("p",null,"Timeout millisecond for Fe sending rpc request to BE"),(0,n.kt)("p",null,"Default: 60000"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"drop_backend_after_decommission"},(0,n.kt)("inlineCode",{parentName:"h4"},"drop_backend_after_decommission")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"This configuration is used to control whether the system drops the BE after successfully decommissioning the BE. If true, the BE node will be deleted after the BE is successfully offline. If false, after the BE successfully goes offline, the BE will remain in the DECOMMISSION state, but will not be dropped."),(0,n.kt)("p",{parentName:"li"},"This configuration can play a role in certain scenarios. Assume that the initial state of a Doris cluster is one disk per BE node. After running for a period of time, the system has been vertically expanded, that is, each BE node adds 2 new disks. Because Doris currently does not support data balancing among the disks within the BE, the data volume of the initial disk may always be much higher than the data volume of the newly added disk. At this time, we can perform manual inter-disk balancing by the following operations:"),(0,n.kt)("ol",{parentName:"li"},(0,n.kt)("li",{parentName:"ol"},"Set the configuration item to false."),(0,n.kt)("li",{parentName:"ol"},"Perform a decommission operation on a certain BE node. This operation will migrate all data on the BE to other nodes."),(0,n.kt)("li",{parentName:"ol"},"After the decommission operation is completed, the BE will not be dropped. At this time, cancel the decommission status of the BE. Then the data will start to balance from other BE nodes back to this node. At this time, the data will be evenly distributed to all disks of the BE."),(0,n.kt)("li",{parentName:"ol"},"Perform steps 2 and 3 for all BE nodes in sequence, and finally achieve the purpose of disk balancing for all nodes")))),(0,n.kt)("h4",{id:"max_backend_down_time_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_backend_down_time_second")),(0,n.kt)("p",null,"Default\uff1a3600  \uff081 hour\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"If a backend is down for ",(0,n.kt)("em",{parentName:"p"},"max_backend_down_time_second"),", a BACKEND_DOWN event will be triggered."),(0,n.kt)("h4",{id:"disable_backend_black_list"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_backend_black_list")),(0,n.kt)("p",null,"Used to disable the BE blacklist function. After this function is disabled, if the query request to the BE fails, the BE will not be added to the blacklist.\nThis parameter is suitable for regression testing environments to reduce occasional bugs that cause a large number of regression tests to fail."),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"Is it possible to configure dynamically: true"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: false"),(0,n.kt)("h4",{id:"max_backend_heartbeat_failure_tolerance_count"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_backend_heartbeat_failure_tolerance_count")),(0,n.kt)("p",null,"The maximum tolerable number of BE node heartbeat failures. If the number of consecutive heartbeat failures exceeds this value, the BE state will be set to dead.\nThis parameter is suitable for regression test environments to reduce occasional heartbeat failures that cause a large number of regression test failures."),(0,n.kt)("p",null,"Default: 1"),(0,n.kt)("p",null,"Is it possible to configure dynamically: true"),(0,n.kt)("p",null,"Whether it is a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"enable_access_file_without_broker"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_access_file_without_broker")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This config is used to try skip broker when access bos or other cloud storage via broker"),(0,n.kt)("h4",{id:"agent_task_resend_wait_time_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"agent_task_resend_wait_time_ms")),(0,n.kt)("p",null,"Default\uff1a5000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This configuration will decide whether to resend agent task when create_time for agent_task is set, only when current_time - create_time > agent_task_resend_wait_time_ms can ReportHandler do resend agent task."),(0,n.kt)("p",null,"This configuration is currently mainly used to solve the problem of repeated sending of ",(0,n.kt)("inlineCode",{parentName:"p"},"PUBLISH_VERSION")," agent tasks. The current default value of this configuration is 5000, which is an experimental value."),(0,n.kt)("p",null,"Because there is a certain time delay between submitting agent tasks to AgentTaskQueue and submitting to be, Increasing the value of this configuration can effectively solve the problem of repeated sending of agent tasks,"),(0,n.kt)("p",null,"But at the same time, it will cause the submission of failed or failed execution of the agent task to be executed again for an extended period of time"),(0,n.kt)("h4",{id:"max_agent_task_threads_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_agent_task_threads_num")),(0,n.kt)("p",null,"Default\uff1a4096"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"max num of thread to handle agent task in agent task thread-pool."),(0,n.kt)("h4",{id:"remote_fragment_exec_timeout_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"remote_fragment_exec_timeout_ms")),(0,n.kt)("p",null,"Default\uff1a30000  \uff08ms\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"The timeout of executing async remote fragment.  In normal case, the async remote fragment will be executed in a short time. If system are under high load condition\uff0ctry to set this timeout longer."),(0,n.kt)("h4",{id:"auth_token"},(0,n.kt)("inlineCode",{parentName:"h4"},"auth_token")),(0,n.kt)("p",null,"Default\uff1aempty"),(0,n.kt)("p",null,"Cluster token used for internal authentication."),(0,n.kt)("h4",{id:"enable_http_server_v2"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_http_server_v2")),(0,n.kt)("p",null,"Default\uff1aThe default is true after the official 0.14.0 version is released, and the default is false before"),(0,n.kt)("p",null,"HTTP Server V2 is implemented by SpringBoot. It uses an architecture that separates the front and back ends. Only when httpv2 is enabled can users use the new front-end UI interface."),(0,n.kt)("h4",{id:"http_api_extra_base_path"},(0,n.kt)("inlineCode",{parentName:"h4"},"http_api_extra_base_path")),(0,n.kt)("p",null,"In some deployment environments, user need to specify an additional base path as the unified prefix of the HTTP API. This parameter is used by the user to specify additional prefixes.\nAfter setting, user can get the parameter value through the ",(0,n.kt)("inlineCode",{parentName:"p"},"GET /api/basepath")," interface. And the new UI will also try to get this base path first to assemble the URL. Only valid when ",(0,n.kt)("inlineCode",{parentName:"p"},"enable_http_server_v2")," is true."),(0,n.kt)("p",null,"The default is empty, that is, not set"),(0,n.kt)("h4",{id:"jetty_server_acceptors"},(0,n.kt)("inlineCode",{parentName:"h4"},"jetty_server_acceptors")),(0,n.kt)("p",null,"Default\uff1a2"),(0,n.kt)("h4",{id:"jetty_server_selectors"},(0,n.kt)("inlineCode",{parentName:"h4"},"jetty_server_selectors")),(0,n.kt)("p",null,"Default\uff1a4"),(0,n.kt)("h4",{id:"jetty_server_workers"},(0,n.kt)("inlineCode",{parentName:"h4"},"jetty_server_workers")),(0,n.kt)("p",null,"Default\uff1a0"),(0,n.kt)("p",null,"With the above three parameters, Jetty's thread architecture model is very simple, divided into acceptors, selectors and workers three thread pools. Acceptors are responsible for accepting new connections, and then hand them over to selectors to process the unpacking of the HTTP message protocol, and finally workers process the request. The first two thread pools adopt a non-blocking model, and one thread can handle the read and write of many sockets, so the number of thread pools is small."),(0,n.kt)("p",null,"For most projects, only 1-2 acceptors threads are required, and 2 to 4 selectors threads are sufficient. Workers are obstructive business logic, often have more database operations, and require a large number of threads. The specific number depends on the proportion of QPS and IO events of the application. The higher the QPS, the more threads are required, the higher the proportion of IO, the more threads waiting, and the more total threads required."),(0,n.kt)("p",null,"Worker thread pool is not set by default, set according to your needs"),(0,n.kt)("h4",{id:"jetty_server_max_http_post_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"jetty_server_max_http_post_size")),(0,n.kt)("p",null,"Default\uff1a",(0,n.kt)("inlineCode",{parentName:"p"},"100 * 1024 * 1024"),"  \uff08100MB\uff09"),(0,n.kt)("p",null,"This is the maximum number of bytes of the file uploaded by the put or post method, the default value: 100MB"),(0,n.kt)("h4",{id:"jetty_server_max_http_header_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"jetty_server_max_http_header_size")),(0,n.kt)("p",null,"Default\uff1a1048576  \uff081M\uff09"),(0,n.kt)("p",null,"http header size configuration parameter, the default value is 1M."),(0,n.kt)("h3",{id:"query-engine"},"Query Engine"),(0,n.kt)("h4",{id:"default_max_query_instances"},(0,n.kt)("inlineCode",{parentName:"h4"},"default_max_query_instances")),(0,n.kt)("p",null,"The default value when user property max_query_instances is equal or less than 0. This config is used to limit the max number of instances for a user. This parameter is less than or equal to 0 means unlimited."),(0,n.kt)("p",null,"The default value is -1"),(0,n.kt)("h4",{id:"max_query_retry_time"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_query_retry_time")),(0,n.kt)("p",null,"Default\uff1a1"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"The number of query retries.  A query may retry if we encounter RPC exception and no result has been sent to user.  You may reduce this number to avoid Avalanche disaster"),(0,n.kt)("h4",{id:"max_dynamic_partition_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_dynamic_partition_num")),(0,n.kt)("p",null,"Default\uff1a500"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,'Used to limit the maximum number of partitions that can be created when creating a dynamic partition table,  to avoid creating too many partitions at one time. The number is determined by "start" and "end" in the dynamic partition parameters.'),(0,n.kt)("h4",{id:"dynamic_partition_enable"},(0,n.kt)("inlineCode",{parentName:"h4"},"dynamic_partition_enable")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Whether to enable dynamic partition scheduler, enabled by default"),(0,n.kt)("h4",{id:"dynamic_partition_check_interval_seconds"},(0,n.kt)("inlineCode",{parentName:"h4"},"dynamic_partition_check_interval_seconds")),(0,n.kt)("p",null,"Default\uff1a600 \uff08s\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Decide how often to check dynamic partition"),(0,n.kt)("version",{since:"1.2.0"},(0,n.kt)("h4",{id:"max_multi_partition_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_multi_partition_num")),(0,n.kt)("p",null,"Default\uff1a4096"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,'Use this parameter to set the partition name prefix for multi partition,Only multi partition takes effect, not dynamic partitions. The default prefix is "p_".')),(0,n.kt)("h4",{id:"multi_partition_name_prefix"},(0,n.kt)("inlineCode",{parentName:"h4"},"multi_partition_name_prefix")),(0,n.kt)("p",null,"Default\uff1ap_"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,'Use this parameter to set the partition name prefix for multi partition, Only multi partition takes effect, not dynamic partitions.The default prefix is "p_".'),(0,n.kt)("h4",{id:"partition_in_memory_update_interval_secs"},(0,n.kt)("inlineCode",{parentName:"h4"},"partition_in_memory_update_interval_secs")),(0,n.kt)("p",null,"Default\uff1a300 (s)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Time to update global partition information in memory"),(0,n.kt)("h4",{id:"enable_concurrent_update"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_concurrent_update")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1afalse"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Whether to enable concurrent update"),(0,n.kt)("h4",{id:"lower_case_table_names"},(0,n.kt)("inlineCode",{parentName:"h4"},"lower_case_table_names")),(0,n.kt)("p",null,"Default\uff1a0"),(0,n.kt)("p",null,"IsMutable\uff1afalse"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This configuration can only be configured during cluster initialization and cannot be modified during cluster\nrestart and upgrade after initialization is complete."),(0,n.kt)("p",null,"0: table names are stored as specified and comparisons are case sensitive.\n1: table names are stored in lowercase and comparisons are not case sensitive.\n2: table names are stored as given but compared in lowercase."),(0,n.kt)("h4",{id:"table_name_length_limit"},(0,n.kt)("inlineCode",{parentName:"h4"},"table_name_length_limit")),(0,n.kt)("p",null,"Default\uff1a64"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Used to control the maximum table name length"),(0,n.kt)("h4",{id:"cache_enable_sql_mode"},(0,n.kt)("inlineCode",{parentName:"h4"},"cache_enable_sql_mode")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"If this switch is turned on, the SQL query result set will be cached. If the interval between the last visit version time in all partitions of all tables in the query is greater than cache_last_version_interval_second, and the result set is less than cache_result_max_row_count, and the data size is less than cache_result_max_data_size, the result set will be cached, and the next same SQL will hit the cache"),(0,n.kt)("p",null,"If set to true, fe will enable sql result caching. This option is suitable for offline data update scenarios"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null}),(0,n.kt)("th",{parentName:"tr",align:null},"case1"),(0,n.kt)("th",{parentName:"tr",align:null},"case2"),(0,n.kt)("th",{parentName:"tr",align:null},"case3"),(0,n.kt)("th",{parentName:"tr",align:null},"case4"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"enable_sql_cache"),(0,n.kt)("td",{parentName:"tr",align:null},"false"),(0,n.kt)("td",{parentName:"tr",align:null},"true"),(0,n.kt)("td",{parentName:"tr",align:null},"true"),(0,n.kt)("td",{parentName:"tr",align:null},"false")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"enable_partition_cache"),(0,n.kt)("td",{parentName:"tr",align:null},"false"),(0,n.kt)("td",{parentName:"tr",align:null},"false"),(0,n.kt)("td",{parentName:"tr",align:null},"true"),(0,n.kt)("td",{parentName:"tr",align:null},"true")))),(0,n.kt)("h4",{id:"cache_enable_partition_mode"},(0,n.kt)("inlineCode",{parentName:"h4"},"cache_enable_partition_mode")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"If set to true, fe will get data from be cache, This option is suitable for real-time updating of partial partitions."),(0,n.kt)("h4",{id:"cache_result_max_row_count"},(0,n.kt)("inlineCode",{parentName:"h4"},"cache_result_max_row_count")),(0,n.kt)("p",null,"Default\uff1a3000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"In order to avoid occupying too much memory, the maximum number of rows that can be cached is 3000 by default. If this threshold is exceeded, the cache cannot be set"),(0,n.kt)("h4",{id:"cache_result_max_data_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"cache_result_max_data_size")),(0,n.kt)("p",null,"Default: 31457280"),(0,n.kt)("p",null,"IsMutable: true"),(0,n.kt)("p",null,"MasterOnly: false"),(0,n.kt)("p",null,"In order to avoid occupying too much memory, the maximum data size of rows that can be cached is 10MB by default. If this threshold is exceeded, the cache cannot be set"),(0,n.kt)("h4",{id:"cache_last_version_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"cache_last_version_interval_second")),(0,n.kt)("p",null,"Default\uff1a30"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"The time interval of the latest partitioned version of the table refers to the time interval between the data update and the current version. It is generally set to 900 seconds, which distinguishes offline and real-time import"),(0,n.kt)("h4",{id:"enable_batch_delete_by_default"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_batch_delete_by_default")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Whether to add a delete sign column when create unique table"),(0,n.kt)("h4",{id:"max_allowed_in_element_num_of_delete"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_allowed_in_element_num_of_delete")),(0,n.kt)("p",null,"Default\uff1a1024"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This configuration is used to limit element num of InPredicate in delete statement."),(0,n.kt)("h4",{id:"max_running_rollup_job_num_per_table"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_running_rollup_job_num_per_table")),(0,n.kt)("p",null,"Default\uff1a1"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Control the concurrency limit of Rollup jobs"),(0,n.kt)("h4",{id:"max_distribution_pruner_recursion_depth"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_distribution_pruner_recursion_depth")),(0,n.kt)("p",null,"Default\uff1a100"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"This will limit the max recursion depth of hash distribution pruner.\neg: where a in (5 elements) and b in (4 elements) and c in (3 elements) and d in (2 elements).\na/b/c/d are distribution columns, so the recursion depth will be 5 ",(0,n.kt)("em",{parentName:"p"}," 4 ")," 3 * 2 = 120, larger than 100,\nSo that distribution pruner will no work and just return all buckets.\nIncrease the depth can support distribution pruning for more elements, but may cost more CPU."),(0,n.kt)("h4",{id:"enable_local_replica_selection"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_local_replica_selection")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"If set to true, Planner will try to select replica of tablet on same host as this Frontend.\nThis may reduce network transmission in following case:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"N hosts with N Backends and N Frontends deployed.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The data has N replicas.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"High concurrency queries are syyuyuient to all Frontends evenly"))),(0,n.kt)("p",null,"In this case, all Frontends can only use local replicas to do the query. If you want to allow fallback to nonlocal replicas when no local replicas available, set enable_local_replica_selection_fallback to true."),(0,n.kt)("h4",{id:"enable_local_replica_selection_fallback"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_local_replica_selection_fallback")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"Used with enable_local_replica_selection. If the local replicas is not available, fallback to the nonlocal replicas."),(0,n.kt)("h4",{id:"expr_depth_limit"},(0,n.kt)("inlineCode",{parentName:"h4"},"expr_depth_limit")),(0,n.kt)("p",null,"Default\uff1a3000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"Limit on the depth of an expr tree.  Exceed this limit may cause long analysis time while holding db read lock.  Do not set this if you know what you are doing"),(0,n.kt)("h4",{id:"expr_children_limit"},(0,n.kt)("inlineCode",{parentName:"h4"},"expr_children_limit")),(0,n.kt)("p",null,"Default\uff1a10000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"Limit on the number of expr children of an expr tree.  Exceed this limit may cause long analysis time while holding database read lock."),(0,n.kt)("h4",{id:"be_exec_version"},(0,n.kt)("inlineCode",{parentName:"h4"},"be_exec_version")),(0,n.kt)("p",null,"Used to define the serialization format for passing blocks between fragments."),(0,n.kt)("p",null,"Sometimes some of our code changes will change the data format of the block. In order to make the BE compatible with each other during the rolling upgrade process, we need to issue a data version from the FE to decide what format to send the data in."),(0,n.kt)("p",null,"Specifically, for example, there are 2 BEs in the cluster, one of which can support the latest $v_1$ after being upgraded, while the other only supports $v_0$. At this time, since the FE has not been upgraded yet, $v_0 is issued uniformly. $, BE interact in the old data format. After all BEs are upgraded, we will upgrade FE. At this time, the new FE will issue $v_1$, and the cluster will be uniformly switched to the new data format."),(0,n.kt)("p",null,"The default value is ",(0,n.kt)("inlineCode",{parentName:"p"},"max_be_exec_version"),". If there are special needs, we can manually set the format version to lower, but it should not be lower than ",(0,n.kt)("inlineCode",{parentName:"p"},"min_be_exec_version"),"."),(0,n.kt)("p",null,"Note that we should always keep the value of this variable between ",(0,n.kt)("inlineCode",{parentName:"p"},"BeExecVersionManager::min_be_exec_version")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"BeExecVersionManager::max_be_exec_version")," for all BEs. (That is to say, if a cluster that has completed the update needs to be downgraded, it should ensure the order of downgrading FE and then downgrading BE, or manually lower the variable in the settings and downgrade BE)"),(0,n.kt)("h4",{id:"max_be_exec_version"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_be_exec_version")),(0,n.kt)("p",null,"The latest data version currently supported, cannot be modified, and should be consistent with the ",(0,n.kt)("inlineCode",{parentName:"p"},"BeExecVersionManager::max_be_exec_version")," in the BE of the matching version."),(0,n.kt)("h4",{id:"min_be_exec_version"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_be_exec_version")),(0,n.kt)("p",null,"The oldest data version currently supported, which cannot be modified, should be consistent with the ",(0,n.kt)("inlineCode",{parentName:"p"},"BeExecVersionManager::min_be_exec_version")," in the BE of the matching version."),(0,n.kt)("h4",{id:"max_query_profile_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_query_profile_num")),(0,n.kt)("p",null,"The max number of query profile."),(0,n.kt)("p",null,"Default: 100"),(0,n.kt)("p",null,"Is it possible to dynamically configure: true"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: false"),(0,n.kt)("h4",{id:"publish_version_interval_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"publish_version_interval_ms")),(0,n.kt)("p",null,"Default\uff1a10 \uff08ms\uff09"),(0,n.kt)("p",null,"minimal intervals between two publish version action"),(0,n.kt)("h4",{id:"publish_version_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"publish_version_timeout_second")),(0,n.kt)("p",null,"Default\uff1a30 \uff08s\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Maximal waiting time for all publish version tasks of one transaction to be finished"),(0,n.kt)("h4",{id:"query_colocate_join_memory_limit_penalty_factor"},(0,n.kt)("inlineCode",{parentName:"h4"},"query_colocate_join_memory_limit_penalty_factor")),(0,n.kt)("p",null,"Default\uff1a1"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"colocote join PlanFragment instance\u7684memory_limit = exec_mem_limit / min (query_colocate_join_memory_limit_penalty_factor, instance_num)"),(0,n.kt)("h4",{id:"rewrite_count_distinct_to_bitmap_hll"},(0,n.kt)("inlineCode",{parentName:"h4"},"rewrite_count_distinct_to_bitmap_hll")),(0,n.kt)("p",null,"Default: true"),(0,n.kt)("p",null,"This variable is a session variable, and the session level takes effect."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Type: boolean"),(0,n.kt)("li",{parentName:"ul"},"Description: ",(0,n.kt)("strong",{parentName:"li"},"Only for the table of the AGG model"),", when the variable is true, when the user query contains aggregate functions such as count(distinct c1), if the type of the c1 column itself is bitmap, count distnct will be rewritten It is bitmap_union_count(c1). When the type of the c1 column itself is hll, count distinct will be rewritten as hll_union_agg(c1) If the variable is false, no overwriting occurs..")),(0,n.kt)("h3",{id:"load-and-export"},"Load And Export"),(0,n.kt)("h4",{id:"enable_vectorized_load"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_vectorized_load")),(0,n.kt)("p",null,"Default: true"),(0,n.kt)("p",null,"Whether to enable vectorized load"),(0,n.kt)("h4",{id:"enable_new_load_scan_node"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_new_load_scan_node")),(0,n.kt)("p",null,"Default: true"),(0,n.kt)("p",null,"Whether to enable file scan node"),(0,n.kt)("h4",{id:"default_max_filter_ratio"},(0,n.kt)("inlineCode",{parentName:"h4"},"default_max_filter_ratio")),(0,n.kt)("p",null,"Default\uff1a0"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Maximum percentage of data that can be filtered (due to reasons such as data is irregularly) , The default value is 0."),(0,n.kt)("h4",{id:"max_running_txn_num_per_db"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_running_txn_num_per_db")),(0,n.kt)("p",null,"Default\uff1a1000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This configuration is mainly used to control the number of concurrent load jobs of the same database."),(0,n.kt)("p",null,"When there are too many load jobs running in the cluster, the newly submitted load jobs may report errors:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-text"},"current running txns on db xxx is xx, larger than limit xx\n")),(0,n.kt)("p",null,"When this error is encountered, it means that the load jobs currently running in the cluster exceeds the configuration value. At this time, it is recommended to wait on the business side and retry the load jobs."),(0,n.kt)("p",null,"If you use the Connector, the value of this parameter can be adjusted appropriately, and there is no problem with thousands"),(0,n.kt)("h4",{id:"using_old_load_usage_pattern"},(0,n.kt)("inlineCode",{parentName:"h4"},"using_old_load_usage_pattern")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"If set to true, the insert stmt with processing error will still return a label to user.  And user can use this label to check the load job's status. The default value is false, which means if insert operation encounter errors,  exception will be thrown to user client directly without load label."),(0,n.kt)("h4",{id:"disable_load_job"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_load_job")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"if this is set to true"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"all pending load job will failed when call begin txn api"),(0,n.kt)("li",{parentName:"ul"},"all prepare load job will failed when call commit txn api"),(0,n.kt)("li",{parentName:"ul"},"all committed load job will waiting to be published")),(0,n.kt)("h4",{id:"commit_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"commit_timeout_second")),(0,n.kt)("p",null,"Default\uff1a30"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,'Maximal waiting time for all data inserted before one transaction to be committed\nThis is the timeout second for the command "commit"'),(0,n.kt)("h4",{id:"max_unfinished_load_job"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_unfinished_load_job")),(0,n.kt)("p",null,"Default\uff1a1000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Max number of load jobs, include PENDING\u3001ETL\u3001LOADING\u3001QUORUM_FINISHED. If exceed this number, load job is not allowed to be submitted"),(0,n.kt)("h4",{id:"db_used_data_quota_update_interval_secs"},(0,n.kt)("inlineCode",{parentName:"h4"},"db_used_data_quota_update_interval_secs")),(0,n.kt)("p",null,"Default\uff1a300 (s)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"One master daemon thread will update database used data quota for db txn manager every ",(0,n.kt)("inlineCode",{parentName:"p"},"db_used_data_quota_update_interval_secs")),(0,n.kt)("p",null,"For better data load performance, in the check of whether the amount of data used by the database before data load exceeds the quota, we do not calculate the amount of data already used by the database in real time, but obtain the periodically updated value of the daemon thread."),(0,n.kt)("p",null,"This configuration is used to set the time interval for updating the value of the amount of data used by the database"),(0,n.kt)("h4",{id:"disable_show_stream_load"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_show_stream_load")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Whether to disable show stream load and clear stream load records in memory."),(0,n.kt)("h4",{id:"max_stream_load_record_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_stream_load_record_size")),(0,n.kt)("p",null,"Default\uff1a5000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default max number of recent stream load record that can be stored in memory."),(0,n.kt)("h4",{id:"fetch_stream_load_record_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"fetch_stream_load_record_interval_second")),(0,n.kt)("p",null,"Default\uff1a120"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"fetch stream load record interval."),(0,n.kt)("h4",{id:"max_bytes_per_broker_scanner"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_bytes_per_broker_scanner")),(0,n.kt)("p",null,"Default\uff1a",(0,n.kt)("inlineCode",{parentName:"p"},"500 * 1024 * 1024 * 1024L"),"  \uff08500G\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Max bytes a broker scanner can process in one broker load job. Commonly, each Backends has one broker scanner."),(0,n.kt)("h4",{id:"default_load_parallelism"},(0,n.kt)("inlineCode",{parentName:"h4"},"default_load_parallelism")),(0,n.kt)("p",null,"Default: 1"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default parallelism of the broker load execution plan on a single node.\nIf the user to set the parallelism when the broker load is submitted, this parameter will be ignored.\nThis parameter will determine the concurrency of import tasks together with multiple configurations such as ",(0,n.kt)("inlineCode",{parentName:"p"},"max broker concurrency"),", ",(0,n.kt)("inlineCode",{parentName:"p"},"min bytes per broker scanner"),"."),(0,n.kt)("h4",{id:"max_broker_concurrency"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_broker_concurrency")),(0,n.kt)("p",null,"Default\uff1a10"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Maximal concurrency of broker scanners."),(0,n.kt)("h4",{id:"min_bytes_per_broker_scanner"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_bytes_per_broker_scanner")),(0,n.kt)("p",null,"Default\uff1a67108864L (64M)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Minimum bytes that a single broker scanner will read."),(0,n.kt)("h4",{id:"period_of_auto_resume_min"},(0,n.kt)("inlineCode",{parentName:"h4"},"period_of_auto_resume_min")),(0,n.kt)("p",null,"Default\uff1a5 \uff08s\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Automatically restore the cycle of Routine load"),(0,n.kt)("h4",{id:"max_tolerable_backend_down_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_tolerable_backend_down_num")),(0,n.kt)("p",null,"Default\uff1a0"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"As long as one BE is down, Routine Load cannot be automatically restored"),(0,n.kt)("h4",{id:"max_routine_load_task_num_per_be"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_routine_load_task_num_per_be")),(0,n.kt)("p",null,"Default\uff1a5"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"the max concurrent routine load task num per BE.  This is to limit the num of routine load tasks sending to a BE, and it should also less than BE config 'routine_load_thread_pool_size'(default 10), which is the routine load task thread pool size on BE."),(0,n.kt)("h4",{id:"max_routine_load_task_concurrent_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_routine_load_task_concurrent_num")),(0,n.kt)("p",null,"Default\uff1a5"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"the max concurrent routine load task num of a single routine load job"),(0,n.kt)("h4",{id:"max_routine_load_job_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_routine_load_job_num")),(0,n.kt)("p",null,"Default\uff1a100"),(0,n.kt)("p",null,"the max routine load job num, including NEED_SCHEDULED, RUNNING, PAUSE"),(0,n.kt)("h4",{id:"desired_max_waiting_jobs"},(0,n.kt)("inlineCode",{parentName:"h4"},"desired_max_waiting_jobs")),(0,n.kt)("p",null,"Default\uff1a100"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default number of waiting jobs for routine load and version 2 of load \uff0c This is a desired number.  In some situation, such as switch the master, the current number is maybe more than desired_max_waiting_jobs."),(0,n.kt)("h4",{id:"disable_hadoop_load"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_hadoop_load")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Load using hadoop cluster will be deprecated in future. Set to true to disable this kind of load."),(0,n.kt)("h4",{id:"enable_spark_load"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_spark_load")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Whether to enable spark load temporarily, it is not enabled by default"),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," This parameter has been deleted in version 1.2, spark_load is enabled by default"),(0,n.kt)("h4",{id:"spark_load_checker_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"spark_load_checker_interval_second")),(0,n.kt)("p",null,"Default\uff1a60"),(0,n.kt)("p",null,"Spark load scheduler run interval, default 60 seconds"),(0,n.kt)("h4",{id:"async_loading_load_task_pool_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"async_loading_load_task_pool_size")),(0,n.kt)("p",null,"Default\uff1a10"),(0,n.kt)("p",null,"IsMutable\uff1afalse"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"The loading_load task executor pool size. This pool size limits the max running loading_load tasks."),(0,n.kt)("p",null,"Currently, it only limits the loading_load task of broker load"),(0,n.kt)("h4",{id:"async_pending_load_task_pool_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"async_pending_load_task_pool_size")),(0,n.kt)("p",null,"Default\uff1a10"),(0,n.kt)("p",null,"IsMutable\uff1afalse"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"The pending_load task executor pool size. This pool size limits the max running pending_load tasks."),(0,n.kt)("p",null,"Currently, it only limits the pending_load task of broker load and spark load."),(0,n.kt)("p",null,"It should be less than 'max_running_txn_num_per_db'"),(0,n.kt)("h4",{id:"async_load_task_pool_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"async_load_task_pool_size")),(0,n.kt)("p",null,"Default\uff1a10"),(0,n.kt)("p",null,"IsMutable\uff1afalse"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This configuration is just for compatible with old version, this config has been replaced by async_loading_load_task_pool_size, it will be removed in the future."),(0,n.kt)("h4",{id:"enable_single_replica_load"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_single_replica_load")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Whether to enable to write single replica for stream load and broker load."),(0,n.kt)("h4",{id:"min_load_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_load_timeout_second")),(0,n.kt)("p",null,"Default\uff1a1 \uff081s\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Min stream load timeout applicable to all type of load"),(0,n.kt)("h4",{id:"max_stream_load_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_stream_load_timeout_second")),(0,n.kt)("p",null,"Default\uff1a259200 \uff083 day\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This configuration is specifically used to limit timeout setting for stream load. It is to prevent that failed stream load transactions cannot be canceled within a short time because of the user's large timeout setting"),(0,n.kt)("h4",{id:"max_load_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_load_timeout_second")),(0,n.kt)("p",null,"Default\uff1a259200 \uff083 day\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Max load timeout applicable to all type of load except for stream load"),(0,n.kt)("h4",{id:"stream_load_default_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"stream_load_default_timeout_second")),(0,n.kt)("p",null,"Default\uff1a86400 * 3 \uff083 day\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default stream load and streaming mini load timeout"),(0,n.kt)("h4",{id:"stream_load_default_precommit_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"stream_load_default_precommit_timeout_second")),(0,n.kt)("p",null,"Default\uff1a3600\uff08s\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default stream load pre-submission timeout"),(0,n.kt)("h4",{id:"stream_load_default_memtable_on_sink_node"},(0,n.kt)("inlineCode",{parentName:"h4"},"stream_load_default_memtable_on_sink_node")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"Enable memtable on sink node for stream load by default.\nWhen HTTP header ",(0,n.kt)("inlineCode",{parentName:"p"},"memtable_on_sink_node")," is not set."),(0,n.kt)("h4",{id:"insert_load_default_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"insert_load_default_timeout_second")),(0,n.kt)("p",null,"Default\uff1a3600\uff081 hour\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default insert load timeout"),(0,n.kt)("h4",{id:"mini_load_default_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"mini_load_default_timeout_second")),(0,n.kt)("p",null,"Default\uff1a3600\uff081 hour\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default non-streaming mini load timeout"),(0,n.kt)("h4",{id:"broker_load_default_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"broker_load_default_timeout_second")),(0,n.kt)("p",null,"Default\uff1a14400\uff084 hour\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default broker load timeout"),(0,n.kt)("h4",{id:"spark_load_default_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"spark_load_default_timeout_second")),(0,n.kt)("p",null,"Default\uff1a86400  (1 day)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default spark load timeout"),(0,n.kt)("h4",{id:"hadoop_load_default_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"hadoop_load_default_timeout_second")),(0,n.kt)("p",null,"Default\uff1a86400 * 3   (3 day)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default hadoop load timeout"),(0,n.kt)("h4",{id:"load_running_job_num_limit"},(0,n.kt)("inlineCode",{parentName:"h4"},"load_running_job_num_limit")),(0,n.kt)("p",null,"Default\uff1a0"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"The number of loading tasks is limited, the default is 0, no limit"),(0,n.kt)("h4",{id:"load_input_size_limit_gb"},(0,n.kt)("inlineCode",{parentName:"h4"},"load_input_size_limit_gb")),(0,n.kt)("p",null,"Default\uff1a0"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"The size of the data entered by the Load job, the default is 0, unlimited"),(0,n.kt)("h4",{id:"load_etl_thread_num_normal_priority"},(0,n.kt)("inlineCode",{parentName:"h4"},"load_etl_thread_num_normal_priority")),(0,n.kt)("p",null,"Default\uff1a10"),(0,n.kt)("p",null,"Concurrency of NORMAL priority etl load jobs. Do not change this if you know what you are doing."),(0,n.kt)("h4",{id:"load_etl_thread_num_high_priority"},(0,n.kt)("inlineCode",{parentName:"h4"},"load_etl_thread_num_high_priority")),(0,n.kt)("p",null,"Default\uff1a3"),(0,n.kt)("p",null,"Concurrency of HIGH priority etl load jobs. Do not change this if you know what you are doing"),(0,n.kt)("h4",{id:"load_pending_thread_num_normal_priority"},(0,n.kt)("inlineCode",{parentName:"h4"},"load_pending_thread_num_normal_priority")),(0,n.kt)("p",null,"Default\uff1a10"),(0,n.kt)("p",null,"Concurrency of NORMAL priority pending load jobs.  Do not change this if you know what you are doing."),(0,n.kt)("h4",{id:"load_pending_thread_num_high_priority"},(0,n.kt)("inlineCode",{parentName:"h4"},"load_pending_thread_num_high_priority")),(0,n.kt)("p",null,"Default\uff1a3"),(0,n.kt)("p",null,"Concurrency of HIGH priority pending load jobs. Load job priority is defined as HIGH or NORMAL.  All mini batch load jobs are HIGH priority, other types of load jobs are NORMAL priority.  Priority is set to avoid that a slow load job occupies a thread for a long time.  This is just a internal optimized scheduling policy.  Currently, you can not specified the job priority manually, and do not change this if you know what you are doing."),(0,n.kt)("h4",{id:"load_checker_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"load_checker_interval_second")),(0,n.kt)("p",null,"Default\uff1a5 \uff08s\uff09"),(0,n.kt)("p",null,"The load scheduler running interval. A load job will transfer its state from PENDING to LOADING to FINISHED.  The load scheduler will transfer load job from PENDING to LOADING while the txn callback will transfer load job from LOADING to FINISHED.  So a load job will cost at most one interval to finish when the concurrency has not reached the upper limit."),(0,n.kt)("h4",{id:"load_straggler_wait_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"load_straggler_wait_second")),(0,n.kt)("p",null,"Default\uff1a300"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Maximal wait seconds for straggler node in load\neg.\nthere are 3 replicas A, B, C\nload is already quorum finished(A,B) at t1 and C is not finished\nif (current_time - t1) > 300s, then palo will treat C as a failure node\nwill call transaction manager to commit the transaction and tell transaction manager that C is failed"),(0,n.kt)("p",null,"This is also used when waiting for publish tasks"),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," this parameter is the default value for all job and the DBA could specify it for separate job"),(0,n.kt)("h4",{id:"label_keep_max_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"label_keep_max_second")),(0,n.kt)("p",null,"Default\uff1a",(0,n.kt)("inlineCode",{parentName:"p"},"3 * 24 * 3600"),"  (3 day)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"labels of finished or cancelled load jobs will be removed after ",(0,n.kt)("inlineCode",{parentName:"p"},"label_keep_max_second")," \uff0c"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"The removed labels can be reused."),(0,n.kt)("li",{parentName:"ol"},"Set a short time will lower the FE memory usage.  (Because all load jobs' info is kept in memory before being removed)")),(0,n.kt)("p",null,"In the case of high concurrent writes, if there is a large backlog of jobs and call frontend service failed, check the log. If the metadata write takes too long to lock, you can adjust this value to 12 hours, or 6 hours less"),(0,n.kt)("h4",{id:"streaming_label_keep_max_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"streaming_label_keep_max_second")),(0,n.kt)("p",null,"Default\uff1a43200 \uff0812 hour\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"For some high-frequency load work, such as: INSERT, STREAMING LOAD, ROUTINE_LOAD_TASK. If it expires, delete the completed job or task."),(0,n.kt)("h4",{id:"label_clean_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"label_clean_interval_second")),(0,n.kt)("p",null,"Default\uff1a1 * 3600  \uff081 hour\uff09"),(0,n.kt)("p",null,"Load label cleaner will run every ",(0,n.kt)("em",{parentName:"p"},"label_clean_interval_second")," to clean the outdated jobs."),(0,n.kt)("h4",{id:"transaction_clean_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"transaction_clean_interval_second")),(0,n.kt)("p",null,"Default\uff1a30"),(0,n.kt)("p",null,"the transaction will be cleaned after transaction_clean_interval_second seconds if the transaction is visible or aborted  we should make this interval as short as possible and each clean cycle as soon as possible"),(0,n.kt)("h4",{id:"sync_commit_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"sync_commit_interval_second")),(0,n.kt)("p",null,"The maximum time interval for committing transactions. If there is still data in the channel that has not been submitted after this time, the consumer will notify the channel to submit the transaction."),(0,n.kt)("p",null,"Default: 10 (seconds)"),(0,n.kt)("p",null,"Is it possible to configure dynamically: true"),(0,n.kt)("p",null,"Whether it is a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"sync_checker_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"sync_checker_interval_second")),(0,n.kt)("p",null,"Data synchronization job running status check."),(0,n.kt)("p",null,"Default: 10\uff08s\uff09"),(0,n.kt)("h4",{id:"max_sync_task_threads_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_sync_task_threads_num")),(0,n.kt)("p",null,"The maximum number of threads in the data synchronization job thread pool."),(0,n.kt)("p",null,"\u9ed8\u8ba4\u503c\uff1a10"),(0,n.kt)("h4",{id:"min_sync_commit_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_sync_commit_size")),(0,n.kt)("p",null,"The minimum number of events that must be satisfied to commit a transaction. If the number of events received by Fe is less than it, it will continue to wait for the next batch of data until the time exceeds ",(0,n.kt)("inlineCode",{parentName:"p"},"sync_commit_interval_second"),". The default value is 10000 events. If you want to modify this configuration, please make sure that this value is smaller than the ",(0,n.kt)("inlineCode",{parentName:"p"},"canal.instance.memory.buffer.size")," configuration on the canal side (default 16384), otherwise Fe will try to get the queue length longer than the store before ack More events cause the store queue to block until it times out."),(0,n.kt)("p",null,"Default: 10000"),(0,n.kt)("p",null,"Is it possible to configure dynamically: true"),(0,n.kt)("p",null,"Whether it is a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"min_bytes_sync_commit"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_bytes_sync_commit")),(0,n.kt)("p",null,"The minimum data size required to commit a transaction. If the data size received by Fe is smaller than it, it will continue to wait for the next batch of data until the time exceeds ",(0,n.kt)("inlineCode",{parentName:"p"},"sync_commit_interval_second"),". The default value is 15MB, if you want to modify this configuration, please make sure this value is less than the product of ",(0,n.kt)("inlineCode",{parentName:"p"},"canal.instance.memory.buffer.size")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"canal.instance.memory.buffer.memunit")," on the canal side (default 16MB), otherwise Before the ack, Fe will try to obtain data that is larger than the store space, causing the store queue to block until it times out."),(0,n.kt)("p",null,"Default: ",(0,n.kt)("inlineCode",{parentName:"p"},"15*1024*1024")," (15M)"),(0,n.kt)("p",null,"Is it possible to configure dynamically: true"),(0,n.kt)("p",null,"Whether it is a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"max_bytes_sync_commit"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_bytes_sync_commit")),(0,n.kt)("p",null,"The maximum number of threads in the data synchronization job thread pool. There is only one thread pool in the entire FE, which is used to process all data synchronization tasks in the FE that send data to the BE. The implementation of the thread pool is in the ",(0,n.kt)("inlineCode",{parentName:"p"},"SyncTaskPool")," class."),(0,n.kt)("p",null,"Default: 10"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: false"),(0,n.kt)("h4",{id:"enable_outfile_to_local"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_outfile_to_local")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"Whether to allow the outfile function to export the results to the local disk."),(0,n.kt)("h4",{id:"export_tablet_num_per_task"},(0,n.kt)("inlineCode",{parentName:"h4"},"export_tablet_num_per_task")),(0,n.kt)("p",null,"Default\uff1a5"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Number of tablets per export query plan"),(0,n.kt)("h4",{id:"export_task_default_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"export_task_default_timeout_second")),(0,n.kt)("p",null,"Default\uff1a2 * 3600   \uff082 hour\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default timeout of export jobs."),(0,n.kt)("h4",{id:"export_running_job_num_limit"},(0,n.kt)("inlineCode",{parentName:"h4"},"export_running_job_num_limit")),(0,n.kt)("p",null,"Default\uff1a5"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Limitation of the concurrency of running export jobs.  Default is 5.  0 is unlimited"),(0,n.kt)("h4",{id:"export_checker_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"export_checker_interval_second")),(0,n.kt)("p",null,"Default\uff1a5"),(0,n.kt)("p",null,"Export checker's running interval."),(0,n.kt)("h3",{id:"log"},"Log"),(0,n.kt)("h4",{id:"log_roll_size_mb"},(0,n.kt)("inlineCode",{parentName:"h4"},"log_roll_size_mb")),(0,n.kt)("p",null,"Default\uff1a1024  \uff081G\uff09"),(0,n.kt)("p",null,"The max size of one sys log and audit log"),(0,n.kt)("h4",{id:"sys_log_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"sys_log_dir")),(0,n.kt)("p",null,'Default\uff1aDorisFE.DORIS_HOME_DIR + "/log"'),(0,n.kt)("p",null,"sys_log_dir:"),(0,n.kt)("p",null,"This specifies FE log dir. FE will produces 2 log files:"),(0,n.kt)("p",null,"fe.log:      all logs of FE process.\nfe.warn.log  all WARNING and ERROR log of FE process."),(0,n.kt)("h4",{id:"sys_log_level"},(0,n.kt)("inlineCode",{parentName:"h4"},"sys_log_level")),(0,n.kt)("p",null,"Default\uff1aINFO"),(0,n.kt)("p",null,"log level\uff1aINFO, WARNING, ERROR, FATAL"),(0,n.kt)("h4",{id:"sys_log_roll_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"sys_log_roll_num")),(0,n.kt)("p",null,"Default\uff1a10"),(0,n.kt)("p",null,"Maximal FE log files to be kept within an sys_log_roll_interval. default is 10, which means there will be at most 10 log files in a day"),(0,n.kt)("h4",{id:"sys_log_verbose_modules"},(0,n.kt)("inlineCode",{parentName:"h4"},"sys_log_verbose_modules")),(0,n.kt)("p",null,"Default\uff1a{}"),(0,n.kt)("p",null,"Verbose modules. VERBOSE level is implemented by log4j DEBUG level."),(0,n.kt)("p",null,"eg\uff1a\nsys_log_verbose_modules = org.apache.doris.catalog\nThis will only print debug log of files in package org.apache.doris.catalog and all its sub packages."),(0,n.kt)("h4",{id:"sys_log_roll_interval"},(0,n.kt)("inlineCode",{parentName:"h4"},"sys_log_roll_interval")),(0,n.kt)("p",null,"Default\uff1aDAY"),(0,n.kt)("p",null,"sys_log_roll_interval:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"DAY:  log suffix is  yyyyMMdd"),(0,n.kt)("li",{parentName:"ul"},"HOUR: log suffix is  yyyyMMddHH")),(0,n.kt)("h4",{id:"sys_log_delete_age"},(0,n.kt)("inlineCode",{parentName:"h4"},"sys_log_delete_age")),(0,n.kt)("p",null,"Default\uff1a7d"),(0,n.kt)("p",null,"default is 7 days, if log's last modify time is 7 days ago, it will be deleted."),(0,n.kt)("p",null,"support format:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"7d      7 day"),(0,n.kt)("li",{parentName:"ul"},"10h     10 hours"),(0,n.kt)("li",{parentName:"ul"},"60m     60 min"),(0,n.kt)("li",{parentName:"ul"},"120s    120 seconds")),(0,n.kt)("h4",{id:"sys_log_roll_mode"},(0,n.kt)("inlineCode",{parentName:"h4"},"sys_log_roll_mode")),(0,n.kt)("p",null,"Default\uff1aSIZE-MB-1024"),(0,n.kt)("p",null,"The size of the log split, split a log file every 1 G"),(0,n.kt)("h4",{id:"sys_log_enable_compress"},(0,n.kt)("inlineCode",{parentName:"h4"},"sys_log_enable_compress")),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"If true, will compress fe.log & fe.warn.log by gzip"),(0,n.kt)("h4",{id:"audit_log_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"audit_log_dir")),(0,n.kt)("p",null,'Default\uff1aDORIS_HOME_DIR + "/log"'),(0,n.kt)("p",null,"audit_log_dir\uff1a\nThis specifies FE audit log dir..\nAudit log fe.audit.log contains all requests with related infos such as user, host, cost, status, etc"),(0,n.kt)("h4",{id:"audit_log_roll_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"audit_log_roll_num")),(0,n.kt)("p",null,"Default\uff1a90"),(0,n.kt)("p",null,"Maximal FE audit log files to be kept within an audit_log_roll_interval."),(0,n.kt)("h4",{id:"audit_log_modules"},(0,n.kt)("inlineCode",{parentName:"h4"},"audit_log_modules")),(0,n.kt)("p",null,'Default\uff1a{"slow_query", "query", "load", "stream_load"}'),(0,n.kt)("p",null,"Slow query contains all queries which cost exceed ",(0,n.kt)("em",{parentName:"p"},"qe_slow_log_ms")),(0,n.kt)("h4",{id:"qe_slow_log_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"qe_slow_log_ms")),(0,n.kt)("p",null,"Default\uff1a5000 \uff085 seconds\uff09"),(0,n.kt)("p",null,"If the response time of a query exceed this threshold, it will be recorded in audit log as slow_query."),(0,n.kt)("h4",{id:"audit_log_roll_interval"},(0,n.kt)("inlineCode",{parentName:"h4"},"audit_log_roll_interval")),(0,n.kt)("p",null,"Default\uff1aDAY"),(0,n.kt)("p",null,"DAY:  logsuffix is \uff1ayyyyMMdd\nHOUR: logsuffix is \uff1ayyyyMMddHH"),(0,n.kt)("h4",{id:"audit_log_delete_age"},(0,n.kt)("inlineCode",{parentName:"h4"},"audit_log_delete_age")),(0,n.kt)("p",null,"Default\uff1a30d"),(0,n.kt)("p",null,"default is 30 days, if log's last modify time is 30 days ago, it will be deleted."),(0,n.kt)("p",null,"support format:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"7d      7 day"),(0,n.kt)("li",{parentName:"ul"},"10h     10 hours"),(0,n.kt)("li",{parentName:"ul"},"60m     60 min"),(0,n.kt)("li",{parentName:"ul"},"120s    120 seconds")),(0,n.kt)("h4",{id:"audit_log_enable_compress"},(0,n.kt)("inlineCode",{parentName:"h4"},"audit_log_enable_compress")),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"If true, will compress fe.audit.log by gzip"),(0,n.kt)("h4",{id:"nereids_trace_log_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"nereids_trace_log_dir")),(0,n.kt)("p",null,'Default: DorisFE.DORIS_HOME_DIR + "/log/nereids_trace"'),(0,n.kt)("p",null,"Used to specify the directory of the nereids trace log"),(0,n.kt)("h3",{id:"storage"},"Storage"),(0,n.kt)("h4",{id:"min_replication_num_per_tablet"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_replication_num_per_tablet")),(0,n.kt)("p",null,"Default: 1"),(0,n.kt)("p",null,"Used to set minimal number of replication per tablet."),(0,n.kt)("h4",{id:"max_replication_num_per_tablet"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_replication_num_per_tablet")),(0,n.kt)("p",null,"Default: 32767"),(0,n.kt)("p",null,"Used to set maximal number of replication per tablet."),(0,n.kt)("h4",{id:"default_db_data_quota_bytes"},(0,n.kt)("inlineCode",{parentName:"h4"},"default_db_data_quota_bytes")),(0,n.kt)("p",null,"Default\uff1a1PB"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Used to set the default database data quota size. To set the quota size of a single database, you can use:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"Set the database data quota, the unit is:B/K/KB/M/MB/G/GB/T/TB/P/PB\nALTER DATABASE db_name SET DATA QUOTA quota;\nView configuration\nshow data \uff08Detail\uff1aHELP SHOW DATA\uff09\n")),(0,n.kt)("h4",{id:"default_db_replica_quota_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"default_db_replica_quota_size")),(0,n.kt)("p",null,"Default: 1073741824"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Used to set the default database replica quota. To set the quota size of a single database, you can use:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"Set the database replica quota\nALTER DATABASE db_name SET REPLICA QUOTA quota;\nView configuration\nshow data \uff08Detail\uff1aHELP SHOW DATA\uff09\n")),(0,n.kt)("h4",{id:"recover_with_empty_tablet"},(0,n.kt)("inlineCode",{parentName:"h4"},"recover_with_empty_tablet")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"In some very special circumstances, such as code bugs, or human misoperation, etc., all replicas of some tablets may be lost. In this case, the data has been substantially lost. However, in some scenarios, the business still hopes to ensure that the query will not report errors even if there is data loss, and reduce the perception of the user layer. At this point, we can use the blank Tablet to fill the missing replica to ensure that the query can be executed normally."),(0,n.kt)("p",null,"Set to true so that Doris will automatically use blank replicas to fill tablets which all replicas have been damaged or missing"),(0,n.kt)("h4",{id:"min_clone_task_timeout_sec-and-max_clone_task_timeout_sec"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_clone_task_timeout_sec")," ",(0,n.kt)("inlineCode",{parentName:"h4"},"And max_clone_task_timeout_sec")),(0,n.kt)("p",null,"Default\uff1aMinimum 3 minutes, maximum two hours"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Can cooperate with ",(0,n.kt)("inlineCode",{parentName:"p"},"mix_clone_task_timeout_sec")," to control the maximum and minimum timeout of a clone task. Under normal circumstances, the timeout of a clone task is estimated by the amount of data and the minimum transfer rate (5MB/s). In some special cases, these two configurations can be used to set the upper and lower bounds of the clone task timeout to ensure that the clone task can be completed successfully."),(0,n.kt)("h4",{id:"disable_storage_medium_check"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_storage_medium_check")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"If disable_storage_medium_check is true, ReportHandler would not check tablet's storage medium and disable storage cool down function, the default value is false. You can set the value true when you don't care what the storage medium of the tablet is."),(0,n.kt)("h4",{id:"decommission_tablet_check_threshold"},(0,n.kt)("inlineCode",{parentName:"h4"},"decommission_tablet_check_threshold")),(0,n.kt)("p",null,"Default\uff1a5000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This configuration is used to control whether the Master FE need to check the status of tablets on decommissioned BE. If the size of tablets on decommissioned BE is lower than this threshold, FE will start a periodic check, if all tablets on decommissioned BE have been recycled, FE will drop this BE immediately."),(0,n.kt)("p",null,"For performance consideration, please don't set a very high value for this configuration."),(0,n.kt)("h4",{id:"partition_rebalance_max_moves_num_per_selection"},(0,n.kt)("inlineCode",{parentName:"h4"},"partition_rebalance_max_moves_num_per_selection")),(0,n.kt)("p",null,"Default\uff1a10"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Valid only if use PartitionRebalancer\uff0c"),(0,n.kt)("h4",{id:"partition_rebalance_move_expire_after_access"},(0,n.kt)("inlineCode",{parentName:"h4"},"partition_rebalance_move_expire_after_access")),(0,n.kt)("p",null,"Default\uff1a600   (s)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Valid only if use PartitionRebalancer. If this changed, cached moves will be cleared"),(0,n.kt)("h4",{id:"tablet_rebalancer_type"},(0,n.kt)("inlineCode",{parentName:"h4"},"tablet_rebalancer_type")),(0,n.kt)("p",null,"Default\uff1aBeLoad"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Rebalancer type(ignore case): BeLoad, Partition. If type parse failed, use BeLoad as default"),(0,n.kt)("h4",{id:"max_balancing_tablets"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_balancing_tablets")),(0,n.kt)("p",null,"Default\uff1a100"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"if the number of balancing tablets in TabletScheduler exceed max_balancing_tablets, no more balance check"),(0,n.kt)("h4",{id:"max_scheduling_tablets"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_scheduling_tablets")),(0,n.kt)("p",null,"Default\uff1a2000"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"if the number of scheduled tablets in TabletScheduler exceed max_scheduling_tablets skip checking."),(0,n.kt)("h4",{id:"disable_balance"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_balance")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"if set to true, TabletScheduler will not do balance."),(0,n.kt)("h4",{id:"disable_disk_balance"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_disk_balance")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"if set to true, TabletScheduler will not do disk balance."),(0,n.kt)("h4",{id:"balance_load_score_threshold"},(0,n.kt)("inlineCode",{parentName:"h4"},"balance_load_score_threshold")),(0,n.kt)("p",null,"Default\uff1a0.1 (10%)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"the threshold of cluster balance score, if a backend's load score is 10% lower than average score,  this backend will be marked as LOW load, if load score is 10% higher than average score, HIGH load  will be marked"),(0,n.kt)("h4",{id:"capacity_used_percent_high_water"},(0,n.kt)("inlineCode",{parentName:"h4"},"capacity_used_percent_high_water")),(0,n.kt)("p",null,"Default\uff1a0.75  \uff0875%\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"The high water of disk capacity used percent. This is used for calculating load score of a backend"),(0,n.kt)("h4",{id:"clone_distribution_balance_threshold"},(0,n.kt)("inlineCode",{parentName:"h4"},"clone_distribution_balance_threshold")),(0,n.kt)("p",null,"Default\uff1a0.2"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Balance threshold of num of replicas in Backends."),(0,n.kt)("h4",{id:"clone_capacity_balance_threshold"},(0,n.kt)("inlineCode",{parentName:"h4"},"clone_capacity_balance_threshold")),(0,n.kt)("p",null,"Default\uff1a0.2"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Balance threshold of data size in BE."),(0,n.kt)("p",{parentName:"li"}," The balance algorithm is:"),(0,n.kt)("ol",{parentName:"li"},(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Calculate the average used capacity(AUC) of the entire cluster. (total data size / total backends num)")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"The high water level is (AUC * (1 + clone_capacity_balance_threshold))")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"The low water level is (AUC * (1 - clone_capacity_balance_threshold))")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"The Clone checker will try to move replica from high water level BE to low water level BE."))))),(0,n.kt)("h4",{id:"disable_colocate_balance"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_colocate_balance")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This configs can set to true to disable the automatic colocate tables's relocate and balance.  If 'disable_colocate_balance' is set to true,   ColocateTableBalancer will not relocate and balance colocate tables."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Attention"),":"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Under normal circumstances, there is no need to turn off balance at all."),(0,n.kt)("li",{parentName:"ol"},"Because once the balance is turned off, the unstable colocate table may not be restored"),(0,n.kt)("li",{parentName:"ol"},"Eventually the colocate plan cannot be used when querying.")),(0,n.kt)("h4",{id:"balance_slot_num_per_path"},(0,n.kt)("inlineCode",{parentName:"h4"},"balance_slot_num_per_path")),(0,n.kt)("p",null,"Default: 1"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default number of slots per path during balance."),(0,n.kt)("h4",{id:"disable_tablet_scheduler"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_tablet_scheduler")),(0,n.kt)("p",null,"Default:false"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"If set to true, the tablet scheduler will not work, so that all tablet repair/balance task will not work."),(0,n.kt)("h4",{id:"enable_force_drop_redundant_replica"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_force_drop_redundant_replica")),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"Dynamically configured: true"),(0,n.kt)("p",null,"Only for Master FE: true"),(0,n.kt)("p",null,"If set to true, the system will immediately drop redundant replicas in the tablet scheduling logic. This may cause some load jobs that are writing to the corresponding replica to fail, but it will speed up the balance and repair speed of the tablet.\nWhen there are a large number of replicas waiting to be balanced or repaired in the cluster, you can try to set this config to speed up the balance and repair of replicas at the expense of partial load success rate."),(0,n.kt)("h4",{id:"colocate_group_relocate_delay_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"colocate_group_relocate_delay_second")),(0,n.kt)("p",null,"Default: 1800"),(0,n.kt)("p",null,"Dynamically configured: true"),(0,n.kt)("p",null,"Only for Master FE: true"),(0,n.kt)("p",null,"The relocation of a colocation group may involve a large number of tablets moving within the cluster. Therefore, we should use a more conservative strategy to avoid relocation of colocation groups as much as possible.\nReloaction usually occurs after a BE node goes offline or goes down. This parameter is used to delay the determination of BE node unavailability. The default is 30 minutes, i.e., if a BE node recovers within 30 minutes, relocation of the colocation group will not be triggered."),(0,n.kt)("p",null,"####",(0,n.kt)("inlineCode",{parentName:"p"}," allow_replica_on_same_host")),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"Dynamically configured: false"),(0,n.kt)("p",null,"Only for Master FE: false"),(0,n.kt)("p",null,"Whether to allow multiple replicas of the same tablet to be distributed on the same host. This parameter is mainly used for local testing, to facilitate building multiple BEs to test certain multi-replica situations. Do not use it for non-test environments."),(0,n.kt)("h4",{id:"repair_slow_replica"},(0,n.kt)("inlineCode",{parentName:"h4"},"repair_slow_replica")),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly: true"),(0,n.kt)("p",null,"If set to true, the replica with slower compaction will be automatically detected and migrated to other machines. The detection condition is that the version count of the fastest replica exceeds the value of ",(0,n.kt)("inlineCode",{parentName:"p"},"min_version_count_indicate_replica_compaction_too_slow"),", and the ratio of the version count difference from the fastest replica exceeds the value of ",(0,n.kt)("inlineCode",{parentName:"p"},"valid_version_count_delta_ratio_between_replicas")),(0,n.kt)("h4",{id:"min_version_count_indicate_replica_compaction_too_slow"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_version_count_indicate_replica_compaction_too_slow")),(0,n.kt)("p",null,"Default: 200"),(0,n.kt)("p",null,"Dynamically configured: true"),(0,n.kt)("p",null,"Only for Master FE: false"),(0,n.kt)("p",null,"The version count threshold used to judge whether replica compaction is too slow"),(0,n.kt)("h4",{id:"skip_compaction_slower_replica"},(0,n.kt)("inlineCode",{parentName:"h4"},"skip_compaction_slower_replica")),(0,n.kt)("p",null,"Default: true"),(0,n.kt)("p",null,"Dynamically configured: true"),(0,n.kt)("p",null,"Only for Master FE: false"),(0,n.kt)("p",null,"If set to true, the compaction slower replica will be skipped when select get queryable replicas"),(0,n.kt)("h4",{id:"valid_version_count_delta_ratio_between_replicas"},(0,n.kt)("inlineCode",{parentName:"h4"},"valid_version_count_delta_ratio_between_replicas")),(0,n.kt)("p",null,"Default: 0.5"),(0,n.kt)("p",null,"Dynamically configured: true"),(0,n.kt)("p",null,"Only for Master FE: true"),(0,n.kt)("p",null,"The valid ratio threshold of the difference between the version count of the slowest replica and the fastest replica. If ",(0,n.kt)("inlineCode",{parentName:"p"},"repair_slow_replica")," is set to true, it is used to determine whether to repair the slowest replica"),(0,n.kt)("h4",{id:"min_bytes_indicate_replica_too_large"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_bytes_indicate_replica_too_large")),(0,n.kt)("p",null,"Default: ",(0,n.kt)("inlineCode",{parentName:"p"},"2 * 1024 * 1024 * 1024")," (2G)"),(0,n.kt)("p",null,"Dynamically configured: true"),(0,n.kt)("p",null,"Only for Master FE: true"),(0,n.kt)("p",null,"The data size threshold used to judge whether replica is too large"),(0,n.kt)("h4",{id:"schedule_slot_num_per_hdd_path"},(0,n.kt)("inlineCode",{parentName:"h4"},"schedule_slot_num_per_hdd_path")),(0,n.kt)("p",null,"Default\uff1a4"),(0,n.kt)("p",null,"the default slot number per path in tablet scheduler for hdd , remove this config and dynamically adjust it by clone task statistic"),(0,n.kt)("h4",{id:"schedule_slot_num_per_ssd_path"},(0,n.kt)("inlineCode",{parentName:"h4"},"schedule_slot_num_per_ssd_path")),(0,n.kt)("p",null,"Default\uff1a8"),(0,n.kt)("p",null,"the default slot number per path in tablet scheduler for ssd , remove this config and dynamically adjust it by clone task statistic"),(0,n.kt)("h4",{id:"tablet_repair_delay_factor_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"tablet_repair_delay_factor_second")),(0,n.kt)("p",null,"Default\uff1a60 \uff08s\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"the factor of delay time before deciding to repair tablet."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"if priority is VERY_HIGH, repair it immediately."),(0,n.kt)("li",{parentName:"ul"},"HIGH, delay tablet_repair_delay_factor_second * 1;"),(0,n.kt)("li",{parentName:"ul"},"NORMAL: delay tablet_repair_delay_factor_second * 2;"),(0,n.kt)("li",{parentName:"ul"},"LOW: delay tablet_repair_delay_factor_second * 3;")),(0,n.kt)("h4",{id:"tablet_stat_update_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"tablet_stat_update_interval_second")),(0,n.kt)("p",null,"Default\uff1a300\uff085min\uff09"),(0,n.kt)("p",null,"update interval of tablet stat,\nAll frontends will get tablet stat from all backends at each interval"),(0,n.kt)("h4",{id:"storage_flood_stage_usage_percent"},(0,n.kt)("inlineCode",{parentName:"h4"},"storage_flood_stage_usage_percent")),(0,n.kt)("p",null,"Default\uff1a95 \uff0895%\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("h5",{id:"storage_flood_stage_left_capacity_bytes"},(0,n.kt)("inlineCode",{parentName:"h5"},"storage_flood_stage_left_capacity_bytes")),(0,n.kt)("p",null,"Default\uff1a1 ",(0,n.kt)("em",{parentName:"p"}," 1024 ")," 1024 * 1024 (1GB)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"If capacity of disk reach the 'storage_flood_stage_usage_percent' and  'storage_flood_stage_left_capacity_bytes', the following operation will be rejected:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"load job"),(0,n.kt)("li",{parentName:"ol"},"restore job")),(0,n.kt)("h4",{id:"storage_high_watermark_usage_percent"},(0,n.kt)("inlineCode",{parentName:"h4"},"storage_high_watermark_usage_percent")),(0,n.kt)("p",null,"Default\uff1a85  (85%)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("h4",{id:"storage_min_left_capacity_bytes"},(0,n.kt)("inlineCode",{parentName:"h4"},"storage_min_left_capacity_bytes")),(0,n.kt)("p",null,"Default\uff1a ",(0,n.kt)("inlineCode",{parentName:"p"},"2 * 1024 * 1024 * 1024"),"  (2GB)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"'storage_high_watermark_usage_percent' limit the max capacity usage percent of a Backend storage path.  'storage_min_left_capacity_bytes' limit the minimum left capacity of a Backend storage path.  If both limitations are reached, this storage path can not be chose as tablet balance destination. But for tablet recovery, we may exceed these limit for keeping data integrity as much as possible."),(0,n.kt)("h4",{id:"catalog_trash_expire_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"catalog_trash_expire_second")),(0,n.kt)("p",null,"Default\uff1a86400L (1 day)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"After dropping database(table/partition), you can recover it by using RECOVER stmt. And this specifies the maximal data retention time. After time, the data will be deleted permanently."),(0,n.kt)("h4",{id:"storage_cooldown_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"storage_cooldown_second")),(0,n.kt)("version",{deprecated:"2.0"}),(0,n.kt)("p",null,"Default\uff1a",(0,n.kt)("inlineCode",{parentName:"p"},"30 * 24 * 3600L"),"  \uff0830 day\uff09"),(0,n.kt)("p",null,"When create a table(or partition), you can specify its storage medium(HDD or SSD). If set to SSD, this specifies the default duration that tablets will stay on SSD.  After that, tablets will be moved to HDD automatically.  You can set storage cooldown time in CREATE TABLE stmt."),(0,n.kt)("h4",{id:"default_storage_medium"},(0,n.kt)("inlineCode",{parentName:"h4"},"default_storage_medium")),(0,n.kt)("p",null,"Default\uff1aHDD"),(0,n.kt)("p",null,"When create a table(or partition), you can specify its storage medium(HDD or SSD). If not set, this specifies the default medium when creat."),(0,n.kt)("h4",{id:"enable_storage_policy"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_storage_policy")),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Whether to enable the Storage Policy feature. This config allows users to separate hot and cold data.\nDefault: false")),(0,n.kt)("p",null,"Is it possible to dynamically configure: true"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"check_consistency_default_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"check_consistency_default_timeout_second")),(0,n.kt)("p",null,"Default\uff1a600 \uff0810 minutes\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Default timeout of a single consistency check task. Set long enough to fit your tablet size"),(0,n.kt)("h4",{id:"consistency_check_start_time"},(0,n.kt)("inlineCode",{parentName:"h4"},"consistency_check_start_time")),(0,n.kt)("p",null,"Default\uff1a23"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Consistency check start time"),(0,n.kt)("p",null,"Consistency checker will run from ",(0,n.kt)("em",{parentName:"p"},"consistency_check_start_time")," to ",(0,n.kt)("em",{parentName:"p"},"consistency_check_end_time"),"."),(0,n.kt)("p",null,"If the two times are the same, no consistency check will be triggered."),(0,n.kt)("h4",{id:"consistency_check_end_time"},(0,n.kt)("inlineCode",{parentName:"h4"},"consistency_check_end_time")),(0,n.kt)("p",null,"Default\uff1a23"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Consistency check end time"),(0,n.kt)("p",null,"Consistency checker will run from ",(0,n.kt)("em",{parentName:"p"},"consistency_check_start_time")," to ",(0,n.kt)("em",{parentName:"p"},"consistency_check_end_time"),"."),(0,n.kt)("p",null,"If the two times are the same, no consistency check will be triggered."),(0,n.kt)("h4",{id:"replica_delay_recovery_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"replica_delay_recovery_second")),(0,n.kt)("p",null,"Default\uff1a0"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"the minimal delay seconds between a replica is failed and fe try to recovery it using clone."),(0,n.kt)("h4",{id:"tablet_create_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"tablet_create_timeout_second")),(0,n.kt)("p",null,"Default\uff1a1\uff08s\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Maximal waiting time for creating a single replica."),(0,n.kt)("p",null,"eg.\nif you create a table with #m tablets and #n replicas for each tablet,\nthe create table request will run at most (m ",(0,n.kt)("em",{parentName:"p"}," n ")," tablet_create_timeout_second) before timeout."),(0,n.kt)("h4",{id:"tablet_delete_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"tablet_delete_timeout_second")),(0,n.kt)("p",null,"Default\uff1a2"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Same meaning as ",(0,n.kt)("em",{parentName:"p"},"tablet_create_timeout_second"),", but used when delete a tablet."),(0,n.kt)("h4",{id:"delete_job_max_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"delete_job_max_timeout_second")),(0,n.kt)("p",null,"Default: 300(s)"),(0,n.kt)("p",null,"Mutable: true"),(0,n.kt)("p",null,"Master only: true"),(0,n.kt)("p",null,"Maximal timeout for delete job, in seconds."),(0,n.kt)("h4",{id:"alter_table_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"alter_table_timeout_second")),(0,n.kt)("p",null,"Default\uff1a86400 * 30\uff081 month\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Maximal timeout of ALTER TABLE request. Set long enough to fit your table data size."),(0,n.kt)("h4",{id:"max_replica_count_when_schema_change"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_replica_count_when_schema_change")),(0,n.kt)("p",null,"The maximum number of replicas allowed when OlapTable is doing schema changes. Too many replicas will lead to FE OOM."),(0,n.kt)("p",null,"Default: 100000"),(0,n.kt)("p",null,"Is it possible to configure dynamically: true"),(0,n.kt)("p",null,"Whether it is a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"history_job_keep_max_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"history_job_keep_max_second")),(0,n.kt)("p",null,"Default\uff1a",(0,n.kt)("inlineCode",{parentName:"p"},"7 * 24 * 3600")," \uff087 day\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"The max keep time of some kind of jobs. like schema change job and rollup job."),(0,n.kt)("h4",{id:"max_create_table_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_create_table_timeout_second")),(0,n.kt)("p",null,"Default\uff1a60 \uff08s\uff09"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"In order not to wait too long for create table(index), set a max timeout."),(0,n.kt)("h3",{id:"external-table"},"External Table"),(0,n.kt)("h4",{id:"file_scan_node_split_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"file_scan_node_split_num")),(0,n.kt)("p",null,"Default\uff1a128"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"multi catalog concurrent file scanning threads"),(0,n.kt)("h4",{id:"file_scan_node_split_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"file_scan_node_split_size")),(0,n.kt)("p",null,"Default\uff1a256 ",(0,n.kt)("em",{parentName:"p"}," 1024 ")," 1024"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"multi catalog concurrent file scan size"),(0,n.kt)("h4",{id:"enable_odbc_mysql_broker_table"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_odbc_mysql_broker_table")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"Starting from version 2.1, we no longer support create odbc, jdbc and broker external table. For odbc and mysql external table, use jdbc table or jdbc catalog instead. For broker table, use table valued function instead."),(0,n.kt)("h4",{id:"max_hive_partition_cache_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_hive_partition_cache_num")),(0,n.kt)("p",null,"The maximum number of caches for the hive partition."),(0,n.kt)("p",null,"Default: 100000"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: false"),(0,n.kt)("h4",{id:"hive_metastore_client_timeout_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"hive_metastore_client_timeout_second")),(0,n.kt)("p",null,"The default connection timeout for hive metastore."),(0,n.kt)("p",null,"Default: 10"),(0,n.kt)("p",null,"Is it possible to dynamically configure: true"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: true"),(0,n.kt)("h4",{id:"max_external_cache_loader_thread_pool_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_external_cache_loader_thread_pool_size")),(0,n.kt)("p",null,"Maximum thread pool size for loading external meta cache."),(0,n.kt)("p",null,"Default: 10"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: false"),(0,n.kt)("h4",{id:"max_external_file_cache_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_external_file_cache_num")),(0,n.kt)("p",null,"Maximum number of file cache to use for external tables."),(0,n.kt)("p",null,"Default: 100000"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: false"),(0,n.kt)("h4",{id:"max_external_schema_cache_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_external_schema_cache_num")),(0,n.kt)("p",null,"Maximum number of schema cache to use for external external tables."),(0,n.kt)("p",null,"Default: 10000"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: false"),(0,n.kt)("h4",{id:"external_cache_expire_time_minutes_after_access"},(0,n.kt)("inlineCode",{parentName:"h4"},"external_cache_expire_time_minutes_after_access")),(0,n.kt)("p",null,"Set how long the data in the cache expires after the last access. The unit is minutes.\nApplies to External Schema Cache as well as Hive Partition Cache."),(0,n.kt)("p",null,"Default: 1440"),(0,n.kt)("p",null,"Is it possible to dynamically configure: false"),(0,n.kt)("p",null,"Is it a configuration item unique to the Master FE node: false"),(0,n.kt)("h4",{id:"es_state_sync_interval_second"},(0,n.kt)("inlineCode",{parentName:"h4"},"es_state_sync_interval_second")),(0,n.kt)("p",null,"Default\uff1a10"),(0,n.kt)("p",null,"fe will call es api to get es index shard info every es_state_sync_interval_secs"),(0,n.kt)("h3",{id:"external-resources"},"External Resources"),(0,n.kt)("h4",{id:"dpp_hadoop_client_path"},(0,n.kt)("inlineCode",{parentName:"h4"},"dpp_hadoop_client_path")),(0,n.kt)("p",null,"Default\uff1a/lib/hadoop-client/hadoop/bin/hadoop"),(0,n.kt)("h4",{id:"dpp_bytes_per_reduce"},(0,n.kt)("inlineCode",{parentName:"h4"},"dpp_bytes_per_reduce")),(0,n.kt)("p",null,"Default\uff1a",(0,n.kt)("inlineCode",{parentName:"p"},"100 * 1024 * 1024L")," (100M)"),(0,n.kt)("h4",{id:"dpp_default_cluster"},(0,n.kt)("inlineCode",{parentName:"h4"},"dpp_default_cluster")),(0,n.kt)("p",null,"Default\uff1apalo-dpp"),(0,n.kt)("h4",{id:"dpp_default_config_str"},(0,n.kt)("inlineCode",{parentName:"h4"},"dpp_default_config_str")),(0,n.kt)("p",null,"Default\uff1a{\nhadoop_configs : 'mapred.job.priority=NORMAL;mapred.job.map.capacity=50;mapred.job.reduce.capacity=50;mapred.hce.replace.streaming=false;abaci.long.stored.job=true;dce.shuffle.enable=false;dfs.client.authserver.force_stop=true;dfs.client.auth.method=0'\n}"),(0,n.kt)("h4",{id:"dpp_config_str"},(0,n.kt)("inlineCode",{parentName:"h4"},"dpp_config_str")),(0,n.kt)("p",null,"Default\uff1a{\npalo-dpp : {\nhadoop_palo_path : '/dir',\nhadoop_configs : 'fs.default.name=hdfs://host:port;mapred.job.tracker=host:port;hadoop.job.ugi=user,password'\n}\n}"),(0,n.kt)("h4",{id:"yarn_config_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"yarn_config_dir")),(0,n.kt)("p",null,'Default\uff1aDorisFE.DORIS_HOME_DIR + "/lib/yarn-config"'),(0,n.kt)("p",null,"Default yarn config file directory \uff0cEach time before running the yarn command, we need to check that the  config file exists under this path, and if not, create them."),(0,n.kt)("h4",{id:"yarn_client_path"},(0,n.kt)("inlineCode",{parentName:"h4"},"yarn_client_path")),(0,n.kt)("p",null,'Default\uff1aDORIS_HOME_DIR + "/lib/yarn-client/hadoop/bin/yarn"'),(0,n.kt)("p",null,"Default yarn client path"),(0,n.kt)("h4",{id:"spark_launcher_log_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"spark_launcher_log_dir")),(0,n.kt)("p",null,'Default\uff1a sys_log_dir + "/spark_launcher_log"'),(0,n.kt)("p",null,"The specified spark launcher log dir"),(0,n.kt)("h4",{id:"spark_resource_path"},(0,n.kt)("inlineCode",{parentName:"h4"},"spark_resource_path")),(0,n.kt)("p",null,"Default\uff1anone"),(0,n.kt)("p",null,"Default spark dependencies path"),(0,n.kt)("h4",{id:"spark_home_default_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"spark_home_default_dir")),(0,n.kt)("p",null,'Default\uff1aDORIS_HOME_DIR + "/lib/spark2x"'),(0,n.kt)("p",null,"Default spark home dir"),(0,n.kt)("h4",{id:"spark_dpp_version"},(0,n.kt)("inlineCode",{parentName:"h4"},"spark_dpp_version")),(0,n.kt)("p",null,"Default\uff1a1.0.0"),(0,n.kt)("p",null,"Default spark dpp version"),(0,n.kt)("h3",{id:"else"},"Else"),(0,n.kt)("h4",{id:"tmp_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"tmp_dir")),(0,n.kt)("p",null,'Default\uff1aDorisFE.DORIS_HOME_DIR + "/temp_dir"'),(0,n.kt)("p",null,"temp dir is used to save intermediate results of some process, such as backup and restore process.  file in this dir will be cleaned after these process is finished."),(0,n.kt)("h4",{id:"custom_config_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"custom_config_dir")),(0,n.kt)("p",null,'Default\uff1aDorisFE.DORIS_HOME_DIR + "/conf"'),(0,n.kt)("p",null,"Custom configuration file directory"),(0,n.kt)("p",null,"Configure the location of the ",(0,n.kt)("inlineCode",{parentName:"p"},"fe_custom.conf")," file. The default is in the ",(0,n.kt)("inlineCode",{parentName:"p"},"conf/")," directory."),(0,n.kt)("p",null,"In some deployment environments, the ",(0,n.kt)("inlineCode",{parentName:"p"},"conf/")," directory may be overwritten due to system upgrades. This will cause the user modified configuration items to be overwritten. At this time, we can store ",(0,n.kt)("inlineCode",{parentName:"p"},"fe_custom.conf")," in another specified directory to prevent the configuration file from being overwritten."),(0,n.kt)("h4",{id:"plugin_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"plugin_dir")),(0,n.kt)("p",null,'Default\uff1aDORIS_HOME + "/plugins'),(0,n.kt)("p",null,"plugin install directory"),(0,n.kt)("h4",{id:"plugin_enable"},(0,n.kt)("inlineCode",{parentName:"h4"},"plugin_enable")),(0,n.kt)("p",null,"Default:true"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Whether the plug-in is enabled, enabled by default"),(0,n.kt)("h4",{id:"small_file_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"small_file_dir")),(0,n.kt)("p",null,"Default\uff1aDORIS_HOME_DIR/small_files"),(0,n.kt)("p",null,"Save small files"),(0,n.kt)("h4",{id:"max_small_file_size_bytes"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_small_file_size_bytes")),(0,n.kt)("p",null,"Default\uff1a1M"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"The max size of a single file store in SmallFileMgr"),(0,n.kt)("h4",{id:"max_small_file_number"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_small_file_number")),(0,n.kt)("p",null,"Default\uff1a100"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"The max number of files store in SmallFileMgr"),(0,n.kt)("h4",{id:"enable_metric_calculator"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_metric_calculator")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"If set to true, metric collector will be run as a daemon timer to collect metrics at fix interval"),(0,n.kt)("h4",{id:"report_queue_size"},(0,n.kt)("inlineCode",{parentName:"h4"},"report_queue_size")),(0,n.kt)("p",null,"Default\uff1a 100"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"This threshold is to avoid piling up too many report task in FE, which may cause OOM exception.  In some large Doris cluster, eg: 100 Backends with ten million replicas, a tablet report may cost  several seconds after some modification of metadata(drop partition, etc..). And one Backend will report tablets info every 1 min, so unlimited receiving reports is unacceptable. we will optimize the processing speed of tablet report in future, but now, just discard the report if queue size exceeding limit.\nSome online time cost:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"  1. disk report: 0-1 msta\n  2. sk report: 0-1 ms\n  3. tablet report\n  4. 10000 replicas: 200ms\n")),(0,n.kt)("h4",{id:"backup_job_default_timeout_ms"},(0,n.kt)("inlineCode",{parentName:"h4"},"backup_job_default_timeout_ms")),(0,n.kt)("p",null,"Default\uff1a86400 * 1000  (1 day)"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"default timeout of backup job"),(0,n.kt)("h4",{id:"max_backup_restore_job_num_per_db"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_backup_restore_job_num_per_db")),(0,n.kt)("p",null,"Default: 10"),(0,n.kt)("p",null,"This configuration is mainly used to control the number of backup/restore tasks recorded in each database."),(0,n.kt)("h4",{id:"enable_quantile_state_type"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_quantile_state_type")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Whether to enable the quantile_state data type"),(0,n.kt)("h4",{id:"enable_date_conversion"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_date_conversion")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"FE will convert date/datetime to datev2/datetimev2(0) automatically."),(0,n.kt)("h4",{id:"enable_decimal_conversion"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_decimal_conversion")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"FE will convert DecimalV2 to DecimalV3 automatically."),(0,n.kt)("h4",{id:"proxy_auth_magic_prefix"},(0,n.kt)("inlineCode",{parentName:"h4"},"proxy_auth_magic_prefix")),(0,n.kt)("p",null,"Default\uff1ax@8"),(0,n.kt)("h4",{id:"proxy_auth_enable"},(0,n.kt)("inlineCode",{parentName:"h4"},"proxy_auth_enable")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("h4",{id:"enable_func_pushdown"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_func_pushdown")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"Whether to push the filter conditions with functions down to MYSQL, when exectue query of ODBC\u3001JDBC external tables"),(0,n.kt)("h4",{id:"jdbc_drivers_dir"},(0,n.kt)("inlineCode",{parentName:"h4"},"jdbc_drivers_dir")),(0,n.kt)("p",null,"Default: ",(0,n.kt)("inlineCode",{parentName:"p"},"${DORIS_HOME}/jdbc_drivers"),";"),(0,n.kt)("p",null,"IsMutable\uff1afalse"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"The default dir to put jdbc drivers."),(0,n.kt)("h4",{id:"max_error_tablet_of_broker_load"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_error_tablet_of_broker_load")),(0,n.kt)("p",null,"Default: 3;"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Maximum number of error tablet showed in broker load."),(0,n.kt)("h4",{id:"default_db_max_running_txn_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"default_db_max_running_txn_num")),(0,n.kt)("p",null,"Default\uff1a-1"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1atrue"),(0,n.kt)("p",null,"Used to set the default database transaction quota size."),(0,n.kt)("p",null,"The default value setting to -1 means using ",(0,n.kt)("inlineCode",{parentName:"p"},"max_running_txn_num_per_db")," instead of ",(0,n.kt)("inlineCode",{parentName:"p"},"default_db_max_running_txn_num"),"."),(0,n.kt)("p",null,"To set the quota size of a single database, you can use:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"Set the database transaction quota\nALTER DATABASE db_name SET TRANSACTION QUOTA quota;\nView configuration\nshow data \uff08Detail\uff1aHELP SHOW DATA\uff09\n")),(0,n.kt)("h4",{id:"prefer_compute_node_for_external_table"},(0,n.kt)("inlineCode",{parentName:"h4"},"prefer_compute_node_for_external_table")),(0,n.kt)("p",null,"Default\uff1afalse"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"If set to true, query on external table will prefer to assign to compute node. And the max number of compute node is controlled by ",(0,n.kt)("inlineCode",{parentName:"p"},"min_backend_num_for_external_table"),".\nIf set to false, query on external table will assign to any node."),(0,n.kt)("h4",{id:"min_backend_num_for_external_table"},(0,n.kt)("inlineCode",{parentName:"h4"},"min_backend_num_for_external_table")),(0,n.kt)("p",null,"Default\uff1a3"),(0,n.kt)("p",null,"IsMutable\uff1atrue"),(0,n.kt)("p",null,"MasterOnly\uff1afalse"),(0,n.kt)("p",null,"Only take effect when ",(0,n.kt)("inlineCode",{parentName:"p"},"prefer_compute_node_for_external_table")," is true. If the compute node number is less than this value, query on external table will try to get some mix node to assign, to let the total number of node reach this value.\nIf the compute node number is larger than this value, query on external table will assign to compute node only."),(0,n.kt)("h4",{id:"infodb_support_ext_catalog"},(0,n.kt)("inlineCode",{parentName:"h4"},"infodb_support_ext_catalog")),(0,n.kt)("version",{since:"1.2.4"}),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"IsMutable: true"),(0,n.kt)("p",null,"MasterOnly: false"),(0,n.kt)("p",null,"If false, when select from tables in information_schema database,\nthe result will not contain the information of the table in external catalog.\nThis is to avoid query time when external catalog is not reachable."),(0,n.kt)("h4",{id:"enable_query_hit_stats"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_query_hit_stats")),(0,n.kt)("version",{since:"dev"}),(0,n.kt)("p",null,"Default: false"),(0,n.kt)("p",null,"IsMutable: true"),(0,n.kt)("p",null,"MasterOnly: false"),(0,n.kt)("p",null,"Controls whether to enable query hit statistics. The default is false."),(0,n.kt)("h4",{id:"div_precision_increment"},(0,n.kt)("inlineCode",{parentName:"h4"},"div_precision_increment")),(0,n.kt)("version",{since:"dev"}),(0,n.kt)("p",null,"Default: 4"),(0,n.kt)("p",null,"This variable indicates the number of digits by which to increase the scale of the result of\ndivision operations performed with the ",(0,n.kt)("inlineCode",{parentName:"p"},"/")," operator."),(0,n.kt)("h4",{id:"enable_convert_light_weight_schema_change"},(0,n.kt)("inlineCode",{parentName:"h4"},"enable_convert_light_weight_schema_change")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"Temporary configuration option. After it is enabled, a background thread will be started to automatically modify all olap tables to light schema change. The modification results can be viewed through the command ",(0,n.kt)("inlineCode",{parentName:"p"},"show convert_light_schema_change [from db]"),", and the conversion results of all non-light schema change tables will be displayed."),(0,n.kt)("h4",{id:"disable_local_deploy_manager_drop_node"},(0,n.kt)("inlineCode",{parentName:"h4"},"disable_local_deploy_manager_drop_node")),(0,n.kt)("p",null,"Default\uff1atrue"),(0,n.kt)("p",null,"Forbid LocalDeployManager drop nodes to prevent errors in the cluster.info file from causing nodes to be dropped."),(0,n.kt)("h4",{id:"mysqldb_replace_name"},(0,n.kt)("inlineCode",{parentName:"h4"},"mysqldb_replace_name")),(0,n.kt)("p",null,"Default: mysql"),(0,n.kt)("p",null,"To ensure compatibility with the MySQL ecosystem, Doris includes a built-in database called mysql. If this database conflicts with a user's own database, please modify this field to replace the name of the Doris built-in MySQL database with a different name."),(0,n.kt)("h4",{id:"max_auto_partition_num"},(0,n.kt)("inlineCode",{parentName:"h4"},"max_auto_partition_num")),(0,n.kt)("p",null,"Default value: 2000"),(0,n.kt)("p",null,"For auto-partitioned tables to prevent users from accidentally creating a large number of partitions, the number of partitions allowed per OLAP table is ",(0,n.kt)("inlineCode",{parentName:"p"},"max_auto_partition_num"),". Default 2000."))}c.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/529bfc84.8e695d7f.js b/assets/js/529bfc84.8e695d7f.js
new file mode 100644
index 0000000..b64e9fa
--- /dev/null
+++ b/assets/js/529bfc84.8e695d7f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoris_website=self.webpackChunkdoris_website||[]).push([[31905],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>m});var i=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,i)}return a}function r(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function s(e,t){if(null==e)return{};var a,i,n=function(e,t){if(null==e)return{};var a,i,n={},o=Object.keys(e);for(i=0;i<o.length;i++)a=o[i],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)a=o[i],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=i.createContext({}),c=function(e){var t=i.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},h=function(e){var t=c(e.components);return i.createElement(l.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},u=i.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),d=c(a),u=n,m=d["".concat(l,".").concat(u)]||d[u]||p[u]||o;return a?i.createElement(m,r(r({ref:t},h),{},{components:a})):i.createElement(m,r({ref:t},h))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,r=new Array(o);r[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:n,r[1]=s;for(var c=2;c<o;c++)r[c]=a[c];return i.createElement.apply(null,r)}return i.createElement.apply(null,a)}u.displayName="MDXCreateElement"},51394:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=a(87462),n=(a(67294),a(3905));const o={title:"How Big Data Is Saving Lives in Real Time: IoV Data Analytics Helps Prevent Accidents",summary:"What needs to be taken care of in IoV data analysis? What's the different between a near real-time analytic data platform and an actual real-time analytic data platform?",date:"2023-11-29",author:"Apache Doris",tags:["Best Practice"]},r=void 0,s={permalink:"/blog/how-big-data-is-saving-lives-in-real-time-iov-data-analytics-helps-prevent-accidents",source:"@site/blog/how-big-data-is-saving-lives-in-real-time-iov-data-analytics-helps-prevent-accidents.md",title:"How Big Data Is Saving Lives in Real Time: IoV Data Analytics Helps Prevent Accidents",description:"\x3c!--",date:"2023-11-29T00:00:00.000Z",formattedDate:"November 29, 2023",tags:[{label:"Best Practice",permalink:"/blog/tags/best-practice"}],hasTruncateMarker:!1,authors:[{name:"Apache Doris"}],frontMatter:{title:"How Big Data Is Saving Lives in Real Time: IoV Data Analytics Helps Prevent Accidents",summary:"What needs to be taken care of in IoV data analysis? What's the different between a near real-time analytic data platform and an actual real-time analytic data platform?",date:"2023-11-29",author:"Apache Doris",tags:["Best Practice"]},nextItem:{title:"Less Components, Higher Performance: Apache Doris Instead of ClickHouse, MySQL, Presto, and HBase",permalink:"/blog/less-components-higher-performance-apache-doris-instead-of-clickhouse-mysql-presto-and-hbase"}},l={authorsImageUrls:[void 0]},c=[{value:"What is special about IoV data?",id:"what-is-special-about-iov-data",level:2},{value:"IoV data processing",id:"iov-data-processing",level:2},{value:"From Apache Hive to Apache Doris: a transition to real-time analysis",id:"from-apache-hive-to-apache-doris-a-transition-to-real-time-analysis",level:2},{value:"1. The arrangement of CAN data",id:"1-the-arrangement-of-can-data",level:3},{value:"2. DTC data query",id:"2-dtc-data-query",level:3},{value:"Conclusion",id:"conclusion",level:2}],h={toc:c},d="wrapper";function p(e){let{components:t,...o}=e;return(0,n.kt)(d,(0,i.Z)({},h,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Internet of Vehicles, or IoV, is the product of the marriage between the automotive industry and IoT. IoV data is expected to get larger and larger, especially with electric vehicles being the new growth engine of the auto market. The question is: Is your data platform ready for that? This post shows you what an OLAP solution for IoV looks like."),(0,n.kt)("h2",{id:"what-is-special-about-iov-data"},"What is special about IoV data?"),(0,n.kt)("p",null,"The idea of IoV is intuitive: to create a network so vehicles can share information with each other or with urban infrastructure. What\u2018s often under-explained is the network within each vehicle itself. On each car, there is something called Controller Area Network (CAN) that works as the communication center for the electronic control systems. For a car traveling on the road, the CAN is the guarantee of its safety and functionality, because it is responsible for:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Vehicle system monitoring"),": The CAN is the pulse of the vehicle system. For example, sensors send the temperature, pressure, or position they detect to the CAN; controllers issue commands (like adjusting the valve or the drive motor) to the executor via the CAN. "),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Real-time feedback"),": Via the CAN, sensors send the speed, steering angle, and brake status to the controllers, which make timely adjustments to the car to ensure safety. "),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Data sharing and coordination"),": The CAN allows for data exchange (such as status and commands) between various devices, so the whole system can be more performant and efficient."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Network management and troubleshooting"),": The CAN keeps an eye on devices and components in the system. It recognizes, configures, and monitors the devices for maintenance and troubleshooting.")),(0,n.kt)("p",null,"With the CAN being that busy, you can imagine the data size that is traveling through the CAN every day. In the case of this post, we are talking about a car manufacturer who connects 4 million cars together and has to process 100 billion pieces of CAN data every day. "),(0,n.kt)("h2",{id:"iov-data-processing"},"IoV data processing"),(0,n.kt)("p",null,"To turn this huge data size into valuable information that guides product development, production, and sales is the juicy part. Like most data analytic workloads, this comes down to data writing and computation, which are also where challenges exist:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Data writing at scale"),": Sensors are everywhere in a car: doors, seats, brake lights... Plus, many sensors collect more than one signal. The 4 million cars add up to a data throughput of millions of TPS, which means dozens of terabytes every day. With increasing car sales, that number is still growing. "),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Real-time analysis"),': This is perhaps the best manifestation of "time is life". Car manufacturers collect the real-time data from their vehicles to identify potential malfunctions, and fix them before any damage happens.'),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Low-cost computation and storage"),": It's hard to talk about huge data size without mentioning its costs. Low cost makes big data processing sustainable.")),(0,n.kt)("h2",{id:"from-apache-hive-to-apache-doris-a-transition-to-real-time-analysis"},"From Apache Hive to Apache Doris: a transition to real-time analysis"),(0,n.kt)("p",null,"Like Rome, a real-time data processing platform is not built in a day. The car manufacturer used to rely on the combination of a batch analytic engine (Apache Hive) and some streaming frameworks and engines (Apache Flink, Apache Kafka) to gain near real-time data analysis performance. They didn't realize they needed real-time that bad until real-time was a problem."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Near Real-Time Data Analysis Platform")),(0,n.kt)("p",null,"This is what used to work for them:"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"IoV-Hive-based-data-warehouse",src:a(61392).Z,width:"1280",height:"766"})),(0,n.kt)("p",null,"Data from the CAN and vehicle sensors are uploaded via 4G network to the cloud gateway, which writes the data into Kafka. Then, Flink processes this data and forwards it to Hive. Going through several data warehousing layers in Hive, the aggregated data is exported to MySQL. At the end, Hive and MySQL provide data to the application layer for data analysis, dashboarding, etc."),(0,n.kt)("p",null,"Since Hive is primarily designed for batch processing rather than real-time analytics, you can tell the mismatch of it in this use case."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Data writing"),": With such a huge data size, the data ingestion time from Flink into Hive was noticeably long. In addition, Hive only supports data updating at the granularity of partitions, which is not enough for some cases."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Data analysis"),": The Hive-based analytic solution delivers high query latency, which is a multi-factor issue. Firstly, Hive was slower than expected when handling large tables with 1 billion rows. Secondly, within Hive, data is extracted from one layer to another by the execution of Spark SQL, which could take a while. Thirdly, as Hive needs to work with MySQL to serve all needs from the application side, data transfer between Hive and MySQL also adds to the query latency. ")),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Real-Time Data Analysis Platform")),(0,n.kt)("p",null,"This is what happens when they add a real-time analytic engine to the picture:"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"IoV-Doris-based-data-warehouse",src:a(34141).Z,width:"1280",height:"1058"})),(0,n.kt)("p",null,"Compared to the old Hive-based platform, this new one is more efficient in three ways:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Data writing"),": Data ingestion into ",(0,n.kt)("a",{parentName:"li",href:"https://doris.apache.org/"},"Apache Doris")," is quick and easy, without complicated configurations and the introduction of extra components. It supports a variety of data ingestion methods. For example, in this case, data is written from Kafka into Doris via ",(0,n.kt)("a",{parentName:"li",href:"https://doris.apache.org/docs/data-operate/import/import-way/stream-load-manual"},"Stream Load"),", and from Hive into Doris via ",(0,n.kt)("a",{parentName:"li",href:"https://doris.apache.org/docs/data-operate/import/import-way/broker-load-manual"},"Broker Load"),". "),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Data analysis"),": To showcase the query speed of Apache Doris by example, it can return a 10-million-row result set within seconds in a cross-table join query. Also, it can work as a ",(0,n.kt)("a",{parentName:"li",href:"https://doris.apache.org/docs/lakehouse/multi-catalog/"},"unified query gateway")," with its quick access to external data (Hive, MySQL, Iceberg, etc.), so analysts don't have to juggle between multiple components."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Computation and storage costs"),": Apache Doris provides the Z-Standard algorithm that can bring a 3~5 times higher data compression ratio. That's how it helps reduce costs in data computation and storage. Moreover, the compression can be done solely in Doris so it won't consume resources from Flink.")),(0,n.kt)("p",null,"A good real-time analytic solution not only stresses data processing speed, it also considers all the way along your data pipeline and smoothens every step of it. Here are two examples:"),(0,n.kt)("h3",{id:"1-the-arrangement-of-can-data"},"1. The arrangement of CAN data"),(0,n.kt)("p",null,"In Kafka, CAN data was arranged by the dimension of CAN ID. However, for the sake of data analysis, analysts had to compare signals from various vehicles, which meant to concatenate data of different CAN ID into a flat table and align it by timestamp. From that flat table, they could derive different tables for different analytic purposes. Such transformation was implemented using Spark SQL, which was time-consuming in the old Hive-based architecture, and the SQL statements are high-maintenance. Moreover, the data was updated by batch on a daily basis, which meant they could only get data from a day ago. "),(0,n.kt)("p",null,"In Apache Doris, all they need is to build the tables with the ",(0,n.kt)("a",{parentName:"p",href:"https://doris.apache.org/docs/data-table/data-model#aggregate-model"},"Aggregate Key model"),", specify VIN (Vehicle Identification Number) and timestamp as the Aggregate Key, and define other data fields by ",(0,n.kt)("inlineCode",{parentName:"p"},"REPLACE_IF_NOT_NULL"),". With Doris, they don't have to take care of the SQL statements or the flat table, but are able to extract real-time insights from real-time data."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"IoV-CAN-data",src:a(65309).Z,width:"1280",height:"937"})),(0,n.kt)("h3",{id:"2-dtc-data-query"},"2. DTC data query"),(0,n.kt)("p",null,"Of all CAN data, DTC (Diagnostic Trouble Code) deserves high attention and separate storage, because it tells you what's wrong with a car. Each day, the manufacturer receives around 1 billion pieces of DTC. To capture life-saving information from the DTC, data engineers need to relate the DTC data to a DTC configuration table in MySQL."),(0,n.kt)("p",null,"What they used to do was to write the DTC data into Kafka every day, process it in Flink, and store the results in Hive. In this way, the DTC data and the DTC configuration table were stored in two different components. That caused a dilemma: a 1-billion-row DTC table was hard to write into MySQL, while querying from Hive was slow. As the DTC configuration table was also constantly updated, engineers could only import a version of it into Hive on a regular basis. That meant they didn't always get to relate the DTC data to the latest DTC configurations. "),(0,n.kt)("p",null,"As is mentioned, Apache Doris can work as a unified query gateway. This is supported by its ",(0,n.kt)("a",{parentName:"p",href:"https://doris.apache.org/docs/lakehouse/multi-catalog/"},"Multi-Catalog")," feature. They import their DTC data from Hive into Doris, and then they create a MySQL Catalog in Doris to map to the DTC configuration table in MySQL. When all this is done, they can simply join the two tables within Doris and get real-time query response."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"IoV-DTC-data-query",src:a(51268).Z,width:"1280",height:"523"})),(0,n.kt)("h2",{id:"conclusion"},"Conclusion"),(0,n.kt)("p",null,"This is an actual real-time analytic solution for IoV. It is designed for data at really large scale, and it is now supporting a car manufacturer who receives 10 billion rows of new data every day in improving driving safety and experience."),(0,n.kt)("p",null,"Building a data platform to suit your use case is not easy, I hope this post helps you in building your own analytic solution."),(0,n.kt)("p",null,"Apache Doris ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/apache/doris"},"GitHub repo")),(0,n.kt)("p",null,"Find Apache Doris makers on ",(0,n.kt)("a",{parentName:"p",href:"https://join.slack.com/t/apachedoriscommunity/shared_invite/zt-1t3wfymur-0soNPATWQ~gbU8xutFOLog"},"Slack")))}p.isMDXComponent=!0},65309:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/IoV-CAN-data-21c4722dff0b60c64dd2286cbf3df3be.jpeg"},51268:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/IoV-DTC-data-query-7e0534a9aafd3005e1e08439acb288fc.png"},34141:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/IoV-Doris-based-data-warehouse-6eb6329ab3bedda6ed707f02219d85c7.png"},61392:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/IoV-Hive-based-data-warehouse-1bbef26f4fbb3012d0ae17fc3b1c4fa5.png"}}]);
\ No newline at end of file
diff --git a/assets/js/6482dac0.b6160d35.js b/assets/js/6482dac0.b6160d35.js
new file mode 100644
index 0000000..fa0ff13
--- /dev/null
+++ b/assets/js/6482dac0.b6160d35.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoris_website=self.webpackChunkdoris_website||[]).push([[53179],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>m});var i=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,i)}return a}function r(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function s(e,t){if(null==e)return{};var a,i,n=function(e,t){if(null==e)return{};var a,i,n={},o=Object.keys(e);for(i=0;i<o.length;i++)a=o[i],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)a=o[i],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=i.createContext({}),c=function(e){var t=i.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},h=function(e){var t=c(e.components);return i.createElement(l.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},u=i.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),d=c(a),u=n,m=d["".concat(l,".").concat(u)]||d[u]||p[u]||o;return a?i.createElement(m,r(r({ref:t},h),{},{components:a})):i.createElement(m,r({ref:t},h))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,r=new Array(o);r[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:n,r[1]=s;for(var c=2;c<o;c++)r[c]=a[c];return i.createElement.apply(null,r)}return i.createElement.apply(null,a)}u.displayName="MDXCreateElement"},56157:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=a(87462),n=(a(67294),a(3905));const o={title:"How Big Data Is Saving Lives in Real Time: IoV Data Analytics Helps Prevent Accidents",summary:"What needs to be taken care of in IoV data analysis? What's the different between a near real-time analytic data platform and an actual real-time analytic data platform?",date:"2023-11-29",author:"Apache Doris",tags:["Best Practice"]},r=void 0,s={permalink:"/blog/how-big-data-is-saving-lives-in-real-time-iov-data-analytics-helps-prevent-accidents",source:"@site/blog/how-big-data-is-saving-lives-in-real-time-iov-data-analytics-helps-prevent-accidents.md",title:"How Big Data Is Saving Lives in Real Time: IoV Data Analytics Helps Prevent Accidents",description:"\x3c!--",date:"2023-11-29T00:00:00.000Z",formattedDate:"November 29, 2023",tags:[{label:"Best Practice",permalink:"/blog/tags/best-practice"}],hasTruncateMarker:!1,authors:[{name:"Apache Doris"}],frontMatter:{title:"How Big Data Is Saving Lives in Real Time: IoV Data Analytics Helps Prevent Accidents",summary:"What needs to be taken care of in IoV data analysis? What's the different between a near real-time analytic data platform and an actual real-time analytic data platform?",date:"2023-11-29",author:"Apache Doris",tags:["Best Practice"]},nextItem:{title:"Less Components, Higher Performance: Apache Doris Instead of ClickHouse, MySQL, Presto, and HBase",permalink:"/blog/less-components-higher-performance-apache-doris-instead-of-clickhouse-mysql-presto-and-hbase"}},l={authorsImageUrls:[void 0]},c=[{value:"What is special about IoV data?",id:"what-is-special-about-iov-data",level:2},{value:"IoV data processing",id:"iov-data-processing",level:2},{value:"From Apache Hive to Apache Doris: a transition to real-time analysis",id:"from-apache-hive-to-apache-doris-a-transition-to-real-time-analysis",level:2},{value:"1. The arrangement of CAN data",id:"1-the-arrangement-of-can-data",level:3},{value:"2. DTC data query",id:"2-dtc-data-query",level:3},{value:"Conclusion",id:"conclusion",level:2}],h={toc:c},d="wrapper";function p(e){let{components:t,...o}=e;return(0,n.kt)(d,(0,i.Z)({},h,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Internet of Vehicles, or IoV, is the product of the marriage between the automotive industry and IoT. IoV data is expected to get larger and larger, especially with electric vehicles being the new growth engine of the auto market. The question is: Is your data platform ready for that? This post shows you what an OLAP solution for IoV looks like."),(0,n.kt)("h2",{id:"what-is-special-about-iov-data"},"What is special about IoV data?"),(0,n.kt)("p",null,"The idea of IoV is intuitive: to create a network so vehicles can share information with each other or with urban infrastructure. What\u2018s often under-explained is the network within each vehicle itself. On each car, there is something called Controller Area Network (CAN) that works as the communication center for the electronic control systems. For a car traveling on the road, the CAN is the guarantee of its safety and functionality, because it is responsible for:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Vehicle system monitoring"),": The CAN is the pulse of the vehicle system. For example, sensors send the temperature, pressure, or position they detect to the CAN; controllers issue commands (like adjusting the valve or the drive motor) to the executor via the CAN. "),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Real-time feedback"),": Via the CAN, sensors send the speed, steering angle, and brake status to the controllers, which make timely adjustments to the car to ensure safety. "),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Data sharing and coordination"),": The CAN allows for data exchange (such as status and commands) between various devices, so the whole system can be more performant and efficient."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Network management and troubleshooting"),": The CAN keeps an eye on devices and components in the system. It recognizes, configures, and monitors the devices for maintenance and troubleshooting.")),(0,n.kt)("p",null,"With the CAN being that busy, you can imagine the data size that is traveling through the CAN every day. In the case of this post, we are talking about a car manufacturer who connects 4 million cars together and has to process 100 billion pieces of CAN data every day. "),(0,n.kt)("h2",{id:"iov-data-processing"},"IoV data processing"),(0,n.kt)("p",null,"To turn this huge data size into valuable information that guides product development, production, and sales is the juicy part. Like most data analytic workloads, this comes down to data writing and computation, which are also where challenges exist:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Data writing at scale"),": Sensors are everywhere in a car: doors, seats, brake lights... Plus, many sensors collect more than one signal. The 4 million cars add up to a data throughput of millions of TPS, which means dozens of terabytes every day. With increasing car sales, that number is still growing. "),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Real-time analysis"),': This is perhaps the best manifestation of "time is life". Car manufacturers collect the real-time data from their vehicles to identify potential malfunctions, and fix them before any damage happens.'),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Low-cost computation and storage"),": It's hard to talk about huge data size without mentioning its costs. Low cost makes big data processing sustainable.")),(0,n.kt)("h2",{id:"from-apache-hive-to-apache-doris-a-transition-to-real-time-analysis"},"From Apache Hive to Apache Doris: a transition to real-time analysis"),(0,n.kt)("p",null,"Like Rome, a real-time data processing platform is not built in a day. The car manufacturer used to rely on the combination of a batch analytic engine (Apache Hive) and some streaming frameworks and engines (Apache Flink, Apache Kafka) to gain near real-time data analysis performance. They didn't realize they needed real-time that bad until real-time was a problem."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Near Real-Time Data Analysis Platform")),(0,n.kt)("p",null,"This is what used to work for them:"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"IoV-Hive-based-data-warehouse",src:a(61392).Z,width:"1280",height:"766"})),(0,n.kt)("p",null,"Data from the CAN and vehicle sensors are uploaded via 4G network to the cloud gateway, which writes the data into Kafka. Then, Flink processes this data and forwards it to Hive. Going through several data warehousing layers in Hive, the aggregated data is exported to MySQL. At the end, Hive and MySQL provide data to the application layer for data analysis, dashboarding, etc."),(0,n.kt)("p",null,"Since Hive is primarily designed for batch processing rather than real-time analytics, you can tell the mismatch of it in this use case."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Data writing"),": With such a huge data size, the data ingestion time from Flink into Hive was noticeably long. In addition, Hive only supports data updating at the granularity of partitions, which is not enough for some cases."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Data analysis"),": The Hive-based analytic solution delivers high query latency, which is a multi-factor issue. Firstly, Hive was slower than expected when handling large tables with 1 billion rows. Secondly, within Hive, data is extracted from one layer to another by the execution of Spark SQL, which could take a while. Thirdly, as Hive needs to work with MySQL to serve all needs from the application side, data transfer between Hive and MySQL also adds to the query latency. ")),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Real-Time Data Analysis Platform")),(0,n.kt)("p",null,"This is what happens when they add a real-time analytic engine to the picture:"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"IoV-Doris-based-data-warehouse",src:a(34141).Z,width:"1280",height:"1058"})),(0,n.kt)("p",null,"Compared to the old Hive-based platform, this new one is more efficient in three ways:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Data writing"),": Data ingestion into ",(0,n.kt)("a",{parentName:"li",href:"https://doris.apache.org/"},"Apache Doris")," is quick and easy, without complicated configurations and the introduction of extra components. It supports a variety of data ingestion methods. For example, in this case, data is written from Kafka into Doris via ",(0,n.kt)("a",{parentName:"li",href:"https://doris.apache.org/docs/data-operate/import/import-way/stream-load-manual"},"Stream Load"),", and from Hive into Doris via ",(0,n.kt)("a",{parentName:"li",href:"https://doris.apache.org/docs/data-operate/import/import-way/broker-load-manual"},"Broker Load"),". "),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Data analysis"),": To showcase the query speed of Apache Doris by example, it can return a 10-million-row result set within seconds in a cross-table join query. Also, it can work as a ",(0,n.kt)("a",{parentName:"li",href:"https://doris.apache.org/docs/lakehouse/multi-catalog/"},"unified query gateway")," with its quick access to external data (Hive, MySQL, Iceberg, etc.), so analysts don't have to juggle between multiple components."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Computation and storage costs"),": Apache Doris provides the Z-Standard algorithm that can bring a 3~5 times higher data compression ratio. That's how it helps reduce costs in data computation and storage. Moreover, the compression can be done solely in Doris so it won't consume resources from Flink.")),(0,n.kt)("p",null,"A good real-time analytic solution not only stresses data processing speed, it also considers all the way along your data pipeline and smoothens every step of it. Here are two examples:"),(0,n.kt)("h3",{id:"1-the-arrangement-of-can-data"},"1. The arrangement of CAN data"),(0,n.kt)("p",null,"In Kafka, CAN data was arranged by the dimension of CAN ID. However, for the sake of data analysis, analysts had to compare signals from various vehicles, which meant to concatenate data of different CAN ID into a flat table and align it by timestamp. From that flat table, they could derive different tables for different analytic purposes. Such transformation was implemented using Spark SQL, which was time-consuming in the old Hive-based architecture, and the SQL statements are high-maintenance. Moreover, the data was updated by batch on a daily basis, which meant they could only get data from a day ago. "),(0,n.kt)("p",null,"In Apache Doris, all they need is to build the tables with the ",(0,n.kt)("a",{parentName:"p",href:"https://doris.apache.org/docs/data-table/data-model#aggregate-model"},"Aggregate Key model"),", specify VIN (Vehicle Identification Number) and timestamp as the Aggregate Key, and define other data fields by ",(0,n.kt)("inlineCode",{parentName:"p"},"REPLACE_IF_NOT_NULL"),". With Doris, they don't have to take care of the SQL statements or the flat table, but are able to extract real-time insights from real-time data."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"IoV-CAN-data",src:a(65309).Z,width:"1280",height:"937"})),(0,n.kt)("h3",{id:"2-dtc-data-query"},"2. DTC data query"),(0,n.kt)("p",null,"Of all CAN data, DTC (Diagnostic Trouble Code) deserves high attention and separate storage, because it tells you what's wrong with a car. Each day, the manufacturer receives around 1 billion pieces of DTC. To capture life-saving information from the DTC, data engineers need to relate the DTC data to a DTC configuration table in MySQL."),(0,n.kt)("p",null,"What they used to do was to write the DTC data into Kafka every day, process it in Flink, and store the results in Hive. In this way, the DTC data and the DTC configuration table were stored in two different components. That caused a dilemma: a 1-billion-row DTC table was hard to write into MySQL, while querying from Hive was slow. As the DTC configuration table was also constantly updated, engineers could only import a version of it into Hive on a regular basis. That meant they didn't always get to relate the DTC data to the latest DTC configurations. "),(0,n.kt)("p",null,"As is mentioned, Apache Doris can work as a unified query gateway. This is supported by its ",(0,n.kt)("a",{parentName:"p",href:"https://doris.apache.org/docs/lakehouse/multi-catalog/"},"Multi-Catalog")," feature. They import their DTC data from Hive into Doris, and then they create a MySQL Catalog in Doris to map to the DTC configuration table in MySQL. When all this is done, they can simply join the two tables within Doris and get real-time query response."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"IoV-DTC-data-query",src:a(51268).Z,width:"1280",height:"523"})),(0,n.kt)("h2",{id:"conclusion"},"Conclusion"),(0,n.kt)("p",null,"This is an actual real-time analytic solution for IoV. It is designed for data at really large scale, and it is now supporting a car manufacturer who receives 10 billion rows of new data every day in improving driving safety and experience."),(0,n.kt)("p",null,"Building a data platform to suit your use case is not easy, I hope this post helps you in building your own analytic solution."),(0,n.kt)("p",null,"Apache Doris ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/apache/doris"},"GitHub repo")),(0,n.kt)("p",null,"Find Apache Doris makers on ",(0,n.kt)("a",{parentName:"p",href:"https://join.slack.com/t/apachedoriscommunity/shared_invite/zt-1t3wfymur-0soNPATWQ~gbU8xutFOLog"},"Slack")))}p.isMDXComponent=!0},65309:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/IoV-CAN-data-21c4722dff0b60c64dd2286cbf3df3be.jpeg"},51268:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/IoV-DTC-data-query-7e0534a9aafd3005e1e08439acb288fc.png"},34141:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/IoV-Doris-based-data-warehouse-6eb6329ab3bedda6ed707f02219d85c7.png"},61392:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/IoV-Hive-based-data-warehouse-1bbef26f4fbb3012d0ae17fc3b1c4fa5.png"}}]);
\ No newline at end of file
diff --git a/assets/js/935f2afb.4389b171.js b/assets/js/935f2afb.9ac14905.js
similarity index 94%
rename from assets/js/935f2afb.4389b171.js
rename to assets/js/935f2afb.9ac14905.js
index 8a3ceb6..639ecbe 100644
--- a/assets/js/935f2afb.4389b171.js
+++ b/assets/js/935f2afb.9ac14905.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkdoris_website=self.webpackChunkdoris_website||[]).push([[80053],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"dev","banner":"unreleased","badge":false,"noIndex":false,"className":"docs-version-current","isLast":false,"docsSidebars":{"docs":[{"type":"category","label":"Getting Started","items":[{"type":"link","label":"Quick Start","href":"/docs/dev/get-starting/quick-start","docId":"get-starting/quick-start"},{"type":"link","label":"What is Apache Doris","href":"/docs/dev/get-starting/what-is-apache-doris","docId":"get-starting/what-is-apache-doris"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Install and Deploy","items":[{"type":"link","label":"Standard Deployment","href":"/docs/dev/install/standard-deployment","docId":"install/standard-deployment"},{"type":"category","label":"Docker Deployment","items":[{"type":"link","label":"Build Docker Image","href":"/docs/dev/install/construct-docker/build-docker-image","docId":"install/construct-docker/build-docker-image"},{"type":"link","label":"Deploy Docker Cluster","href":"/docs/dev/install/construct-docker/run-docker-cluster","docId":"install/construct-docker/run-docker-cluster"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Deploy Doris on Kubernetes","href":"/docs/dev/install/k8s-deploy","docId":"install/k8s-deploy"},{"type":"category","label":"Source Code Compilation","items":[{"type":"link","label":"General Compilation","href":"/docs/dev/install/source-install/compilation-general","docId":"install/source-install/compilation-general"},{"type":"link","label":"Compiling with LDB Toolchain","href":"/docs/dev/install/source-install/compilation-with-ldb-toolchain","docId":"install/source-install/compilation-with-ldb-toolchain"},{"type":"link","label":"Compilation with Arm","href":"/docs/dev/install/source-install/compilation-arm","docId":"install/source-install/compilation-arm"},{"type":"link","label":"Compilation on Windows","href":"/docs/dev/install/source-install/compilation-win","docId":"install/source-install/compilation-win"},{"type":"link","label":"Compilation on MacOS","href":"/docs/dev/install/source-install/compilation-mac","docId":"install/source-install/compilation-mac"}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Table Design","items":[{"type":"link","label":"Data Model","href":"/docs/dev/data-table/data-model","docId":"data-table/data-model"},{"type":"link","label":"Data Partition","href":"/docs/dev/data-table/data-partition","docId":"data-table/data-partition"},{"type":"link","label":"Guidelines for Basic Use","href":"/docs/dev/data-table/basic-usage","docId":"data-table/basic-usage"},{"type":"link","label":"Rollup and Query","href":"/docs/dev/data-table/hit-the-rollup","docId":"data-table/hit-the-rollup"},{"type":"link","label":"Best Practices","href":"/docs/dev/data-table/best-practice","docId":"data-table/best-practice"},{"type":"category","label":"Index","items":[{"type":"link","label":"Index Overview","href":"/docs/dev/data-table/index/index-overview","docId":"data-table/index/index-overview"},{"type":"link","label":"Inverted Index","href":"/docs/dev/data-table/index/inverted-index","docId":"data-table/index/inverted-index"},{"type":"link","label":"BloomFilter Index","href":"/docs/dev/data-table/index/bloomfilter","docId":"data-table/index/bloomfilter"},{"type":"link","label":"NGram BloomFilter Index","href":"/docs/dev/data-table/index/ngram-bloomfilter-index","docId":"data-table/index/ngram-bloomfilter-index"},{"type":"link","label":"Bitmap Index","href":"/docs/dev/data-table/index/bitmap-index","docId":"data-table/index/bitmap-index"}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Data Operation","items":[{"type":"category","label":"Import","items":[{"type":"link","label":"Import Overview","href":"/docs/dev/data-operate/import/load-manual","docId":"data-operate/import/load-manual"},{"type":"category","label":"Import Scenes","items":[{"type":"link","label":"Import Local Data","href":"/docs/dev/data-operate/import/import-scenes/local-file-load","docId":"data-operate/import/import-scenes/local-file-load"},{"type":"link","label":"External Storage Data Import","href":"/docs/dev/data-operate/import/import-scenes/external-storage-load","docId":"data-operate/import/import-scenes/external-storage-load"},{"type":"link","label":"Kafka Data Subscription","href":"/docs/dev/data-operate/import/import-scenes/kafka-load","docId":"data-operate/import/import-scenes/kafka-load"},{"type":"link","label":"Synchronize Data Through External Table","href":"/docs/dev/data-operate/import/import-scenes/external-table-load","docId":"data-operate/import/import-scenes/external-table-load"},{"type":"link","label":"Synchronize Data Using Insert Method","href":"/docs/dev/data-operate/import/import-scenes/jdbc-load","docId":"data-operate/import/import-scenes/jdbc-load"},{"type":"link","label":"Data Import Things and Atomicity","href":"/docs/dev/data-operate/import/import-scenes/load-atomicity","docId":"data-operate/import/import-scenes/load-atomicity"},{"type":"link","label":"Data Transformation, Column Mapping and Filtering","href":"/docs/dev/data-operate/import/import-scenes/load-data-convert","docId":"data-operate/import/import-scenes/load-data-convert"},{"type":"link","label":"Import Strict Mode","href":"/docs/dev/data-operate/import/import-scenes/load-strict-mode","docId":"data-operate/import/import-scenes/load-strict-mode"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Import Way","items":[{"type":"link","label":"Broker Load","href":"/docs/dev/data-operate/import/import-way/broker-load-manual","docId":"data-operate/import/import-way/broker-load-manual"},{"type":"link","label":"Routine Load","href":"/docs/dev/data-operate/import/import-way/routine-load-manual","docId":"data-operate/import/import-way/routine-load-manual"},{"type":"link","label":"Spark Load","href":"/docs/dev/data-operate/import/import-way/spark-load-manual","docId":"data-operate/import/import-way/spark-load-manual"},{"type":"link","label":"Stream Load","href":"/docs/dev/data-operate/import/import-way/stream-load-manual","docId":"data-operate/import/import-way/stream-load-manual"},{"type":"link","label":"MySql Load","href":"/docs/dev/data-operate/import/import-way/mysql-load-manual","docId":"data-operate/import/import-way/mysql-load-manual"},{"type":"link","label":"S3 Load","href":"/docs/dev/data-operate/import/import-way/s3-load-manual","docId":"data-operate/import/import-way/s3-load-manual"},{"type":"link","label":"Insert Into","href":"/docs/dev/data-operate/import/import-way/insert-into-manual","docId":"data-operate/import/import-way/insert-into-manual"},{"type":"link","label":"Importing Data in JSON Format","href":"/docs/dev/data-operate/import/import-way/load-json-format","docId":"data-operate/import/import-way/load-json-format"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Import Advanced","items":[{"type":"link","label":"Min Load Replica Num","href":"/docs/dev/data-operate/import/import-advanced/min-load-replica-num","docId":"data-operate/import/import-advanced/min-load-replica-num"}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Export","items":[{"type":"link","label":"Export Overview","href":"/docs/dev/data-operate/export/export-manual","docId":"data-operate/export/export-manual"},{"type":"link","label":"Export Query Result","href":"/docs/dev/data-operate/export/outfile","docId":"data-operate/export/outfile"},{"type":"link","label":"Export Data or Table Structure with MYSQLDUMP ","href":"/docs/dev/data-operate/export/export-with-mysql-dump","docId":"data-operate/export/export-with-mysql-dump"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Update and Delete","items":[{"type":"link","label":"Batch Delete","href":"/docs/dev/data-operate/update-delete/batch-delete-manual","docId":"data-operate/update-delete/batch-delete-manual"},{"type":"link","label":"Update","href":"/docs/dev/data-operate/update-delete/update","docId":"data-operate/update-delete/update"},{"type":"link","label":"Partial Update","href":"/docs/dev/data-operate/update-delete/partial-update","docId":"data-operate/update-delete/partial-update"},{"type":"link","label":"Delete","href":"/docs/dev/data-operate/update-delete/delete-manual","docId":"data-operate/update-delete/delete-manual"},{"type":"link","label":"Sequence Column","href":"/docs/dev/data-operate/update-delete/sequence-column-manual","docId":"data-operate/update-delete/sequence-column-manual"}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Advanced Usage","items":[{"type":"category","label":"Alter Table","items":[{"type":"link","label":"Schema Change","href":"/docs/dev/advanced/alter-table/schema-change","docId":"advanced/alter-table/schema-change"},{"type":"link","label":"Replace Table","href":"/docs/dev/advanced/alter-table/replace-table","docId":"advanced/alter-table/replace-table"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Doris Partition","items":[{"type":"link","label":"Dynamic Partition","href":"/docs/dev/advanced/partition/dynamic-partition","docId":"advanced/partition/dynamic-partition"},{"type":"link","label":"Temporary Partition","href":"/docs/dev/advanced/partition/table-temp-partition","docId":"advanced/partition/table-temp-partition"},{"type":"link","label":"Auto Partition","href":"/docs/dev/advanced/partition/auto-partition","docId":"advanced/partition/auto-partition"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Data Cache","items":[{"type":"link","label":"Partition Cache","href":"/docs/dev/advanced/cache/partition-cache-manual","docId":"advanced/cache/partition-cache-manual"},{"type":"link","label":"Query Cache","href":"/docs/dev/advanced/cache/query-cache","docId":"advanced/cache/query-cache"},{"type":"link","label":"SQL Cache","href":"/docs/dev/advanced/cache/sql-cache-manual","docId":"advanced/cache/sql-cache-manual"}],"collapsed":true,"collapsible":true},{"type":"link","label":"AutoBucket","href":"/docs/dev/advanced/autobucket","docId":"advanced/autobucket"},{"type":"link","label":"Broker","href":"/docs/dev/advanced/broker","docId":"advanced/broker"},{"type":"category","label":"Best Practice","items":[{"type":"link","label":"Query Analysis","href":"/docs/dev/advanced/best-practice/query-analysis","docId":"advanced/best-practice/query-analysis"},{"type":"link","label":"Import Analysis","href":"/docs/dev/advanced/best-practice/import-analysis","docId":"advanced/best-practice/import-analysis"},{"type":"link","label":"Debug Log","href":"/docs/dev/advanced/best-practice/debug-log","docId":"advanced/best-practice/debug-log"},{"type":"link","label":"Compaction","href":"/docs/dev/advanced/best-practice/compaction","docId":"advanced/best-practice/compaction"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Resource Management","href":"/docs/dev/advanced/resource","docId":"advanced/resource"},{"type":"link","label":"Orthogonal BITMAP Calculation","href":"/docs/dev/advanced/orthogonal-bitmap-manual","docId":"advanced/orthogonal-bitmap-manual"},{"type":"link","label":"Approximate Deduplication Using HLL","href":"/docs/dev/advanced/using-hll","docId":"advanced/using-hll"},{"type":"link","label":"Variable","href":"/docs/dev/advanced/variables","docId":"advanced/variables"},{"type":"link","label":"Time Zone","href":"/docs/dev/advanced/time-zone","docId":"advanced/time-zone"},{"type":"link","label":"File Manager","href":"/docs/dev/advanced/small-file-mgr","docId":"advanced/small-file-mgr"},{"type":"link","label":"Cold Hot Separation","href":"/docs/dev/advanced/cold-hot-separation","docId":"advanced/cold-hot-separation"},{"type":"link","label":"Compute Node","href":"/docs/dev/advanced/compute-node","docId":"advanced/compute-node"},{"type":"link","label":"Row to Column","href":"/docs/dev/advanced/lateral-view","docId":"advanced/lateral-view"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Query Acceleration","items":[{"type":"link","label":"Pipeline Execution Engine","href":"/docs/dev/query-acceleration/pipeline-execution-engine","docId":"query-acceleration/pipeline-execution-engine"},{"type":"link","label":"Nereids-the Brand New Planner","href":"/docs/dev/query-acceleration/nereids","docId":"query-acceleration/nereids"},{"type":"link","label":"High-Concurrency Point Query","href":"/docs/dev/query-acceleration/hight-concurrent-point-query","docId":"query-acceleration/hight-concurrent-point-query"},{"type":"link","label":"Materialized View","href":"/docs/dev/query-acceleration/materialized-view","docId":"query-acceleration/materialized-view"},{"type":"link","label":"Statistics","href":"/docs/dev/query-acceleration/statistics","docId":"query-acceleration/statistics"},{"type":"category","label":"Join Optimization","items":[{"type":"link","label":"Bucket Shuffle Join","href":"/docs/dev/query-acceleration/join-optimization/bucket-shuffle-join","docId":"query-acceleration/join-optimization/bucket-shuffle-join"},{"type":"link","label":"Colocation Join","href":"/docs/dev/query-acceleration/join-optimization/colocation-join","docId":"query-acceleration/join-optimization/colocation-join"},{"type":"link","label":"Runtime Filter","href":"/docs/dev/query-acceleration/join-optimization/runtime-filter","docId":"query-acceleration/join-optimization/runtime-filter"},{"type":"link","label":"Doris Join Optimization Principle","href":"/docs/dev/query-acceleration/join-optimization/doris-join-optimization","docId":"query-acceleration/join-optimization/doris-join-optimization"}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Lakehouse","items":[{"type":"category","label":"Multi Catalog","items":[{"type":"link","label":"Multi-Catalog Overview","href":"/docs/dev/lakehouse/multi-catalog/","docId":"lakehouse/multi-catalog/multi-catalog"},{"type":"link","label":"Hive","href":"/docs/dev/lakehouse/multi-catalog/hive","docId":"lakehouse/multi-catalog/hive"},{"type":"link","label":"Iceberg","href":"/docs/dev/lakehouse/multi-catalog/iceberg","docId":"lakehouse/multi-catalog/iceberg"},{"type":"link","label":"Hudi","href":"/docs/dev/lakehouse/multi-catalog/hudi","docId":"lakehouse/multi-catalog/hudi"},{"type":"link","label":"Paimon","href":"/docs/dev/lakehouse/multi-catalog/paimon","docId":"lakehouse/multi-catalog/paimon"},{"type":"link","label":"Alibaba Cloud DLF","href":"/docs/dev/lakehouse/multi-catalog/dlf","docId":"lakehouse/multi-catalog/dlf"},{"type":"link","label":"Alibaba Cloud Max Compute","href":"/docs/dev/lakehouse/multi-catalog/max-compute","docId":"lakehouse/multi-catalog/max-compute"},{"type":"link","label":"Elasticsearch","href":"/docs/dev/lakehouse/multi-catalog/es","docId":"lakehouse/multi-catalog/es"},{"type":"link","label":"JDBC","href":"/docs/dev/lakehouse/multi-catalog/jdbc","docId":"lakehouse/multi-catalog/jdbc"}],"collapsed":true,"collapsible":true},{"type":"link","label":"File Analysis","href":"/docs/dev/lakehouse/file","docId":"lakehouse/file"},{"type":"link","label":"File Cache","href":"/docs/dev/lakehouse/filecache","docId":"lakehouse/filecache"},{"type":"link","label":"External Table Statistics","href":"/docs/dev/lakehouse/external-statistics","docId":"lakehouse/external-statistics"},{"type":"link","label":"File System Benchmark Tools","href":"/docs/dev/lakehouse/fs-benchmark-tool","docId":"lakehouse/fs-benchmark-tool"},{"type":"link","label":"FAQ","href":"/docs/dev/lakehouse/faq","docId":"lakehouse/faq"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Ecosystem","items":[{"type":"link","label":"Spark Doris Connector","href":"/docs/dev/ecosystem/spark-doris-connector","docId":"ecosystem/spark-doris-connector"},{"type":"link","label":"Flink Doris Connector","href":"/docs/dev/ecosystem/flink-doris-connector","docId":"ecosystem/flink-doris-connector"},{"type":"link","label":"DataX Doriswriter","href":"/docs/dev/ecosystem/datax","docId":"ecosystem/datax"},{"type":"link","label":"Seatunnel Doris Sink","href":"/docs/dev/ecosystem/seatunnel","docId":"ecosystem/seatunnel"},{"type":"link","label":"Kyuubi","href":"/docs/dev/ecosystem/kyuubi","docId":"ecosystem/kyuubi"},{"type":"link","label":"Mysql to Doris","href":"/docs/dev/ecosystem/mysql-to-doris","docId":"ecosystem/mysql-to-doris"},{"type":"link","label":"Logstash Doris Output Plugin","href":"/docs/dev/ecosystem/logstash","docId":"ecosystem/logstash"},{"type":"link","label":"Beats Doris Output Plugin","href":"/docs/dev/ecosystem/beats","docId":"ecosystem/beats"},{"type":"link","label":"Plugin Development Manual","href":"/docs/dev/ecosystem/plugin-development-manual","docId":"ecosystem/plugin-development-manual"},{"type":"link","label":"Audit Log Plugin","href":"/docs/dev/ecosystem/audit-plugin","docId":"ecosystem/audit-plugin"},{"type":"link","label":"CloudCanal Data Import","href":"/docs/dev/ecosystem/cloudcanal","docId":"ecosystem/cloudcanal"},{"type":"link","label":"Hive Bitmap UDF","href":"/docs/dev/ecosystem/hive-bitmap-udf","docId":"ecosystem/hive-bitmap-udf"},{"type":"link","label":"DBT Doris Adapter","href":"/docs/dev/ecosystem/dbt-doris-adapter","docId":"ecosystem/dbt-doris-adapter"},{"type":"category","label":"UDF","items":[{"type":"link","label":"Contribute UDF","href":"/docs/dev/ecosystem/udf/contribute-udf","docId":"ecosystem/udf/contribute-udf"},{"type":"link","label":"Remote User Defined Function Service","href":"/docs/dev/ecosystem/udf/remote-user-defined-function","docId":"ecosystem/udf/remote-user-defined-function"},{"type":"link","label":"Java UDF","href":"/docs/dev/ecosystem/udf/java-user-defined-function","docId":"ecosystem/udf/java-user-defined-function"}],"collapsed":true,"collapsible":true},{"type":"category","label":"UDAF","items":[{"type":"link","label":"Remote User Defined Aggregation Function Service","href":"/docs/dev/ecosystem/udaf/remote-user-defined-aggregation-function","docId":"ecosystem/udaf/remote-user-defined-aggregation-function"}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"SQL Manual","items":[{"type":"category","label":"SQL Functions","items":[{"type":"category","label":"Array Functions","items":[{"type":"link","label":"ARRAY","href":"/docs/dev/sql-manual/sql-functions/array-functions/array","docId":"sql-manual/sql-functions/array-functions/array"},{"type":"link","label":"ARRAY_MAX","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-max","docId":"sql-manual/sql-functions/array-functions/array-max"},{"type":"link","label":"ARRAY_MIN","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-min","docId":"sql-manual/sql-functions/array-functions/array-min"},{"type":"link","label":"ARRAY_MAP","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-map","docId":"sql-manual/sql-functions/array-functions/array-map"},{"type":"link","label":"ARRAY_FILTER","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-filter","docId":"sql-manual/sql-functions/array-functions/array-filter"},{"type":"link","label":"ARRAY_AVG","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-avg","docId":"sql-manual/sql-functions/array-functions/array-avg"},{"type":"link","label":"ARRAY_SUM","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-sum","docId":"sql-manual/sql-functions/array-functions/array-sum"},{"type":"link","label":"ARRAY_SIZE","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-size","docId":"sql-manual/sql-functions/array-functions/array-size"},{"type":"link","label":"ARRAY_REMOVE","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-remove","docId":"sql-manual/sql-functions/array-functions/array-remove"},{"type":"link","label":"ARRAY_SLICE","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-slice","docId":"sql-manual/sql-functions/array-functions/array-slice"},{"type":"link","label":"ARRAY_SORT","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-sort","docId":"sql-manual/sql-functions/array-functions/array-sort"},{"type":"link","label":"ARRAY_REVERSE_SORT","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-reverse-sort","docId":"sql-manual/sql-functions/array-functions/array-reverse-sort"},{"type":"link","label":"ARRAY_SORTBY","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-sortby","docId":"sql-manual/sql-functions/array-functions/array-sortby"},{"type":"link","label":"ARRAY_POSITION","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-position","docId":"sql-manual/sql-functions/array-functions/array-position"},{"type":"link","label":"ARRAY_CONTAINS","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-contains","docId":"sql-manual/sql-functions/array-functions/array-contains"},{"type":"link","label":"ARRAY_EXCEPT","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-except","docId":"sql-manual/sql-functions/array-functions/array-except"},{"type":"link","label":"ARRAY_PRODUCT","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-product","docId":"sql-manual/sql-functions/array-functions/array-product"},{"type":"link","label":"ARRAY_INTERSECT","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-intersect","docId":"sql-manual/sql-functions/array-functions/array-intersect"},{"type":"link","label":"ARRAY_RANGE","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-range","docId":"sql-manual/sql-functions/array-functions/array-range"},{"type":"link","label":"ARRAY_DISTINCT","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-distinct","docId":"sql-manual/sql-functions/array-functions/array-distinct"},{"type":"link","label":"ARRAY_DIFFERENCE","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-difference","docId":"sql-manual/sql-functions/array-functions/array-difference"},{"type":"link","label":"ARRAY_UNION","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-union","docId":"sql-manual/sql-functions/array-functions/array-union"},{"type":"link","label":"ARRAY_JOIN","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-join","docId":"sql-manual/sql-functions/array-functions/array-join"},{"type":"link","label":"ARRAY_WITH_CONSTANT","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-with-constant","docId":"sql-manual/sql-functions/array-functions/array-with-constant"},{"type":"link","label":"ARRAY_ENUMERATE","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-enumerate","docId":"sql-manual/sql-functions/array-functions/array-enumerate"},{"type":"link","label":"ARRAY_ENUMERATE_UNIQ","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-enumerate-uniq","docId":"sql-manual/sql-functions/array-functions/array-enumerate-uniq"},{"type":"link","label":"ARRAY_POPBACK","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-popback","docId":"sql-manual/sql-functions/array-functions/array-popback"},{"type":"link","label":"ARRAY_POPFRONT","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-popfront","docId":"sql-manual/sql-functions/array-functions/array-popfront"},{"type":"link","label":"ARRAY_PUSHFRONT","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-pushfront","docId":"sql-manual/sql-functions/array-functions/array-pushfront"},{"type":"link","label":"ARRAY_PUSHBACK","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-pushback","docId":"sql-manual/sql-functions/array-functions/array-pushback"},{"type":"link","label":"ARRAY_COMPACT","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-compact","docId":"sql-manual/sql-functions/array-functions/array-compact"},{"type":"link","label":"ARRAY_CONCAT","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-concat","docId":"sql-manual/sql-functions/array-functions/array-concat"},{"type":"link","label":"ARRAY_ZIP","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-zip","docId":"sql-manual/sql-functions/array-functions/array-zip"},{"type":"link","label":"ARRAY_SHUFFLE","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-shuffle","docId":"sql-manual/sql-functions/array-functions/array-shuffle"},{"type":"link","label":"ARRAY_CUM_SUM","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-cum-sum","docId":"sql-manual/sql-functions/array-functions/array-cum-sum"},{"type":"link","label":"ARRAY_EXISTS","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-exists","docId":"sql-manual/sql-functions/array-functions/array-exists"},{"type":"link","label":"ARRAY_FIRST_INDEX","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-first-index","docId":"sql-manual/sql-functions/array-functions/array-first-index"},{"type":"link","label":"ARRAY_LAST_INDEX","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-last-index","docId":"sql-manual/sql-functions/array-functions/array-last-index"},{"type":"link","label":"ARRAY_FIRST","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-first","docId":"sql-manual/sql-functions/array-functions/array-first"},{"type":"link","label":"ARRAY_LAST","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-last","docId":"sql-manual/sql-functions/array-functions/array-last"},{"type":"link","label":"ARRAYS_OVERLAP","href":"/docs/dev/sql-manual/sql-functions/array-functions/arrays-overlap","docId":"sql-manual/sql-functions/array-functions/arrays-overlap"},{"type":"link","label":"ARRAY_COUNT","href":"/docs/dev/sql-manual/sql-functions/array-functions/array-count","docId":"sql-manual/sql-functions/array-functions/array-count"},{"type":"link","label":"COUNTEQUAL","href":"/docs/dev/sql-manual/sql-functions/array-functions/countequal","docId":"sql-manual/sql-functions/array-functions/countequal"},{"type":"link","label":"ELEMENT_AT","href":"/docs/dev/sql-manual/sql-functions/array-functions/element-at","docId":"sql-manual/sql-functions/array-functions/element-at"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Date Functions","items":[{"type":"link","label":"CONVERT_TZ","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/convert-tz","docId":"sql-manual/sql-functions/date-time-functions/convert-tz"},{"type":"link","label":"CURDATE,CURRENT_DATE","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/curdate","docId":"sql-manual/sql-functions/date-time-functions/curdate"},{"type":"link","label":"CURTIME,CURRENT_TIME","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/curtime","docId":"sql-manual/sql-functions/date-time-functions/curtime"},{"type":"link","label":"CURRENT_TIMESTAMP","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/current-timestamp","docId":"sql-manual/sql-functions/date-time-functions/current-timestamp"},{"type":"link","label":"LOCALTIME,LOCALTIMESTAMP","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/localtime","docId":"sql-manual/sql-functions/date-time-functions/localtime"},{"type":"link","label":"NOW","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/now","docId":"sql-manual/sql-functions/date-time-functions/now"},{"type":"link","label":"YEAR","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/year","docId":"sql-manual/sql-functions/date-time-functions/year"},{"type":"link","label":"QUARTER","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/quarter","docId":"sql-manual/sql-functions/date-time-functions/quarter"},{"type":"link","label":"MONTH","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/month","docId":"sql-manual/sql-functions/date-time-functions/month"},{"type":"link","label":"DAY","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/day","docId":"sql-manual/sql-functions/date-time-functions/day"},{"type":"link","label":"DAYOFYEAR","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/dayofyear","docId":"sql-manual/sql-functions/date-time-functions/dayofyear"},{"type":"link","label":"DAYOFMONTH","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/dayofmonth","docId":"sql-manual/sql-functions/date-time-functions/dayofmonth"},{"type":"link","label":"DAYOFWEEK","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/dayofweek","docId":"sql-manual/sql-functions/date-time-functions/dayofweek"},{"type":"link","label":"WEEK","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/week","docId":"sql-manual/sql-functions/date-time-functions/week"},{"type":"link","label":"WEEKDAY","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/weekday","docId":"sql-manual/sql-functions/date-time-functions/weekday"},{"type":"link","label":"WEEKOFYEAR","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/weekofyear","docId":"sql-manual/sql-functions/date-time-functions/weekofyear"},{"type":"link","label":"YEARWEEK","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/yearweek","docId":"sql-manual/sql-functions/date-time-functions/yearweek"},{"type":"link","label":"DAYNAME","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/dayname","docId":"sql-manual/sql-functions/date-time-functions/dayname"},{"type":"link","label":"MONTHNAME","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/monthname","docId":"sql-manual/sql-functions/date-time-functions/monthname"},{"type":"link","label":"HOUR","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/hour","docId":"sql-manual/sql-functions/date-time-functions/hour"},{"type":"link","label":"MINUTE","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/minute","docId":"sql-manual/sql-functions/date-time-functions/minute"},{"type":"link","label":"SECOND","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/second","docId":"sql-manual/sql-functions/date-time-functions/second"},{"type":"link","label":"FROM_DAYS","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/from-days","docId":"sql-manual/sql-functions/date-time-functions/from-days"},{"type":"link","label":"LAST_DAY","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/last-day","docId":"sql-manual/sql-functions/date-time-functions/last-day"},{"type":"link","label":"TO_MONDAY","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/to-monday","docId":"sql-manual/sql-functions/date-time-functions/to-monday"},{"type":"link","label":"FROM_UNIXTIME","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/from-unixtime","docId":"sql-manual/sql-functions/date-time-functions/from-unixtime"},{"type":"link","label":"UNIX_TIMESTAMP","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/unix-timestamp","docId":"sql-manual/sql-functions/date-time-functions/unix-timestamp"},{"type":"link","label":"UTC_TIMESTAMP","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/utc-timestamp","docId":"sql-manual/sql-functions/date-time-functions/utc-timestamp"},{"type":"link","label":"TO_DATE","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/to-date","docId":"sql-manual/sql-functions/date-time-functions/to-date"},{"type":"link","label":"TO_DAYS","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/to-days","docId":"sql-manual/sql-functions/date-time-functions/to-days"},{"type":"link","label":"TIME_TO_SEC","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/time-to-sec","docId":"sql-manual/sql-functions/date-time-functions/time-to-sec"},{"type":"link","label":"SEC_TO_TIME","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/sec-to-time","docId":"sql-manual/sql-functions/date-time-functions/sec-to-time"},{"type":"link","label":"EXTRACT","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/extract","docId":"sql-manual/sql-functions/date-time-functions/extract"},{"type":"link","label":"MAKEDATE","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/makedate","docId":"sql-manual/sql-functions/date-time-functions/makedate"},{"type":"link","label":"STR_TO_DATE","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/str-to-date","docId":"sql-manual/sql-functions/date-time-functions/str-to-date"},{"type":"link","label":"TIME_ROUND","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/time-round","docId":"sql-manual/sql-functions/date-time-functions/time-round"},{"type":"link","label":"TIMEDIFF","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/timediff","docId":"sql-manual/sql-functions/date-time-functions/timediff"},{"type":"link","label":"TIMESTAMPADD","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/timestampadd","docId":"sql-manual/sql-functions/date-time-functions/timestampadd"},{"type":"link","label":"TIMESTAMPDIFF","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/timestampdiff","docId":"sql-manual/sql-functions/date-time-functions/timestampdiff"},{"type":"link","label":"DATE_ADD","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/date-add","docId":"sql-manual/sql-functions/date-time-functions/date-add"},{"type":"link","label":"DATE_SUB","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/date-sub","docId":"sql-manual/sql-functions/date-time-functions/date-sub"},{"type":"link","label":"DATE_TRUNC","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/date-trunc","docId":"sql-manual/sql-functions/date-time-functions/date-trunc"},{"type":"link","label":"DATE_FORMAT","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/date-format","docId":"sql-manual/sql-functions/date-time-functions/date-format"},{"type":"link","label":"DATEDIFF","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/datediff","docId":"sql-manual/sql-functions/date-time-functions/datediff"},{"type":"link","label":"MICROSECONDS_ADD","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/microseconds-add","docId":"sql-manual/sql-functions/date-time-functions/microseconds-add"},{"type":"link","label":"MICROSECONDS_DIFF","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/microseconds-diff","docId":"sql-manual/sql-functions/date-time-functions/microseconds-diff"},{"type":"link","label":"MICROSECONDS_SUB","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/microseconds-sub","docId":"sql-manual/sql-functions/date-time-functions/microseconds-sub"},{"type":"link","label":"MILLISECONDS_ADD","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/milliseconds-add","docId":"sql-manual/sql-functions/date-time-functions/milliseconds-add"},{"type":"link","label":"MILLISECONDS_DIFF","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/milliseconds-diff","docId":"sql-manual/sql-functions/date-time-functions/milliseconds-diff"},{"type":"link","label":"MILLISECONDS_SUB","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/milliseconds-sub","docId":"sql-manual/sql-functions/date-time-functions/milliseconds-sub"},{"type":"link","label":"MINUTES_ADD","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/minutes-add","docId":"sql-manual/sql-functions/date-time-functions/minutes-add"},{"type":"link","label":"MINUTES_DIFF","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/minutes-diff","docId":"sql-manual/sql-functions/date-time-functions/minutes-diff"},{"type":"link","label":"MINUTES_SUB","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/minutes-sub","docId":"sql-manual/sql-functions/date-time-functions/minutes-sub"},{"type":"link","label":"SECONDS_ADD","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/seconds-add","docId":"sql-manual/sql-functions/date-time-functions/seconds-add"},{"type":"link","label":"SECONDS_DIFF","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/seconds-diff","docId":"sql-manual/sql-functions/date-time-functions/seconds-diff"},{"type":"link","label":"SECONDS_SUB","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/seconds-sub","docId":"sql-manual/sql-functions/date-time-functions/seconds-sub"},{"type":"link","label":"HOURS_ADD","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/hours-add","docId":"sql-manual/sql-functions/date-time-functions/hours-add"},{"type":"link","label":"HOURS_DIFF","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/hours-diff","docId":"sql-manual/sql-functions/date-time-functions/hours-diff"},{"type":"link","label":"HOURS_SUB","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/hours-sub","docId":"sql-manual/sql-functions/date-time-functions/hours-sub"},{"type":"link","label":"DAYS_ADD","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/days-add","docId":"sql-manual/sql-functions/date-time-functions/days-add"},{"type":"link","label":"DAYS_DIFF","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/days-diff","docId":"sql-manual/sql-functions/date-time-functions/days-diff"},{"type":"link","label":"DAYS_SUB","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/days-sub","docId":"sql-manual/sql-functions/date-time-functions/days-sub"},{"type":"link","label":"WEEKS_ADD","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/weeks-add","docId":"sql-manual/sql-functions/date-time-functions/weeks-add"},{"type":"link","label":"WEEKS_DIFF","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/weeks-diff","docId":"sql-manual/sql-functions/date-time-functions/weeks-diff"},{"type":"link","label":"WEEKS_SUB","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/weeks-sub","docId":"sql-manual/sql-functions/date-time-functions/weeks-sub"},{"type":"link","label":"MONTHS_ADD","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/months-add","docId":"sql-manual/sql-functions/date-time-functions/months-add"},{"type":"link","label":"MONTHS_DIFF","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/months-diff","docId":"sql-manual/sql-functions/date-time-functions/months-diff"},{"type":"link","label":"MONTHS_SUB","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/months-sub","docId":"sql-manual/sql-functions/date-time-functions/months-sub"},{"type":"link","label":"YEARS_ADD","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/years-add","docId":"sql-manual/sql-functions/date-time-functions/years-add"},{"type":"link","label":"YEARS_DIFF","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/years-diff","docId":"sql-manual/sql-functions/date-time-functions/years-diff"},{"type":"link","label":"YEARS_SUB","href":"/docs/dev/sql-manual/sql-functions/date-time-functions/years-sub","docId":"sql-manual/sql-functions/date-time-functions/years-sub"}],"collapsed":true,"collapsible":true},{"type":"category","label":"GIS Functions","items":[{"type":"link","label":"ST_X","href":"/docs/dev/sql-manual/sql-functions/spatial-functions/st-x","docId":"sql-manual/sql-functions/spatial-functions/st-x"},{"type":"link","label":"ST_Y","href":"/docs/dev/sql-manual/sql-functions/spatial-functions/st-y","docId":"sql-manual/sql-functions/spatial-functions/st-y"},{"type":"link","label":"ST_CIRCLE","href":"/docs/dev/sql-manual/sql-functions/spatial-functions/st-circle","docId":"sql-manual/sql-functions/spatial-functions/st-circle"},{"type":"link","label":"ST_DISTANCE_SPHERE","href":"/docs/dev/sql-manual/sql-functions/spatial-functions/st-distance-sphere","docId":"sql-manual/sql-functions/spatial-functions/st-distance-sphere"},{"type":"link","label":"ST_ANGLE","href":"/docs/dev/sql-manual/sql-functions/spatial-functions/st-angle","docId":"sql-manual/sql-functions/spatial-functions/st-angle"},{"type":"link","label":"ST_AZIMUTH","href":"/docs/dev/sql-manual/sql-functions/spatial-functions/st-azimuth","docId":"sql-manual/sql-functions/spatial-functions/st-azimuth"},{"type":"link","label":"ST_ANGLE_SPHERE","href":"/docs/dev/sql-manual/sql-functions/spatial-functions/st-angle-sphere","docId":"sql-manual/sql-functions/spatial-functions/st-angle-sphere"},{"type":"link","label":"ST_AREA","href":"/docs/dev/sql-manual/sql-functions/spatial-functions/st-area","docId":"sql-manual/sql-functions/spatial-functions/st-area"},{"type":"link","label":"ST_POINT","href":"/docs/dev/sql-manual/sql-functions/spatial-functions/st-point","docId":"sql-manual/sql-functions/spatial-functions/st-point"},{"type":"link","label":"ST_POLYGON,ST_POLYFROMTEXT,ST_POLYGONFROMTEXT","href":"/docs/dev/sql-manual/sql-functions/spatial-functions/st-polygon","docId":"sql-manual/sql-functions/spatial-functions/st-polygon"},{"type":"link","label":"ST_ASTEXT,ST_ASWKT","href":"/docs/dev/sql-manual/sql-functions/spatial-functions/st-astext","docId":"sql-manual/sql-functions/spatial-functions/st-astext"},{"type":"link","label":"ST_CONTAINS","href":"/docs/dev/sql-manual/sql-functions/spatial-functions/st-contains","docId":"sql-manual/sql-functions/spatial-functions/st-contains"},{"type":"link","label":"ST_GEOMETRYFROMTEXT,ST_GEOMFROMTEXT","href":"/docs/dev/sql-manual/sql-functions/spatial-functions/st-geometryfromtext","docId":"sql-manual/sql-functions/spatial-functions/st-geometryfromtext"},{"type":"link","label":"ST_LINEFROMTEXT,ST_LINESTRINGFROMTEXT","href":"/docs/dev/sql-manual/sql-functions/spatial-functions/st-linefromtext","docId":"sql-manual/sql-functions/spatial-functions/st-linefromtext"},{"type":"link","label":"ST_ASBINARY","href":"/docs/dev/sql-manual/sql-functions/spatial-functions/st-asbinary","docId":"sql-manual/sql-functions/spatial-functions/st-asbinary"},{"type":"link","label":"ST_GEOMETRYFROMWKB,ST_GEOMFROMWKB","href":"/docs/dev/sql-manual/sql-functions/spatial-functions/st-geometryfromwkb","docId":"sql-manual/sql-functions/spatial-functions/st-geometryfromwkb"}],"collapsed":true,"collapsible":true},{"type":"category","label":"String Functions","items":[{"type":"link","label":"TO_BASE64","href":"/docs/dev/sql-manual/sql-functions/string-functions/to-base64","docId":"sql-manual/sql-functions/string-functions/to-base64"},{"type":"link","label":"FROM_BASE64","href":"/docs/dev/sql-manual/sql-functions/string-functions/from-base64","docId":"sql-manual/sql-functions/string-functions/from-base64"},{"type":"link","label":"ASCII","href":"/docs/dev/sql-manual/sql-functions/string-functions/ascii","docId":"sql-manual/sql-functions/string-functions/ascii"},{"type":"link","label":"LENGTH","href":"/docs/dev/sql-manual/sql-functions/string-functions/length","docId":"sql-manual/sql-functions/string-functions/length"},{"type":"link","label":"BIT_LENGTH","href":"/docs/dev/sql-manual/sql-functions/string-functions/bit-length","docId":"sql-manual/sql-functions/string-functions/bit-length"},{"type":"link","label":"CHAR_LENGTH","href":"/docs/dev/sql-manual/sql-functions/string-functions/char-length","docId":"sql-manual/sql-functions/string-functions/char-length"},{"type":"link","label":"LPAD","href":"/docs/dev/sql-manual/sql-functions/string-functions/lpad","docId":"sql-manual/sql-functions/string-functions/lpad"},{"type":"link","label":"RPAD","href":"/docs/dev/sql-manual/sql-functions/string-functions/rpad","docId":"sql-manual/sql-functions/string-functions/rpad"},{"type":"link","label":"LOWER","href":"/docs/dev/sql-manual/sql-functions/string-functions/lower","docId":"sql-manual/sql-functions/string-functions/lower"},{"type":"link","label":"LCASE","href":"/docs/dev/sql-manual/sql-functions/string-functions/lcase","docId":"sql-manual/sql-functions/string-functions/lcase"},{"type":"link","label":"UPPER","href":"/docs/dev/sql-manual/sql-functions/string-functions/upper","docId":"sql-manual/sql-functions/string-functions/upper"},{"type":"link","label":"UCASE","href":"/docs/dev/sql-manual/sql-functions/string-functions/ucase","docId":"sql-manual/sql-functions/string-functions/ucase"},{"type":"link","label":"INITCAP","href":"/docs/dev/sql-manual/sql-functions/string-functions/initcap","docId":"sql-manual/sql-functions/string-functions/initcap"},{"type":"link","label":"REPEAT","href":"/docs/dev/sql-manual/sql-functions/string-functions/repeat","docId":"sql-manual/sql-functions/string-functions/repeat"},{"type":"link","label":"REVERSE","href":"/docs/dev/sql-manual/sql-functions/string-functions/reverse","docId":"sql-manual/sql-functions/string-functions/reverse"},{"type":"link","label":"CHAR","href":"/docs/dev/sql-manual/sql-functions/string-functions/char","docId":"sql-manual/sql-functions/string-functions/char"},{"type":"link","label":"CONCAT","href":"/docs/dev/sql-manual/sql-functions/string-functions/concat","docId":"sql-manual/sql-functions/string-functions/concat"},{"type":"link","label":"CONCAT_WS","href":"/docs/dev/sql-manual/sql-functions/string-functions/concat-ws","docId":"sql-manual/sql-functions/string-functions/concat-ws"},{"type":"link","label":"SUBSTR","href":"/docs/dev/sql-manual/sql-functions/string-functions/substr","docId":"sql-manual/sql-functions/string-functions/substr"},{"type":"link","label":"SUBSTRING","href":"/docs/dev/sql-manual/sql-functions/string-functions/substring","docId":"sql-manual/sql-functions/string-functions/substring"},{"type":"link","label":"SUB_REPLACE","href":"/docs/dev/sql-manual/sql-functions/string-functions/sub-replace","docId":"sql-manual/sql-functions/string-functions/sub-replace"},{"type":"link","label":"APPEND_TRAILING_CHAR_IF_ABSENT","href":"/docs/dev/sql-manual/sql-functions/string-functions/append-trailing-char-if-absent","docId":"sql-manual/sql-functions/string-functions/append-trailing-char-if-absent"},{"type":"link","label":"ENDS_WITH","href":"/docs/dev/sql-manual/sql-functions/string-functions/ends-with","docId":"sql-manual/sql-functions/string-functions/ends-with"},{"type":"link","label":"STARTS_WITH","href":"/docs/dev/sql-manual/sql-functions/string-functions/starts-with","docId":"sql-manual/sql-functions/string-functions/starts-with"},{"type":"link","label":"TRIM","href":"/docs/dev/sql-manual/sql-functions/string-functions/trim","docId":"sql-manual/sql-functions/string-functions/trim"},{"type":"link","label":"LTRIM","href":"/docs/dev/sql-manual/sql-functions/string-functions/ltrim","docId":"sql-manual/sql-functions/string-functions/ltrim"},{"type":"link","label":"RTRIM","href":"/docs/dev/sql-manual/sql-functions/string-functions/rtrim","docId":"sql-manual/sql-functions/string-functions/rtrim"},{"type":"link","label":"NULL_OR_EMPTY","href":"/docs/dev/sql-manual/sql-functions/string-functions/null-or-empty","docId":"sql-manual/sql-functions/string-functions/null-or-empty"},{"type":"link","label":"NOT_NULL_OR_EMPTY","href":"/docs/dev/sql-manual/sql-functions/string-functions/not-null-or-empty","docId":"sql-manual/sql-functions/string-functions/not-null-or-empty"},{"type":"link","label":"HEX","href":"/docs/dev/sql-manual/sql-functions/string-functions/hex","docId":"sql-manual/sql-functions/string-functions/hex"},{"type":"link","label":"UNHEX","href":"/docs/dev/sql-manual/sql-functions/string-functions/unhex","docId":"sql-manual/sql-functions/string-functions/unhex"},{"type":"link","label":"ELT","href":"/docs/dev/sql-manual/sql-functions/string-functions/elt","docId":"sql-manual/sql-functions/string-functions/elt"},{"type":"link","label":"INSTR","href":"/docs/dev/sql-manual/sql-functions/string-functions/instr","docId":"sql-manual/sql-functions/string-functions/instr"},{"type":"link","label":"LOCATE","href":"/docs/dev/sql-manual/sql-functions/string-functions/locate","docId":"sql-manual/sql-functions/string-functions/locate"},{"type":"link","label":"FIELD","href":"/docs/dev/sql-manual/sql-functions/string-functions/field","docId":"sql-manual/sql-functions/string-functions/field"},{"type":"link","label":"FIND_IN_SET","href":"/docs/dev/sql-manual/sql-functions/string-functions/find-in-set","docId":"sql-manual/sql-functions/string-functions/find-in-set"},{"type":"link","label":"REPLACE","href":"/docs/dev/sql-manual/sql-functions/string-functions/replace","docId":"sql-manual/sql-functions/string-functions/replace"},{"type":"link","label":"LEFT","href":"/docs/dev/sql-manual/sql-functions/string-functions/left","docId":"sql-manual/sql-functions/string-functions/left"},{"type":"link","label":"RIGHT","href":"/docs/dev/sql-manual/sql-functions/string-functions/right","docId":"sql-manual/sql-functions/string-functions/right"},{"type":"link","label":"STRLEFT","href":"/docs/dev/sql-manual/sql-functions/string-functions/strleft","docId":"sql-manual/sql-functions/string-functions/strleft"},{"type":"link","label":"STRRIGHT","href":"/docs/dev/sql-manual/sql-functions/string-functions/strright","docId":"sql-manual/sql-functions/string-functions/strright"},{"type":"link","label":"SPLIT_PART","href":"/docs/dev/sql-manual/sql-functions/string-functions/split-part","docId":"sql-manual/sql-functions/string-functions/split-part"},{"type":"link","label":"SPLIT_BY_STRING","href":"/docs/dev/sql-manual/sql-functions/string-functions/split-by-string","docId":"sql-manual/sql-functions/string-functions/split-by-string"},{"type":"link","label":"SUBSTRING_INDEX","href":"/docs/dev/sql-manual/sql-functions/string-functions/substring-index","docId":"sql-manual/sql-functions/string-functions/substring-index"},{"type":"link","label":"MONEY_FORMAT","href":"/docs/dev/sql-manual/sql-functions/string-functions/money-format","docId":"sql-manual/sql-functions/string-functions/money-format"},{"type":"link","label":"PARSE_URL","href":"/docs/dev/sql-manual/sql-functions/string-functions/parse-url","docId":"sql-manual/sql-functions/string-functions/parse-url"},{"type":"link","label":"CONVERT_TO","href":"/docs/dev/sql-manual/sql-functions/string-functions/convert-to","docId":"sql-manual/sql-functions/string-functions/convert-to"},{"type":"link","label":"EXTRACT_URL_PARAMETER","href":"/docs/dev/sql-manual/sql-functions/string-functions/extract-url-parameter","docId":"sql-manual/sql-functions/string-functions/extract-url-parameter"},{"type":"link","label":"UUID","href":"/docs/dev/sql-manual/sql-functions/string-functions/uuid","docId":"sql-manual/sql-functions/string-functions/uuid"},{"type":"link","label":"SPACE","href":"/docs/dev/sql-manual/sql-functions/string-functions/space","docId":"sql-manual/sql-functions/string-functions/space"},{"type":"link","label":"SLEEP","href":"/docs/dev/sql-manual/sql-functions/string-functions/sleep","docId":"sql-manual/sql-functions/string-functions/sleep"},{"type":"link","label":"ESQUERY","href":"/docs/dev/sql-manual/sql-functions/string-functions/esquery","docId":"sql-manual/sql-functions/string-functions/esquery"},{"type":"category","label":"Search in String","items":[{"type":"link","label":"MULTI_SEARCH_ALL_POSITIONS","href":"/docs/dev/sql-manual/sql-functions/string-functions/search/multi-search-all-positions","docId":"sql-manual/sql-functions/string-functions/search/multi-search-all-positions"},{"type":"link","label":"MULTI_MATCH_ANY","href":"/docs/dev/sql-manual/sql-functions/string-functions/search/multi-match-any","docId":"sql-manual/sql-functions/string-functions/search/multi-match-any"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Mask in String","items":[{"type":"link","label":"MASK","href":"/docs/dev/sql-manual/sql-functions/string-functions/mask/","docId":"sql-manual/sql-functions/string-functions/mask/mask"},{"type":"link","label":"MASK_FIRST_N","href":"/docs/dev/sql-manual/sql-functions/string-functions/mask/mask-first-n","docId":"sql-manual/sql-functions/string-functions/mask/mask-first-n"},{"type":"link","label":"MASK_LAST_N","href":"/docs/dev/sql-manual/sql-functions/string-functions/mask/mask-last-n","docId":"sql-manual/sql-functions/string-functions/mask/mask-last-n"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Fuzzy Match","items":[{"type":"link","label":"LIKE","href":"/docs/dev/sql-manual/sql-functions/string-functions/like/","docId":"sql-manual/sql-functions/string-functions/like/like"},{"type":"link","label":"NOT LIKE","href":"/docs/dev/sql-manual/sql-functions/string-functions/like/not-like","docId":"sql-manual/sql-functions/string-functions/like/not-like"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Regular Match","items":[{"type":"link","label":"REGEXP","href":"/docs/dev/sql-manual/sql-functions/string-functions/regexp/","docId":"sql-manual/sql-functions/string-functions/regexp/regexp"},{"type":"link","label":"REGEXP_EXTRACT","href":"/docs/dev/sql-manual/sql-functions/string-functions/regexp/regexp-extract","docId":"sql-manual/sql-functions/string-functions/regexp/regexp-extract"},{"type":"link","label":"REGEXP_EXTRACT_ALL","href":"/docs/dev/sql-manual/sql-functions/string-functions/regexp/regexp-extract-all","docId":"sql-manual/sql-functions/string-functions/regexp/regexp-extract-all"},{"type":"link","label":"REGEXP_REPLACE","href":"/docs/dev/sql-manual/sql-functions/string-functions/regexp/regexp-replace","docId":"sql-manual/sql-functions/string-functions/regexp/regexp-replace"},{"type":"link","label":"REGEXP_REPLACE_ONE","href":"/docs/dev/sql-manual/sql-functions/string-functions/regexp/regexp-replace-one","docId":"sql-manual/sql-functions/string-functions/regexp/regexp-replace-one"},{"type":"link","label":"NOT REGEXP","href":"/docs/dev/sql-manual/sql-functions/string-functions/regexp/not-regexp","docId":"sql-manual/sql-functions/string-functions/regexp/not-regexp"}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Struct Functions","items":[{"type":"link","label":"STRUCT","href":"/docs/dev/sql-manual/sql-functions/struct-functions/struct","docId":"sql-manual/sql-functions/struct-functions/struct"},{"type":"link","label":"NAMED_STRUCT","href":"/docs/dev/sql-manual/sql-functions/struct-functions/named-struct","docId":"sql-manual/sql-functions/struct-functions/named-struct"},{"type":"link","label":"STRUCT_ELEMENT","href":"/docs/dev/sql-manual/sql-functions/struct-functions/struct-element","docId":"sql-manual/sql-functions/struct-functions/struct-element"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Combinators","items":[{"type":"link","label":"STATE","href":"/docs/dev/sql-manual/sql-functions/combinators/state","docId":"sql-manual/sql-functions/combinators/state"},{"type":"link","label":"MERGE","href":"/docs/dev/sql-manual/sql-functions/combinators/merge","docId":"sql-manual/sql-functions/combinators/merge"},{"type":"link","label":"UNION","href":"/docs/dev/sql-manual/sql-functions/combinators/union","docId":"sql-manual/sql-functions/combinators/union"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Aggregate Functions","items":[{"type":"link","label":"COLLECT_SET","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/collect-set","docId":"sql-manual/sql-functions/aggregate-functions/collect-set"},{"type":"link","label":"MIN","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/min","docId":"sql-manual/sql-functions/aggregate-functions/min"},{"type":"link","label":"STDDEV_SAMP","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/stddev-samp","docId":"sql-manual/sql-functions/aggregate-functions/stddev-samp"},{"type":"link","label":"AVG","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/avg","docId":"sql-manual/sql-functions/aggregate-functions/avg"},{"type":"link","label":"AVG_WEIGHTED","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/avg-weighted","docId":"sql-manual/sql-functions/aggregate-functions/avg-weighted"},{"type":"link","label":"PERCENTILE","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/percentile","docId":"sql-manual/sql-functions/aggregate-functions/percentile"},{"type":"link","label":"PERCENTILE_ARRAY","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/percentile-array","docId":"sql-manual/sql-functions/aggregate-functions/percentile-array"},{"type":"link","label":"HLL_UNION_AGG","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/hll-union-agg","docId":"sql-manual/sql-functions/aggregate-functions/hll-union-agg"},{"type":"link","label":"TOPN","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/topn","docId":"sql-manual/sql-functions/aggregate-functions/topn"},{"type":"link","label":"TOPN_ARRAY","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/topn-array","docId":"sql-manual/sql-functions/aggregate-functions/topn-array"},{"type":"link","label":"TOPN_WEIGHTED","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/topn-weighted","docId":"sql-manual/sql-functions/aggregate-functions/topn-weighted"},{"type":"link","label":"COUNT","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/count","docId":"sql-manual/sql-functions/aggregate-functions/count"},{"type":"link","label":"SUM","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/sum","docId":"sql-manual/sql-functions/aggregate-functions/sum"},{"type":"link","label":"MAX_BY","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/max-by","docId":"sql-manual/sql-functions/aggregate-functions/max-by"},{"type":"link","label":"BITMAP_UNION","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/bitmap-union","docId":"sql-manual/sql-functions/aggregate-functions/bitmap-union"},{"type":"link","label":"GROUP_BITMAP_XOR","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/group-bitmap-xor","docId":"sql-manual/sql-functions/aggregate-functions/group-bitmap-xor"},{"type":"link","label":"GROUP_BIT_AND","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/group-bit-and","docId":"sql-manual/sql-functions/aggregate-functions/group-bit-and"},{"type":"link","label":"GROUP_BIT_OR","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/group-bit-or","docId":"sql-manual/sql-functions/aggregate-functions/group-bit-or"},{"type":"link","label":"GROUP_BIT_XOR","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/group-bit-xor","docId":"sql-manual/sql-functions/aggregate-functions/group-bit-xor"},{"type":"link","label":"PERCENTILE_APPROX","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/percentile-approx","docId":"sql-manual/sql-functions/aggregate-functions/percentile-approx"},{"type":"link","label":"STDDEV,STDDEV_POP","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/stddev","docId":"sql-manual/sql-functions/aggregate-functions/stddev"},{"type":"link","label":"GROUP_CONCAT","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/group-concat","docId":"sql-manual/sql-functions/aggregate-functions/group-concat"},{"type":"link","label":"COLLECT_LIST","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/collect-list","docId":"sql-manual/sql-functions/aggregate-functions/collect-list"},{"type":"link","label":"MIN_BY","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/min-by","docId":"sql-manual/sql-functions/aggregate-functions/min-by"},{"type":"link","label":"MAX","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/max","docId":"sql-manual/sql-functions/aggregate-functions/max"},{"type":"link","label":"ANY_VALUE","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/any-value","docId":"sql-manual/sql-functions/aggregate-functions/any-value"},{"type":"link","label":"VARIANCE_SAMP,VARIANCE_SAMP","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/var-samp","docId":"sql-manual/sql-functions/aggregate-functions/var-samp"},{"type":"link","label":"APPROX_COUNT_DISTINCT","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/approx-count-distinct","docId":"sql-manual/sql-functions/aggregate-functions/approx-count-distinct"},{"type":"link","label":"VARIANCE,VAR_POP,VARIANCE_POP","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/variance","docId":"sql-manual/sql-functions/aggregate-functions/variance"},{"type":"link","label":"RETENTION","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/retention","docId":"sql-manual/sql-functions/aggregate-functions/retention"},{"type":"link","label":"SEQUENCE_MATCH","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/sequence-match","docId":"sql-manual/sql-functions/aggregate-functions/sequence-match"},{"type":"link","label":"SEQUENCE-COUNT","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/sequence-count","docId":"sql-manual/sql-functions/aggregate-functions/sequence-count"},{"type":"link","label":"GROUPING","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/grouping","docId":"sql-manual/sql-functions/aggregate-functions/grouping"},{"type":"link","label":"GROUPING_ID","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/grouping-id","docId":"sql-manual/sql-functions/aggregate-functions/grouping-id"},{"type":"link","label":"COUNT_BY_ENUM","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/count-by-enum","docId":"sql-manual/sql-functions/aggregate-functions/count-by-enum"},{"type":"link","label":"HISTOGRAM","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/histogram","docId":"sql-manual/sql-functions/aggregate-functions/histogram"},{"type":"link","label":"MAP_AGG","href":"/docs/dev/sql-manual/sql-functions/aggregate-functions/map-agg","docId":"sql-manual/sql-functions/aggregate-functions/map-agg"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Bitmap Functions","items":[{"type":"link","label":"TO_BITMAP","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/to-bitmap","docId":"sql-manual/sql-functions/bitmap-functions/to-bitmap"},{"type":"link","label":"BITMAP_HASH","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-hash","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-hash"},{"type":"link","label":"BITMAP_FROM_STRING","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-from-string","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-from-string"},{"type":"link","label":"BITMAP_TO_STRING","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-to-string","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-to-string"},{"type":"link","label":"BITMAP_TO_ARRAY","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-to-array","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-to-array"},{"type":"link","label":"BITMAP_FROM_ARRAY","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-from-array","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-from-array"},{"type":"link","label":"BITMAP_EMPTY","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-empty","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-empty"},{"type":"link","label":"BITMAP_OR","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-or","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-or"},{"type":"link","label":"BITMAP_AND","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-and","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-and"},{"type":"link","label":"BITMAP_UNION","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-union","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-union"},{"type":"link","label":"BITMAP_XOR","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-xor","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-xor"},{"type":"link","label":"BITMAP_NOT","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-not","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-not"},{"type":"link","label":"BITMAP_AND_NOT,BITMAP_ANDNOT","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-and-not","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-and-not"},{"type":"link","label":"BITMAP_SUBSET_LIMIT","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-subset-limit","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-subset-limit"},{"type":"link","label":"BITMAP_SUBSET_IN_RANGE","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-subset-in-range","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-subset-in-range"},{"type":"link","label":"SUB_BITMAP","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/sub-bitmap","docId":"sql-manual/sql-functions/bitmap-functions/sub-bitmap"},{"type":"link","label":"BITMAP_COUNT","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-count","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-count"},{"type":"link","label":"BITMAP_AND_COUNT","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-and-count","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-and-count"},{"type":"link","label":"BITMAP_AND_NOT_COUNT,BITMAP_ANDNOT_COUNT","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-and-not-count","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-and-not-count"},{"type":"link","label":"ORTHOGONAL_BITMAP_UNION_COUNT","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/orthogonal-bitmap-union-count","docId":"sql-manual/sql-functions/bitmap-functions/orthogonal-bitmap-union-count"},{"type":"link","label":"BITMAP_XOR_COUNT","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-xor-count","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-xor-count"},{"type":"link","label":"BITMAP_OR_COUNT","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-or-count","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-or-count"},{"type":"link","label":"BITMAP_CONTAINS","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-contains","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-contains"},{"type":"link","label":"BITMAP_HAS_ALL","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-has-all","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-has-all"},{"type":"link","label":"BITMAP_HAS_ANY","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-has-any","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-has-any"},{"type":"link","label":"BITMAP_MAX","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-max","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-max"},{"type":"link","label":"BITMAP_MIN","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-min","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-min"},{"type":"link","label":"INTERSECT_COUNT","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/intersect-count","docId":"sql-manual/sql-functions/bitmap-functions/intersect-count"},{"type":"link","label":"BITMAP_INTERSECT","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-intersect","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-intersect"},{"type":"link","label":"ORTHOGONAL_BITMAP_INTERSECT","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/orthogonal-bitmap-intersect","docId":"sql-manual/sql-functions/bitmap-functions/orthogonal-bitmap-intersect"},{"type":"link","label":"ORTHOGONAL_BITMAP_INTERSECT_COUNT","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/orthogonal-bitmap-intersect-count","docId":"sql-manual/sql-functions/bitmap-functions/orthogonal-bitmap-intersect-count"},{"type":"link","label":"ORTHOGONAL_BITMAP_EXPR_CALCULATE","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/orthogonal-bitmap-expr-calculate","docId":"sql-manual/sql-functions/bitmap-functions/orthogonal-bitmap-expr-calculate"},{"type":"link","label":"ORTHOGONAL_BITMAP_EXPR_CALCULATE_COUNT","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/orthogonal-bitmap-expr-calculate-count","docId":"sql-manual/sql-functions/bitmap-functions/orthogonal-bitmap-expr-calculate-count"},{"type":"link","label":"BITMAP_HASH64","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-hash64","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-hash64"},{"type":"link","label":"BITMAP_REMOVE","href":"/docs/dev/sql-manual/sql-functions/bitmap-functions/bitmap-remove","docId":"sql-manual/sql-functions/bitmap-functions/bitmap-remove"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Bitwise Functions","items":[{"type":"link","label":"BITAND","href":"/docs/dev/sql-manual/sql-functions/bitwise-functions/bitand","docId":"sql-manual/sql-functions/bitwise-functions/bitand"},{"type":"link","label":"BITOR","href":"/docs/dev/sql-manual/sql-functions/bitwise-functions/bitor","docId":"sql-manual/sql-functions/bitwise-functions/bitor"},{"type":"link","label":"BITXOR","href":"/docs/dev/sql-manual/sql-functions/bitwise-functions/bitxor","docId":"sql-manual/sql-functions/bitwise-functions/bitxor"},{"type":"link","label":"BITNOT","href":"/docs/dev/sql-manual/sql-functions/bitwise-functions/bitnot","docId":"sql-manual/sql-functions/bitwise-functions/bitnot"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Conditional Functions","items":[{"type":"link","label":"CASE","href":"/docs/dev/sql-manual/sql-functions/conditional-functions/case","docId":"sql-manual/sql-functions/conditional-functions/case"},{"type":"link","label":"COALESCE","href":"/docs/dev/sql-manual/sql-functions/conditional-functions/coalesce","docId":"sql-manual/sql-functions/conditional-functions/coalesce"},{"type":"link","label":"IF","href":"/docs/dev/sql-manual/sql-functions/conditional-functions/if","docId":"sql-manual/sql-functions/conditional-functions/if"},{"type":"link","label":"IFNULL","href":"/docs/dev/sql-manual/sql-functions/conditional-functions/ifnull","docId":"sql-manual/sql-functions/conditional-functions/ifnull"},{"type":"link","label":"NVL","href":"/docs/dev/sql-manual/sql-functions/conditional-functions/nvl","docId":"sql-manual/sql-functions/conditional-functions/nvl"},{"type":"link","label":"NULLIF","href":"/docs/dev/sql-manual/sql-functions/conditional-functions/nullif","docId":"sql-manual/sql-functions/conditional-functions/nullif"}],"collapsed":true,"collapsible":true},{"type":"category","label":"JSON Functions","items":[{"type":"link","label":"JSON_PARSE","href":"/docs/dev/sql-manual/sql-functions/json-functions/json-parse","docId":"sql-manual/sql-functions/json-functions/json-parse"},{"type":"link","label":"JSON_EXTRACT","href":"/docs/dev/sql-manual/sql-functions/json-functions/json-extract","docId":"sql-manual/sql-functions/json-functions/json-extract"},{"type":"link","label":"JSON_EXISTS_PATH","href":"/docs/dev/sql-manual/sql-functions/json-functions/json-exists-path","docId":"sql-manual/sql-functions/json-functions/json-exists-path"},{"type":"link","label":"JSON_TYPE","href":"/docs/dev/sql-manual/sql-functions/json-functions/json-type","docId":"sql-manual/sql-functions/json-functions/json-type"},{"type":"link","label":"JSON_ARRAY","href":"/docs/dev/sql-manual/sql-functions/json-functions/json-array","docId":"sql-manual/sql-functions/json-functions/json-array"},{"type":"link","label":"JSON_OBJECT","href":"/docs/dev/sql-manual/sql-functions/json-functions/json-object","docId":"sql-manual/sql-functions/json-functions/json-object"},{"type":"link","label":"JSON_QUOTE","href":"/docs/dev/sql-manual/sql-functions/json-functions/json-quote","docId":"sql-manual/sql-functions/json-functions/json-quote"},{"type":"link","label":"JSON_UNQUOTE","href":"/docs/dev/sql-manual/sql-functions/json-functions/json-unquote","docId":"sql-manual/sql-functions/json-functions/json-unquote"},{"type":"link","label":"JSON_VALID","href":"/docs/dev/sql-manual/sql-functions/json-functions/json-valid","docId":"sql-manual/sql-functions/json-functions/json-valid"},{"type":"link","label":"JSON_CONTAINS","href":"/docs/dev/sql-manual/sql-functions/json-functions/json-contains","docId":"sql-manual/sql-functions/json-functions/json-contains"},{"type":"link","label":"JSON_LENGTH","href":"/docs/dev/sql-manual/sql-functions/json-functions/json-length","docId":"sql-manual/sql-functions/json-functions/json-length"},{"type":"link","label":"GET_JSON_DOUBLE","href":"/docs/dev/sql-manual/sql-functions/json-functions/get-json-double","docId":"sql-manual/sql-functions/json-functions/get-json-double"},{"type":"link","label":"GET_JSON_INT","href":"/docs/dev/sql-manual/sql-functions/json-functions/get-json-int","docId":"sql-manual/sql-functions/json-functions/get-json-int"},{"type":"link","label":"GET_JSON_BIGINT","href":"/docs/dev/sql-manual/sql-functions/json-functions/get-json-bigint","docId":"sql-manual/sql-functions/json-functions/get-json-bigint"},{"type":"link","label":"GET_JSON_STRING","href":"/docs/dev/sql-manual/sql-functions/json-functions/get-json-string","docId":"sql-manual/sql-functions/json-functions/get-json-string"},{"type":"link","label":"JSON_INSERT","href":"/docs/dev/sql-manual/sql-functions/json-functions/json-insert","docId":"sql-manual/sql-functions/json-functions/json-insert"},{"type":"link","label":"JSON_REPLACE","href":"/docs/dev/sql-manual/sql-functions/json-functions/json-replace","docId":"sql-manual/sql-functions/json-functions/json-replace"},{"type":"link","label":"JSON_SET","href":"/docs/dev/sql-manual/sql-functions/json-functions/json-set","docId":"sql-manual/sql-functions/json-functions/json-set"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Hash Functions","items":[{"type":"link","label":"MURMUR_HASH3_32","href":"/docs/dev/sql-manual/sql-functions/hash-functions/murmur-hash3-32","docId":"sql-manual/sql-functions/hash-functions/murmur-hash3-32"},{"type":"link","label":"MURMUR_HASH3_64","href":"/docs/dev/sql-manual/sql-functions/hash-functions/murmur-hash3-64","docId":"sql-manual/sql-functions/hash-functions/murmur-hash3-64"}],"collapsed":true,"collapsible":true},{"type":"category","label":"HLL Functions","items":[{"type":"link","label":"HLL_CARDINALITY","href":"/docs/dev/sql-manual/sql-functions/hll-functions/hll-cardinality","docId":"sql-manual/sql-functions/hll-functions/hll-cardinality"},{"type":"link","label":"HLL_EMPTY","href":"/docs/dev/sql-manual/sql-functions/hll-functions/hll-empty","docId":"sql-manual/sql-functions/hll-functions/hll-empty"},{"type":"link","label":"HLL_HASH","href":"/docs/dev/sql-manual/sql-functions/hll-functions/hll-hash","docId":"sql-manual/sql-functions/hll-functions/hll-hash"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Numeric Functions","items":[{"type":"link","label":"CONV","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/conv","docId":"sql-manual/sql-functions/numeric-functions/conv"},{"type":"link","label":"BIN","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/bin","docId":"sql-manual/sql-functions/numeric-functions/bin"},{"type":"link","label":"SIN","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/sin","docId":"sql-manual/sql-functions/numeric-functions/sin"},{"type":"link","label":"COS","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/cos","docId":"sql-manual/sql-functions/numeric-functions/cos"},{"type":"link","label":"TAN","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/tan","docId":"sql-manual/sql-functions/numeric-functions/tan"},{"type":"link","label":"ASIN","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/asin","docId":"sql-manual/sql-functions/numeric-functions/asin"},{"type":"link","label":"ACOS","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/acos","docId":"sql-manual/sql-functions/numeric-functions/acos"},{"type":"link","label":"ATAN","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/atan","docId":"sql-manual/sql-functions/numeric-functions/atan"},{"type":"link","label":"E","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/e","docId":"sql-manual/sql-functions/numeric-functions/e"},{"type":"link","label":"PI","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/pi","docId":"sql-manual/sql-functions/numeric-functions/pi"},{"type":"link","label":"EXP","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/exp","docId":"sql-manual/sql-functions/numeric-functions/exp"},{"type":"link","label":"LOG","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/log","docId":"sql-manual/sql-functions/numeric-functions/log"},{"type":"link","label":"LOG2","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/log2","docId":"sql-manual/sql-functions/numeric-functions/log2"},{"type":"link","label":"LOG10","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/log10","docId":"sql-manual/sql-functions/numeric-functions/log10"},{"type":"link","label":"LN","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/ln","docId":"sql-manual/sql-functions/numeric-functions/ln"},{"type":"link","label":"CEIL","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/ceil","docId":"sql-manual/sql-functions/numeric-functions/ceil"},{"type":"link","label":"FLOOR","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/floor","docId":"sql-manual/sql-functions/numeric-functions/floor"},{"type":"link","label":"PMOD","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/pmod","docId":"sql-manual/sql-functions/numeric-functions/pmod"},{"type":"link","label":"ROUND","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/round","docId":"sql-manual/sql-functions/numeric-functions/round"},{"type":"link","label":"ROUND_BANKERS","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/round-bankers","docId":"sql-manual/sql-functions/numeric-functions/round-bankers"},{"type":"link","label":"TRUNCATE","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/truncate","docId":"sql-manual/sql-functions/numeric-functions/truncate"},{"type":"link","label":"ABS","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/abs","docId":"sql-manual/sql-functions/numeric-functions/abs"},{"type":"link","label":"SQRT","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/sqrt","docId":"sql-manual/sql-functions/numeric-functions/sqrt"},{"type":"link","label":"CBRT","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/cbrt","docId":"sql-manual/sql-functions/numeric-functions/cbrt"},{"type":"link","label":"POW","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/pow","docId":"sql-manual/sql-functions/numeric-functions/pow"},{"type":"link","label":"DEGREES","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/degrees","docId":"sql-manual/sql-functions/numeric-functions/degrees"},{"type":"link","label":"RADIANS","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/radians","docId":"sql-manual/sql-functions/numeric-functions/radians"},{"type":"link","label":"SIGN","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/sign","docId":"sql-manual/sql-functions/numeric-functions/sign"},{"type":"link","label":"POSITIVE","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/positive","docId":"sql-manual/sql-functions/numeric-functions/positive"},{"type":"link","label":"NEGATIVE","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/negative","docId":"sql-manual/sql-functions/numeric-functions/negative"},{"type":"link","label":"GREATEST","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/greatest","docId":"sql-manual/sql-functions/numeric-functions/greatest"},{"type":"link","label":"LEAST","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/least","docId":"sql-manual/sql-functions/numeric-functions/least"},{"type":"link","label":"RANDOM","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/random","docId":"sql-manual/sql-functions/numeric-functions/random"},{"type":"link","label":"MOD","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/mod","docId":"sql-manual/sql-functions/numeric-functions/mod"},{"type":"link","label":"RUNNING_DIFFERENCE","href":"/docs/dev/sql-manual/sql-functions/numeric-functions/running-difference","docId":"sql-manual/sql-functions/numeric-functions/running-difference"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Encryption Functions","items":[{"type":"link","label":"AES","href":"/docs/dev/sql-manual/sql-functions/encrypt-digest-functions/aes","docId":"sql-manual/sql-functions/encrypt-digest-functions/aes"},{"type":"link","label":"MD5","href":"/docs/dev/sql-manual/sql-functions/encrypt-digest-functions/md5","docId":"sql-manual/sql-functions/encrypt-digest-functions/md5"},{"type":"link","label":"MD5SUM","href":"/docs/dev/sql-manual/sql-functions/encrypt-digest-functions/md5sum","docId":"sql-manual/sql-functions/encrypt-digest-functions/md5sum"},{"type":"link","label":"SM4","href":"/docs/dev/sql-manual/sql-functions/encrypt-digest-functions/sm4","docId":"sql-manual/sql-functions/encrypt-digest-functions/sm4"},{"type":"link","label":"SM3","href":"/docs/dev/sql-manual/sql-functions/encrypt-digest-functions/sm3","docId":"sql-manual/sql-functions/encrypt-digest-functions/sm3"},{"type":"link","label":"SM3SUM","href":"/docs/dev/sql-manual/sql-functions/encrypt-digest-functions/sm3sum","docId":"sql-manual/sql-functions/encrypt-digest-functions/sm3sum"},{"type":"link","label":"SHA","href":"/docs/dev/sql-manual/sql-functions/encrypt-digest-functions/sha","docId":"sql-manual/sql-functions/encrypt-digest-functions/sha"},{"type":"link","label":"SHA2","href":"/docs/dev/sql-manual/sql-functions/encrypt-digest-functions/sha2","docId":"sql-manual/sql-functions/encrypt-digest-functions/sha2"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Table Functions","items":[{"type":"link","label":"EXPLODE_JSON_ARRAY","href":"/docs/dev/sql-manual/sql-functions/table-functions/explode-json-array","docId":"sql-manual/sql-functions/table-functions/explode-json-array"},{"type":"link","label":"EXPLODE","href":"/docs/dev/sql-manual/sql-functions/table-functions/explode","docId":"sql-manual/sql-functions/table-functions/explode"},{"type":"link","label":"EXPLODE_SPLIT","href":"/docs/dev/sql-manual/sql-functions/table-functions/explode-split","docId":"sql-manual/sql-functions/table-functions/explode-split"},{"type":"link","label":"EXPLODE_BITMAP","href":"/docs/dev/sql-manual/sql-functions/table-functions/explode-bitmap","docId":"sql-manual/sql-functions/table-functions/explode-bitmap"},{"type":"link","label":"NUMBERS","href":"/docs/dev/sql-manual/sql-functions/table-functions/numbers","docId":"sql-manual/sql-functions/table-functions/numbers"},{"type":"link","label":"EXPLODE_NUMBERS","href":"/docs/dev/sql-manual/sql-functions/table-functions/explode-numbers","docId":"sql-manual/sql-functions/table-functions/explode-numbers"},{"type":"link","label":"EXPLODE_NUMBERS_OUTER","href":"/docs/dev/sql-manual/sql-functions/table-functions/explode-numbers-outer","docId":"sql-manual/sql-functions/table-functions/explode-numbers-outer"},{"type":"link","label":"S3","href":"/docs/dev/sql-manual/sql-functions/table-functions/s3","docId":"sql-manual/sql-functions/table-functions/s3"},{"type":"link","label":"HDFS","href":"/docs/dev/sql-manual/sql-functions/table-functions/hdfs","docId":"sql-manual/sql-functions/table-functions/hdfs"},{"type":"link","label":"local","href":"/docs/dev/sql-manual/sql-functions/table-functions/local","docId":"sql-manual/sql-functions/table-functions/local"},{"type":"link","label":"ICEBERG_META","href":"/docs/dev/sql-manual/sql-functions/table-functions/iceberg-meta","docId":"sql-manual/sql-functions/table-functions/iceberg-meta"},{"type":"link","label":"BACKENDS","href":"/docs/dev/sql-manual/sql-functions/table-functions/backends","docId":"sql-manual/sql-functions/table-functions/backends"},{"type":"link","label":"FRONTENDS","href":"/docs/dev/sql-manual/sql-functions/table-functions/frontends","docId":"sql-manual/sql-functions/table-functions/frontends"},{"type":"link","label":"WORKLOAD_GROUPS","href":"/docs/dev/sql-manual/sql-functions/table-functions/workload-group","docId":"sql-manual/sql-functions/table-functions/workload-group"},{"type":"link","label":"CATALOGS","href":"/docs/dev/sql-manual/sql-functions/table-functions/catalogs","docId":"sql-manual/sql-functions/table-functions/catalogs"},{"type":"link","label":"frontends_disks","href":"/docs/dev/sql-manual/sql-functions/table-functions/frontends_disks","docId":"sql-manual/sql-functions/table-functions/frontends_disks"},{"type":"link","label":"QUERIES","href":"/docs/dev/sql-manual/sql-functions/table-functions/queries","docId":"sql-manual/sql-functions/table-functions/queries"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Analytic(Window) Functions","items":[{"type":"link","label":"Window Functions Overview","href":"/docs/dev/sql-manual/sql-functions/window-functions/window-function","docId":"sql-manual/sql-functions/window-functions/window-function"},{"type":"link","label":"WINDOW_FUNCTION_SUM","href":"/docs/dev/sql-manual/sql-functions/window-functions/window-function-sum","docId":"sql-manual/sql-functions/window-functions/window-function-sum"},{"type":"link","label":"WINDOW_FUNCTION_AVG","href":"/docs/dev/sql-manual/sql-functions/window-functions/window-function-avg","docId":"sql-manual/sql-functions/window-functions/window-function-avg"},{"type":"link","label":"WINDOW_FUNCTION_MAX","href":"/docs/dev/sql-manual/sql-functions/window-functions/window-function-max","docId":"sql-manual/sql-functions/window-functions/window-function-max"},{"type":"link","label":"WINDOW_FUNCTION_MIN","href":"/docs/dev/sql-manual/sql-functions/window-functions/window-function-min","docId":"sql-manual/sql-functions/window-functions/window-function-min"},{"type":"link","label":"WINDOW_FUNCTION_COUNT","href":"/docs/dev/sql-manual/sql-functions/window-functions/window-function-count","docId":"sql-manual/sql-functions/window-functions/window-function-count"},{"type":"link","label":"WINDOW_FUNCTION_RANK","href":"/docs/dev/sql-manual/sql-functions/window-functions/window-function-rank","docId":"sql-manual/sql-functions/window-functions/window-function-rank"},{"type":"link","label":"WINDOW_FUNCTION_DENSE_RANK","href":"/docs/dev/sql-manual/sql-functions/window-functions/window-function-dense-rank","docId":"sql-manual/sql-functions/window-functions/window-function-dense-rank"},{"type":"link","label":"WINDOW_FUNCTION_FIRST_VALUE","href":"/docs/dev/sql-manual/sql-functions/window-functions/window-function-first-value","docId":"sql-manual/sql-functions/window-functions/window-function-first-value"},{"type":"link","label":"WINDOW_FUNCTION_LAST_VALUE","href":"/docs/dev/sql-manual/sql-functions/window-functions/window-function-last-value","docId":"sql-manual/sql-functions/window-functions/window-function-last-value"},{"type":"link","label":"WINDOW_FUNCTION_LEAD","href":"/docs/dev/sql-manual/sql-functions/window-functions/window-function-lead","docId":"sql-manual/sql-functions/window-functions/window-function-lead"},{"type":"link","label":"WINDOW_FUNCTION_LAG","href":"/docs/dev/sql-manual/sql-functions/window-functions/window-function-lag","docId":"sql-manual/sql-functions/window-functions/window-function-lag"},{"type":"link","label":"WINDOW_FUNCTION_ROW_NUMBER","href":"/docs/dev/sql-manual/sql-functions/window-functions/window-function-row-number","docId":"sql-manual/sql-functions/window-functions/window-function-row-number"},{"type":"link","label":"WINDOW_FUNCTION_NTILE","href":"/docs/dev/sql-manual/sql-functions/window-functions/window-function-ntile","docId":"sql-manual/sql-functions/window-functions/window-function-ntile"},{"type":"link","label":"WINDOW_FUNCTION_WINDOW_FUNNEL","href":"/docs/dev/sql-manual/sql-functions/window-functions/window-function-window-funnel","docId":"sql-manual/sql-functions/window-functions/window-function-window-funnel"}],"collapsed":true,"collapsible":true},{"type":"category","label":"IP Functions","items":[{"type":"link","label":"IPV4_NUM_TO_STRING","href":"/docs/dev/sql-manual/sql-functions/ip-functions/ipv4-num-to-string","docId":"sql-manual/sql-functions/ip-functions/ipv4-num-to-string"},{"type":"link","label":"INET_NTOA","href":"/docs/dev/sql-manual/sql-functions/ip-functions/inet-ntoa","docId":"sql-manual/sql-functions/ip-functions/inet-ntoa"},{"type":"link","label":"IPV4_STRING_TO_NUM","href":"/docs/dev/sql-manual/sql-functions/ip-functions/ipv4-string-to-num","docId":"sql-manual/sql-functions/ip-functions/ipv4-string-to-num"},{"type":"link","label":"INET_ATON","href":"/docs/dev/sql-manual/sql-functions/ip-functions/inet-aton","docId":"sql-manual/sql-functions/ip-functions/inet-aton"},{"type":"link","label":"IPV4_STRING_TO_NUM_OR_DEFAULT","href":"/docs/dev/sql-manual/sql-functions/ip-functions/ipv4-string-to-num-or-default","docId":"sql-manual/sql-functions/ip-functions/ipv4-string-to-num-or-default"},{"type":"link","label":"IPV4_STRING_TO_NUM_OR_NULL","href":"/docs/dev/sql-manual/sql-functions/ip-functions/ipv4-string-to-num-or-null","docId":"sql-manual/sql-functions/ip-functions/ipv4-string-to-num-or-null"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Vector Distance Functions","items":[{"type":"link","label":"cosine_distance","href":"/docs/dev/sql-manual/sql-functions/distance-functions/cosine-distance","docId":"sql-manual/sql-functions/distance-functions/cosine-distance"},{"type":"link","label":"inner_product","href":"/docs/dev/sql-manual/sql-functions/distance-functions/inner-product","docId":"sql-manual/sql-functions/distance-functions/inner-product"},{"type":"link","label":"l1_distance","href":"/docs/dev/sql-manual/sql-functions/distance-functions/l1-distance","docId":"sql-manual/sql-functions/distance-functions/l1-distance"},{"type":"link","label":"l2_distance","href":"/docs/dev/sql-manual/sql-functions/distance-functions/l2-distance","docId":"sql-manual/sql-functions/distance-functions/l2-distance"}],"collapsed":true,"collapsible":true},{"type":"link","label":"CAST","href":"/docs/dev/sql-manual/sql-functions/cast","docId":"sql-manual/sql-functions/cast"},{"type":"link","label":"DIGITAL_MASKING","href":"/docs/dev/sql-manual/sql-functions/digital-masking","docId":"sql-manual/sql-functions/digital-masking"},{"type":"link","label":"WIDTH_BUCKET","href":"/docs/dev/sql-manual/sql-functions/width-bucket","docId":"sql-manual/sql-functions/width-bucket"}],"collapsed":true,"collapsible":true},{"type":"category","label":"SQL Reference","items":[{"type":"category","label":"Cluster management","items":[{"type":"link","label":"ALTER-SYSTEM-ADD-FOLLOWER","href":"/docs/dev/sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-ADD-FOLLOWER","docId":"sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-ADD-FOLLOWER"},{"type":"link","label":"ALTER-SYSTEM-ADD-OBSERVER","href":"/docs/dev/sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-ADD-OBSERVER","docId":"sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-ADD-OBSERVER"},{"type":"link","label":"ALTER-SYSTEM-ADD-BACKEND","href":"/docs/dev/sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-ADD-BACKEND","docId":"sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-ADD-BACKEND"},{"type":"link","label":"ALTER-SYSTEM-ADD-BROKER","href":"/docs/dev/sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-ADD-BROKER","docId":"sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-ADD-BROKER"},{"type":"link","label":"ALTER-SYSTEM-MODIFY-BACKEND","href":"/docs/dev/sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-MODIFY-BACKEND","docId":"sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-MODIFY-BACKEND"},{"type":"link","label":"ALTER-SYSTEM-DECOMMISSION-BACKEND","href":"/docs/dev/sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-DECOMMISSION-BACKEND","docId":"sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-DECOMMISSION-BACKEND"},{"type":"link","label":"ALTER-SYSTEM-DROP-FOLLOWER","href":"/docs/dev/sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-DROP-FOLLOWER","docId":"sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-DROP-FOLLOWER"},{"type":"link","label":"ALTER-SYSTEM-DROP-OBSERVER","href":"/docs/dev/sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-DROP-OBSERVER","docId":"sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-DROP-OBSERVER"},{"type":"link","label":"ALTER-SYSTEM-DROP-BACKEND","href":"/docs/dev/sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-DROP-BACKEND","docId":"sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-DROP-BACKEND"},{"type":"link","label":"ALTER-SYSTEM-DROP-BROKER","href":"/docs/dev/sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-DROP-BROKER","docId":"sql-manual/sql-reference/Cluster-Management-Statements/ALTER-SYSTEM-DROP-BROKER"},{"type":"link","label":"CANCEL-ALTER-SYSTEM","href":"/docs/dev/sql-manual/sql-reference/Cluster-Management-Statements/CANCEL-ALTER-SYSTEM","docId":"sql-manual/sql-reference/Cluster-Management-Statements/CANCEL-ALTER-SYSTEM"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Account Management","items":[{"type":"link","label":"CREATE-ROLE","href":"/docs/dev/sql-manual/sql-reference/Account-Management-Statements/CREATE-ROLE","docId":"sql-manual/sql-reference/Account-Management-Statements/CREATE-ROLE"},{"type":"link","label":"CREATE-USER","href":"/docs/dev/sql-manual/sql-reference/Account-Management-Statements/CREATE-USER","docId":"sql-manual/sql-reference/Account-Management-Statements/CREATE-USER"},{"type":"link","label":"ALTER-USER","href":"/docs/dev/sql-manual/sql-reference/Account-Management-Statements/ALTER-USER","docId":"sql-manual/sql-reference/Account-Management-Statements/ALTER-USER"},{"type":"link","label":"SET-PASSWORD","href":"/docs/dev/sql-manual/sql-reference/Account-Management-Statements/SET-PASSWORD","docId":"sql-manual/sql-reference/Account-Management-Statements/SET-PASSWORD"},{"type":"link","label":"SET-PROPERTY","href":"/docs/dev/sql-manual/sql-reference/Account-Management-Statements/SET-PROPERTY","docId":"sql-manual/sql-reference/Account-Management-Statements/SET-PROPERTY"},{"type":"link","label":"LDAP","href":"/docs/dev/sql-manual/sql-reference/Account-Management-Statements/LDAP","docId":"sql-manual/sql-reference/Account-Management-Statements/LDAP"},{"type":"link","label":"GRANT","href":"/docs/dev/sql-manual/sql-reference/Account-Management-Statements/GRANT","docId":"sql-manual/sql-reference/Account-Management-Statements/GRANT"},{"type":"link","label":"REVOKE","href":"/docs/dev/sql-manual/sql-reference/Account-Management-Statements/REVOKE","docId":"sql-manual/sql-reference/Account-Management-Statements/REVOKE"},{"type":"link","label":"DROP-ROLE","href":"/docs/dev/sql-manual/sql-reference/Account-Management-Statements/DROP-ROLE","docId":"sql-manual/sql-reference/Account-Management-Statements/DROP-ROLE"},{"type":"link","label":"DROP-USER","href":"/docs/dev/sql-manual/sql-reference/Account-Management-Statements/DROP-USER","docId":"sql-manual/sql-reference/Account-Management-Statements/DROP-USER"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Database Administration","items":[{"type":"link","label":"ADMIN-SHOW-CONFIG","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SHOW-CONFIG","docId":"sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SHOW-CONFIG"},{"type":"link","label":"ADMIN-SET-CONFIG","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SET-CONFIG","docId":"sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SET-CONFIG"},{"type":"link","label":"SET-VARIABLE","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/SET-VARIABLE","docId":"sql-manual/sql-reference/Database-Administration-Statements/SET-VARIABLE"},{"type":"link","label":"INSTALL-PLUGIN","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/INSTALL-PLUGIN","docId":"sql-manual/sql-reference/Database-Administration-Statements/INSTALL-PLUGIN"},{"type":"link","label":"UNINSTALL-PLUGIN","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/UNINSTALL-PLUGIN","docId":"sql-manual/sql-reference/Database-Administration-Statements/UNINSTALL-PLUGIN"},{"type":"link","label":"ADMIN-SET-REPLICA-STATUS","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SET-REPLICA-STATUS","docId":"sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SET-REPLICA-STATUS"},{"type":"link","label":"ADMIN-SET-REPLICA-VERSION","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SET-REPLICA-VERSION","docId":"sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SET-REPLICA-VERSION"},{"type":"link","label":"ADMIN-SET-PARTITION-VERSION","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SET-PARTITION-VERSION","docId":"sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SET-PARTITION-VERSION"},{"type":"link","label":"ADMIN-SET-TABLE-STATUS","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SET-TABLE-STATUS","docId":"sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SET-TABLE-STATUS"},{"type":"link","label":"ADMIN-SHOW-REPLICA-DISTRIBUTION","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SHOW-REPLICA-DISTRIBUTION","docId":"sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SHOW-REPLICA-DISTRIBUTION"},{"type":"link","label":"ADMIN-SHOW-REPLICA-STATUS","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SHOW-REPLICA-STATUS","docId":"sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SHOW-REPLICA-STATUS"},{"type":"link","label":"ADMIN-REPAIR-TABLE","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-REPAIR-TABLE","docId":"sql-manual/sql-reference/Database-Administration-Statements/ADMIN-REPAIR-TABLE"},{"type":"link","label":"ADMIN-CANCEL-REPAIR","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-CANCEL-REPAIR","docId":"sql-manual/sql-reference/Database-Administration-Statements/ADMIN-CANCEL-REPAIR"},{"type":"link","label":"ADMIN-CHECK-TABLET","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-CHECK-TABLET","docId":"sql-manual/sql-reference/Database-Administration-Statements/ADMIN-CHECK-TABLET"},{"type":"link","label":"ADMIN DIAGNOSE TABLET","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-DIAGNOSE-TABLET","docId":"sql-manual/sql-reference/Database-Administration-Statements/ADMIN-DIAGNOSE-TABLET"},{"type":"link","label":"ADMIN-COPY-TABLET","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-COPY-TABLET","docId":"sql-manual/sql-reference/Database-Administration-Statements/ADMIN-COPY-TABLET"},{"type":"link","label":"ADMIN SHOW TABLET STORAGE FORMAT","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SHOW-TABLET-STORAGE-FORMAT","docId":"sql-manual/sql-reference/Database-Administration-Statements/ADMIN-SHOW-TABLET-STORAGE-FORMAT"},{"type":"link","label":"ADMIN-CLEAN-TRASH","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-CLEAN-TRASH","docId":"sql-manual/sql-reference/Database-Administration-Statements/ADMIN-CLEAN-TRASH"},{"type":"link","label":"RECOVER","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/RECOVER","docId":"sql-manual/sql-reference/Database-Administration-Statements/RECOVER"},{"type":"link","label":"KILL","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/KILL","docId":"sql-manual/sql-reference/Database-Administration-Statements/KILL"},{"type":"link","label":"ADMIN-REBALANCE-DISK","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-REBALANCE-DISK","docId":"sql-manual/sql-reference/Database-Administration-Statements/ADMIN-REBALANCE-DISK"},{"type":"link","label":"ADMIN-CANCEL-REBALANCE-DISK","href":"/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-CANCEL-REBALANCE-DISK","docId":"sql-manual/sql-reference/Database-Administration-Statements/ADMIN-CANCEL-REBALANCE-DISK"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Data Types","items":[{"type":"link","label":"BOOLEAN","href":"/docs/dev/sql-manual/sql-reference/Data-Types/BOOLEAN","docId":"sql-manual/sql-reference/Data-Types/BOOLEAN"},{"type":"link","label":"TINYINT","href":"/docs/dev/sql-manual/sql-reference/Data-Types/TINYINT","docId":"sql-manual/sql-reference/Data-Types/TINYINT"},{"type":"link","label":"SMALLINT","href":"/docs/dev/sql-manual/sql-reference/Data-Types/SMALLINT","docId":"sql-manual/sql-reference/Data-Types/SMALLINT"},{"type":"link","label":"INT","href":"/docs/dev/sql-manual/sql-reference/Data-Types/INT","docId":"sql-manual/sql-reference/Data-Types/INT"},{"type":"link","label":"BIGINT","href":"/docs/dev/sql-manual/sql-reference/Data-Types/BIGINT","docId":"sql-manual/sql-reference/Data-Types/BIGINT"},{"type":"link","label":"LARGEINT","href":"/docs/dev/sql-manual/sql-reference/Data-Types/LARGEINT","docId":"sql-manual/sql-reference/Data-Types/LARGEINT"},{"type":"link","label":"FLOAT","href":"/docs/dev/sql-manual/sql-reference/Data-Types/FLOAT","docId":"sql-manual/sql-reference/Data-Types/FLOAT"},{"type":"link","label":"DOUBLE","href":"/docs/dev/sql-manual/sql-reference/Data-Types/DOUBLE","docId":"sql-manual/sql-reference/Data-Types/DOUBLE"},{"type":"link","label":"DECIMAL","href":"/docs/dev/sql-manual/sql-reference/Data-Types/DECIMAL","docId":"sql-manual/sql-reference/Data-Types/DECIMAL"},{"type":"link","label":"DATE","href":"/docs/dev/sql-manual/sql-reference/Data-Types/DATE","docId":"sq