| |
| <!doctype html> |
| <html lang="en" class="no-js"> |
| <head> |
| |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width,initial-scale=1"> |
| |
| <meta name="description" content="Java Driver for Apache Cassandra® Documentation"> |
| |
| |
| |
| <link rel="canonical" href="https://apache.github.io/cassandra-java-driver/core/performance/"> |
| |
| |
| <link rel="prev" href="../tracing/"> |
| |
| |
| <link rel="next" href="../metadata/"> |
| |
| |
| <link rel="icon" href="../../assets/images/favicon.png"> |
| <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.17"> |
| |
| |
| |
| <title>Performance - Java Driver for Apache Cassandra</title> |
| |
| |
| |
| <link rel="stylesheet" href="../../assets/stylesheets/main.7e37652d.min.css"> |
| |
| |
| <link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
| <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> |
| <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> |
| |
| |
| |
| <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> |
| |
| |
| |
| |
| |
| |
| </head> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="blue" data-md-color-accent="blue"> |
| |
| |
| <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> |
| <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> |
| <label class="md-overlay" for="__drawer"></label> |
| <div data-md-component="skip"> |
| |
| |
| <a href="#performance" class="md-skip"> |
| Skip to content |
| </a> |
| |
| </div> |
| <div data-md-component="announce"> |
| |
| </div> |
| |
| |
| |
| |
| <header class="md-header" data-md-component="header"> |
| <nav class="md-header__inner md-grid" aria-label="Header"> |
| <a href="../.." title="Java Driver for Apache Cassandra" class="md-header__button md-logo" aria-label="Java Driver for Apache Cassandra" data-md-component="logo"> |
| |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> |
| |
| </a> |
| <label class="md-header__button md-icon" for="__drawer"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> |
| </label> |
| <div class="md-header__title" data-md-component="header-title"> |
| <div class="md-header__ellipsis"> |
| <div class="md-header__topic"> |
| <span class="md-ellipsis"> |
| Java Driver for Apache Cassandra |
| </span> |
| </div> |
| <div class="md-header__topic" data-md-component="header-topic"> |
| <span class="md-ellipsis"> |
| |
| Performance |
| |
| </span> |
| </div> |
| </div> |
| </div> |
| |
| |
| <form class="md-header__option" data-md-component="palette"> |
| |
| |
| |
| |
| <input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="blue" data-md-color-accent="blue" aria-hidden="true" type="radio" name="__palette" id="__palette_0"> |
| |
| |
| </form> |
| |
| |
| |
| <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> |
| |
| |
| |
| |
| |
| <label class="md-header__button md-icon" for="__search"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> |
| </label> |
| <div class="md-search" data-md-component="search" role="dialog"> |
| <label class="md-search__overlay" for="__search"></label> |
| <div class="md-search__inner" role="search"> |
| <form class="md-search__form" name="search"> |
| <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> |
| <label class="md-search__icon md-icon" for="__search"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> |
| </label> |
| <nav class="md-search__options" aria-label="Search"> |
| |
| <a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg> |
| </a> |
| |
| <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> |
| </button> |
| </nav> |
| |
| </form> |
| <div class="md-search__output"> |
| <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix> |
| <div class="md-search-result" data-md-component="search-result"> |
| <div class="md-search-result__meta"> |
| Initializing search |
| </div> |
| <ol class="md-search-result__list" role="presentation"></ol> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| <div class="md-header__source"> |
| <a href="https://github.com/apache/cassandra-java-driver" title="Go to repository" class="md-source" data-md-component="source"> |
| <div class="md-source__icon md-icon"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg> |
| </div> |
| <div class="md-source__repository"> |
| apache/cassandra-java-driver |
| </div> |
| </a> |
| </div> |
| |
| </nav> |
| |
| </header> |
| |
| <div class="md-container" data-md-component="container"> |
| |
| |
| |
| |
| |
| <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs"> |
| <div class="md-grid"> |
| <ul class="md-tabs__list"> |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../../HOME-README/" class="md-tabs__link"> |
| |
| |
| |
| |
| |
| Home |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item md-tabs__item--active"> |
| <a href="../.." class="md-tabs__link"> |
| |
| |
| |
| Manual |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../../api/" class="md-tabs__link"> |
| |
| |
| |
| |
| |
| API References |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../../faq-README/" class="md-tabs__link"> |
| |
| |
| |
| |
| |
| FAQ |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../../changelog-README/" class="md-tabs__link"> |
| |
| |
| |
| |
| |
| Changelog |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../../upgrade-README/" class="md-tabs__link"> |
| |
| |
| |
| |
| |
| Upgrade Guide |
| |
| </a> |
| </li> |
| |
| |
| |
| </ul> |
| </div> |
| </nav> |
| |
| |
| |
| <main class="md-main" data-md-component="main"> |
| <div class="md-main__inner md-grid"> |
| |
| |
| |
| <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > |
| <div class="md-sidebar__scrollwrap"> |
| <div class="md-sidebar__inner"> |
| |
| |
| |
| |
| |
| |
| <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0"> |
| <label class="md-nav__title" for="__drawer"> |
| <a href="../.." title="Java Driver for Apache Cassandra" class="md-nav__button md-logo" aria-label="Java Driver for Apache Cassandra" data-md-component="logo"> |
| |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> |
| |
| </a> |
| Java Driver for Apache Cassandra |
| </label> |
| |
| <div class="md-nav__source"> |
| <a href="https://github.com/apache/cassandra-java-driver" title="Go to repository" class="md-source" data-md-component="source"> |
| <div class="md-source__icon md-icon"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg> |
| </div> |
| <div class="md-source__repository"> |
| apache/cassandra-java-driver |
| </div> |
| </a> |
| </div> |
| |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../HOME-README/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Home |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked> |
| |
| |
| <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex=""> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Manual |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true"> |
| <label class="md-nav__title" for="__nav_2"> |
| <span class="md-nav__icon md-icon"></span> |
| Manual |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../.." class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../api_conventions/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| API Conventions |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../case_sensitivity/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Case Sensitivity |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../cloud/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Cloud |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5" checked> |
| |
| |
| <label class="md-nav__link" for="__nav_2_5" id="__nav_2_5_label" tabindex=""> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Core |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_5_label" aria-expanded="true"> |
| <label class="md-nav__title" for="__nav_2_5"> |
| <span class="md-nav__icon md-icon"></span> |
| Core |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../integration/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Integration |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../configuration/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Configuration |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../authentication/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Authentication |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../ssl/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| SSL |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../load_balancing/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Load Balancing |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../pooling/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Pooling |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reconnection/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Reconnection |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../retries/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Retries |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../speculative_execution/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Speculative Execution |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../metrics/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Metrics |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../logging/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Logging |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5_13" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_5_13" id="__nav_2_5_13_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Statements |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_5_13_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_5_13"> |
| <span class="md-nav__icon md-icon"></span> |
| Statements |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../statements/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../statements/batch/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Batch |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../statements/per_query_keyspace/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Per Query Keyspace |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../statements/prepared/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Prepared |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../statements/simple/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Simple |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../paging/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Paging |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../async/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Async Programming |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reactive/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Reactive Streams |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../custom_codecs/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Custom Codecs |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../temporal_types/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Temporal Types |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../tuples/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Tuples |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../udts/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| UDTs |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../compression/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Compression |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../address_resolution/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Address Resolution |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../request_tracker/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Request Tracker |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../throttling/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Throttling |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../tracing/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Tracing |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--active"> |
| |
| <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc"> |
| |
| |
| |
| <label class="md-nav__link md-nav__link--active" for="__toc"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Performance |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <a href="./" class="md-nav__link md-nav__link--active"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Performance |
| |
| </span> |
| |
| |
| </a> |
| |
| |
| |
| <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> |
| |
| |
| |
| |
| <label class="md-nav__title" for="__toc"> |
| <span class="md-nav__icon md-icon"></span> |
| Table of contents |
| </label> |
| <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> |
| |
| <li class="md-nav__item"> |
| <a href="#performance" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Performance |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Performance"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#statements" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Statements |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Statements"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#immutability-and-builders" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Immutability and builders |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#prepared-statements" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Prepared statements |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#request-execution" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Request execution |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Request execution"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#connection-pooling" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Connection pooling |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#compression" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Compression |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#timestamp-generation" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Timestamp generation |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#tracing" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Tracing |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#request-trackers" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Request trackers |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#metrics" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Metrics |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#throttling" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Throttling |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#caching-reusable-objects" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Caching reusable objects |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Caching reusable objects"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#identifiers" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Identifiers |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#type-tokens" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Type tokens |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#built-queries" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Built queries |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#derived-configuration-profiles" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Derived configuration profiles |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#metadata" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Metadata |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Metadata"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#filtering" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Filtering |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#debouncing" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Debouncing |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#schema-updates" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Schema updates |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#thread-pooling" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Thread pooling |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| </ul> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5_27" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_5_27" id="__nav_2_5_27_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Metadata |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_5_27_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_5_27"> |
| <span class="md-nav__icon md-icon"></span> |
| Metadata |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../metadata/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../metadata/node/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Node |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../metadata/schema/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Schema |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../metadata/token/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Token |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../control_connection/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Control Connection |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../native_protocol/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Native Protocol |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../non_blocking/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Non-blocking |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../query_timestamps/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Query Timestamps |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../idempotence/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Idempotence |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../detachable_types/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Detachable Types |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5_34" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_5_34" id="__nav_2_5_34_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| DSE |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_5_34_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_5_34"> |
| <span class="md-nav__icon md-icon"></span> |
| DSE |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../dse/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../dse/geotypes/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Geotypes |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5_34_3" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_5_34_3" id="__nav_2_5_34_3_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Graph |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_5_34_3_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_5_34_3"> |
| <span class="md-nav__icon md-icon"></span> |
| Graph |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../dse/graph/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5_34_3_2" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_5_34_3_2" id="__nav_2_5_34_3_2_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Fluent |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="5" aria-labelledby="__nav_2_5_34_3_2_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_5_34_3_2"> |
| <span class="md-nav__icon md-icon"></span> |
| Fluent |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../dse/graph/fluent/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../dse/graph/fluent/explicit/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Explicit |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../dse/graph/fluent/implicit/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Implicit |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../dse/graph/options/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Options |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../dse/graph/results/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Results |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../dse/graph/script/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Script |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../graalvm/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| GraalVM |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../shaded_jar/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Shaded JAR |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../bom/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| BOM |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--section md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_6" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_6" id="__nav_2_6_label" tabindex=""> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Query Builder |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_6_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_6"> |
| <span class="md-nav__icon md-icon"></span> |
| Query Builder |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/select/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Select |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/insert/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Insert |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/update/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Update |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/delete/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Delete |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_6_6" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_6_6" id="__nav_2_6_6_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Schema |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_6_6_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_6_6"> |
| <span class="md-nav__icon md-icon"></span> |
| Schema |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/schema/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/schema/aggregate/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Aggregate |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/schema/function/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Function |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/schema/index/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Index |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/schema/keyspace/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Keyspace |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/schema/materialized_view/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Materialized View |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/schema/table/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Table |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/schema/type/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Type |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/truncate/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Truncate |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/condition/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Condition |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/relation/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Relation |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/term/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Term |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../query_builder/idempotence/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Idempotence |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--section md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_7" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_7" id="__nav_2_7_label" tabindex=""> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Mapper |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_7_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_7"> |
| <span class="md-nav__icon md-icon"></span> |
| Mapper |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/entities/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Entities |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_7_3" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_7_3" id="__nav_2_7_3_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| DAOs |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_7_3_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_7_3"> |
| <span class="md-nav__icon md-icon"></span> |
| DAOs |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/custom_types/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Custom Types |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/delete/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Delete |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/getentity/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Get Entity |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/increment/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Increment |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/insert/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Insert |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/null_saving/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Null Saving |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/query/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Query |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/queryprovider/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Query Provider |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/select/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Select |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/setentity/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Set Entity |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/statement_attributes/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Statement Attributes |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/daos/update/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Update |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/mapper/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Mapper |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_7_5" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_7_5" id="__nav_2_7_5_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Configuration |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_7_5_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_7_5"> |
| <span class="md-nav__icon md-icon"></span> |
| Configuration |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/config/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/config/kotlin/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Kotlin |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/config/lombok/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Lombok |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/config/record/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Record |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../mapper/config/scala/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Scala |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--section md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_8" id="__nav_2_8_label" tabindex=""> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Developer |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_8_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_8"> |
| <span class="md-nav__icon md-icon"></span> |
| Developer |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../developer/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_2" > |
| |
| |
| <label class="md-nav__link" for="__nav_2_8_2" id="__nav_2_8_2_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Common |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_2_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_2_8_2"> |
| <span class="md-nav__icon md-icon"></span> |
| Common |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../developer/common/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Overview |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../developer/common/concurrency/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Concurrency |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../developer/common/context/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Context |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../developer/common/event_bus/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Event Bus |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../developer/native_protocol/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Native Protocol |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../developer/netty_pipeline/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Netty Pipeline |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../developer/request_execution/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Request Execution |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../developer/admin/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Admin |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../osgi/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| OSGi |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../api/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| API References |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../faq-README/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| FAQ |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../changelog-README/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Changelog |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../../upgrade-README/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Upgrade Guide |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| </ul> |
| </nav> |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > |
| <div class="md-sidebar__scrollwrap"> |
| <div class="md-sidebar__inner"> |
| |
| |
| <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> |
| |
| |
| |
| |
| <label class="md-nav__title" for="__toc"> |
| <span class="md-nav__icon md-icon"></span> |
| Table of contents |
| </label> |
| <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> |
| |
| <li class="md-nav__item"> |
| <a href="#performance" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Performance |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Performance"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#statements" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Statements |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Statements"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#immutability-and-builders" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Immutability and builders |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#prepared-statements" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Prepared statements |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#request-execution" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Request execution |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Request execution"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#connection-pooling" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Connection pooling |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#compression" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Compression |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#timestamp-generation" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Timestamp generation |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#tracing" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Tracing |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#request-trackers" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Request trackers |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#metrics" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Metrics |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#throttling" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Throttling |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#caching-reusable-objects" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Caching reusable objects |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Caching reusable objects"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#identifiers" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Identifiers |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#type-tokens" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Type tokens |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#built-queries" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Built queries |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#derived-configuration-profiles" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Derived configuration profiles |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#metadata" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Metadata |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Metadata"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#filtering" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Filtering |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#debouncing" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Debouncing |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#schema-updates" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Schema updates |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#thread-pooling" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Thread pooling |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| </ul> |
| |
| </nav> |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| <div class="md-content" data-md-component="content"> |
| <article class="md-content__inner md-typeset"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <h1>Performance</h1> |
| |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| |
| <h2 id="performance">Performance<a class="headerlink" href="#performance" title="Permanent link">¶</a></h2> |
| <p>This page is intended as a checklist for everything related to driver performance. Most of the |
| information is already available in other sections of the manual, but it's linked here for |
| easy reference if you're benchmarking your application or diagnosing performance issues.</p> |
| <h3 id="statements">Statements<a class="headerlink" href="#statements" title="Permanent link">¶</a></h3> |
| <p><a href="../statements/">Statements</a> are some of the driver types you'll use the most. Every request needs |
| one -- even <code>session.execute(String)</code> creates a <code>SimpleStatement</code> under the hood.</p> |
| <h4 id="immutability-and-builders">Immutability and builders<a class="headerlink" href="#immutability-and-builders" title="Permanent link">¶</a></h4> |
| <p>Statements are by default implemented with immutable classes: every call to a setter method creates |
| an intermediary copy. If you have multiple attributes to set, use a builder instead:</p> |
| <div class="highlight"><pre><span></span><code><span class="n">SimpleStatement</span><span class="w"> </span><span class="n">statement</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SimpleStatement</span><span class="p">.</span><span class="na">builder</span><span class="p">(</span><span class="s">"SELECT * FROM foo"</span><span class="p">)</span> |
| <span class="w"> </span><span class="p">.</span><span class="na">setPageSize</span><span class="p">(</span><span class="mi">20</span><span class="p">)</span> |
| <span class="w"> </span><span class="p">.</span><span class="na">setConsistencyLevel</span><span class="p">(</span><span class="n">DefaultConsistencyLevel</span><span class="p">.</span><span class="na">QUORUM</span><span class="p">)</span> |
| <span class="w"> </span><span class="p">.</span><span class="na">setIdempotence</span><span class="p">(</span><span class="kc">true</span><span class="p">)</span> |
| <span class="w"> </span><span class="p">.</span><span class="na">build</span><span class="p">();</span> |
| </code></pre></div> |
| <p>Also, note that you don't need a driver <code>Session</code> to create simple statements: they can be |
| initialized statically and stored as constants.</p> |
| <h4 id="prepared-statements">Prepared statements<a class="headerlink" href="#prepared-statements" title="Permanent link">¶</a></h4> |
| <p><a href="../statements/prepared">Prepared statements</a> allow Cassandra to cache parsed query strings |
| server-side, but that's not their only benefit for performance:</p> |
| <ul> |
| <li>the driver also caches the response metadata, which can then be skipped in subsequent responses. |
| This saves bandwidth, as well as the CPU and memory resources required to parse it.</li> |
| <li>in some cases, prepared statements set routing information automatically, which allows the driver |
| to target the most appropriate replicas.</li> |
| </ul> |
| <p>You should use prepared statements for all recurring requests in your application. Simple statements |
| should only be used for one-off queries, for example some initialization that will be done only once |
| at startup.</p> |
| <p>The driver caches prepared statements -- see <a href="https://docs.datastax.com/en/drivers/java/4.17/com/datastax/oss/driver/api/core/CqlSession.html#prepare-com.datastax.oss.driver.api.core.cql.SimpleStatement-">CqlSession.prepare(SimpleStatement)</a> for the fine |
| print. However, if the query is static, it's still a good practice to cache your <code>PreparedStatement</code> |
| instances to avoid calling <code>prepare()</code> every time. One common pattern is to use some sort of DAO |
| component:</p> |
| <div class="highlight"><pre><span></span><code><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">class</span> <span class="nc">UserDao</span><span class="w"> </span><span class="p">{</span> |
| |
| <span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">CqlSession</span><span class="w"> </span><span class="n">session</span><span class="p">;</span> |
| <span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">PreparedStatement</span><span class="w"> </span><span class="n">preparedFindById</span><span class="p">;</span> |
| |
| <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">UserDao</span><span class="p">(</span><span class="n">CqlSession</span><span class="w"> </span><span class="n">session</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">session</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">session</span><span class="p">;</span> |
| <span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">preparedFindById</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">session</span><span class="p">.</span><span class="na">prepare</span><span class="p">(</span><span class="s">"SELECT * FROM user WHERE id = ?"</span><span class="p">);</span> |
| <span class="w"> </span><span class="p">}</span> |
| |
| <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">User</span><span class="w"> </span><span class="nf">findById</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">id</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="n">Row</span><span class="w"> </span><span class="n">row</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">session</span><span class="p">.</span><span class="na">execute</span><span class="p">(</span><span class="n">preparedFindById</span><span class="p">.</span><span class="na">bind</span><span class="p">(</span><span class="n">id</span><span class="p">)).</span><span class="na">one</span><span class="p">();</span> |
| <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">User</span><span class="p">(</span><span class="n">row</span><span class="p">.</span><span class="na">getInt</span><span class="p">(</span><span class="n">id</span><span class="p">),</span><span class="w"> </span><span class="n">row</span><span class="p">.</span><span class="na">getString</span><span class="p">(</span><span class="s">"first_name"</span><span class="p">),</span><span class="w"> </span><span class="n">row</span><span class="p">.</span><span class="na">getString</span><span class="p">(</span><span class="s">"last_name"</span><span class="p">));</span> |
| <span class="w"> </span><span class="p">}</span> |
| <span class="p">}</span> |
| </code></pre></div> |
| <h3 id="request-execution">Request execution<a class="headerlink" href="#request-execution" title="Permanent link">¶</a></h3> |
| <h4 id="connection-pooling">Connection pooling<a class="headerlink" href="#connection-pooling" title="Permanent link">¶</a></h4> |
| <p>By default, the driver opens 1 connection per node, and allows 1024 concurrent requests on each |
| connection. In our experience this is enough for most scenarios. </p> |
| <p>If your application generates a very high throughput (hundreds of thousands of requests per second), |
| you might want to experiment with different settings. See the <a href="../pooling/#tuning">tuning</a> section |
| in the connection pooling page.</p> |
| <h4 id="compression">Compression<a class="headerlink" href="#compression" title="Permanent link">¶</a></h4> |
| <p>Consider <a href="../compression/">compression</a> if your queries return large payloads; it might help to |
| reduce network traffic.</p> |
| <h4 id="timestamp-generation">Timestamp generation<a class="headerlink" href="#timestamp-generation" title="Permanent link">¶</a></h4> |
| <p>Each query is assigned a <a href="../query_timestamps/">timestamp</a> to order them relative to each other.</p> |
| <p>By default, this is done driver-side with |
| <a href="../query_timestamps/#atomic-timestamp-generator">AtomicTimestampGenerator</a>. This is a very simple |
| operation so unlikely to be a bottleneck, but note that there are other options, such as a |
| <a href="../query_timestamps/#thread-local-timestamp-generator">thread-local</a> variant that creates slightly |
| less contention, writing your own implementation or letting the server assign timestamps.</p> |
| <h4 id="tracing">Tracing<a class="headerlink" href="#tracing" title="Permanent link">¶</a></h4> |
| <p><a href="../tracing/">Tracing</a> should be used for only a small percentage of your queries. It consumes |
| additional resources on the server, and fetching each trace requires background requests.</p> |
| <p>Do not enable tracing for every request; it's a sure way to bring your performance down.</p> |
| <h4 id="request-trackers">Request trackers<a class="headerlink" href="#request-trackers" title="Permanent link">¶</a></h4> |
| <p><a href="../request_tracker/">Request trackers</a> are on the hot path (that is, invoked on I/O threads, each |
| time a request is executed), and users can plug custom implementations.</p> |
| <p>If you experience throughput issues, check if any trackers are configured, and what they are doing. |
| They should avoid blocking calls, as well as any CPU-intensive computations.</p> |
| <h4 id="metrics">Metrics<a class="headerlink" href="#metrics" title="Permanent link">¶</a></h4> |
| <p>Similarly, some of the driver's <a href="../metrics/">metrics</a> are updated for every request (if the metric |
| is enabled).</p> |
| <p>By default, the driver ships with all metrics disabled. Enable them conservatively, and if you're |
| investigating a performance issue, try disabling them temporarily to check that they are not the |
| cause.</p> |
| <h4 id="throttling">Throttling<a class="headerlink" href="#throttling" title="Permanent link">¶</a></h4> |
| <p><a href="../throttling/">Throttling</a> can help establish more predictable server performance, by controlling |
| how much load each driver instance is allowed to put on the cluster. The throttling algorithm itself |
| incurs a bit of overhead in the driver, but that shouldn't be a problem since the goal is to stay |
| under reasonable rates in the first place.</p> |
| <p>If you're debugging an unfamiliar application and experience a throughput plateau, make sure that |
| it's not caused by a throttler.</p> |
| <h3 id="caching-reusable-objects">Caching reusable objects<a class="headerlink" href="#caching-reusable-objects" title="Permanent link">¶</a></h3> |
| <p>Many driver objects are immutable. If you reuse the same values often, consider caching them in |
| private fields or constants to alleviate GC pressure.</p> |
| <h4 id="identifiers">Identifiers<a class="headerlink" href="#identifiers" title="Permanent link">¶</a></h4> |
| <p>The driver uses <a href="https://docs.datastax.com/en/drivers/java/4.17/com/datastax/oss/driver/api/core/CqlIdentifier.html">CqlIdentifier</a> to deal with <a href="../../case_sensitivity">case sensitivity</a>. When you |
| call methods that take raw strings, the driver generally wraps them under the hood:</p> |
| <div class="highlight"><pre><span></span><code><span class="n">session</span><span class="p">.</span><span class="na">getMetadata</span><span class="p">().</span><span class="na">getKeyspace</span><span class="p">(</span><span class="s">"inventory"</span><span class="p">);</span><span class="w"> </span><span class="c1">// shortcut for getKeyspace(CqlIdentifier.fromCql("inventory")</span> |
| |
| <span class="c1">// Caching the identifier:</span> |
| <span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">INVENTORY_ID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"inventory"</span><span class="p">;</span> |
| |
| <span class="n">session</span><span class="p">.</span><span class="na">getMetadata</span><span class="p">().</span><span class="na">getKeyspace</span><span class="p">(</span><span class="n">INVENTORY_ID</span><span class="p">);</span> |
| </code></pre></div> |
| <p>This also applies to built queries, although it's less important because generally the whole query |
| can be cached (see below).</p> |
| <p>Note however that row getters and bound statement setters do <strong>not</strong> wrap their argument: because |
| those methods are used very often, they handle raw strings with an optimized algorithm that does not |
| require creating an identifier (the rules are detailed <a href="https://docs.datastax.com/en/drivers/java/4.17/com/datastax/oss/driver/api/core/data/AccessibleByName.html">here</a>).</p> |
| <div class="highlight"><pre><span></span><code><span class="c1">// No need to extract a CqlIdentifier, raw strings are handled efficiently:</span> |
| <span class="n">Row</span><span class="w"> </span><span class="n">row</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">session</span><span class="p">.</span><span class="na">execute</span><span class="p">(</span><span class="s">"SELECT * FROM user WHERE id = 1"</span><span class="p">).</span><span class="na">one</span><span class="p">();</span> |
| <span class="n">row</span><span class="p">.</span><span class="na">getInt</span><span class="p">(</span><span class="s">"age"</span><span class="p">);</span> |
| |
| <span class="n">PreparedStatement</span><span class="w"> </span><span class="n">pst</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">session</span><span class="p">.</span><span class="na">prepare</span><span class="p">(</span><span class="s">"UPDATE user SET name=:name WHERE id=:id"</span><span class="p">);</span> |
| <span class="n">pst</span><span class="p">.</span><span class="na">bind</span><span class="p">().</span><span class="na">setInt</span><span class="p">(</span><span class="s">"age"</span><span class="p">,</span><span class="w"> </span><span class="mi">25</span><span class="p">);</span> |
| </code></pre></div> |
| <h4 id="type-tokens">Type tokens<a class="headerlink" href="#type-tokens" title="Permanent link">¶</a></h4> |
| <p><a href="https://docs.datastax.com/en/drivers/java/4.17/com/datastax/oss/driver/api/core/type/reflect/GenericType.html">GenericType</a> is used to express complex generic types -- such as |
| <a href="../#collection-types">nested collections</a> -- in getters and setters. These objects are immutable |
| and stateless, so they are good candidates for constants:</p> |
| <div class="highlight"><pre><span></span><code><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">GenericType</span><span class="o"><</span><span class="n">Set</span><span class="o"><</span><span class="n">List</span><span class="o"><</span><span class="n">String</span><span class="o">>>></span><span class="w"> </span><span class="n">SET_OF_LIST_OF_STRING</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">GenericType</span><span class="o"><</span><span class="n">Set</span><span class="o"><</span><span class="n">List</span><span class="o"><</span><span class="n">String</span><span class="o">>>></span><span class="p">()</span><span class="w"> </span><span class="p">{};</span> |
| |
| <span class="n">Set</span><span class="o"><</span><span class="n">List</span><span class="o"><</span><span class="n">String</span><span class="o">>></span><span class="w"> </span><span class="n">teams</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">row</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="s">"teams"</span><span class="p">,</span><span class="w"> </span><span class="n">SET_OF_LIST_OF_STRING</span><span class="p">);</span> |
| </code></pre></div> |
| <p><code>GenericType</code> itself already exposes a few of those constants. You can create your own utility class |
| to store yours.</p> |
| <h4 id="built-queries">Built queries<a class="headerlink" href="#built-queries" title="Permanent link">¶</a></h4> |
| <p>Similarly, <a href="../../query_builder/">built queries</a> are immutable and don't need a reference to a live |
| driver instance. If you create them statically, they can be stored as constants:</p> |
| <div class="highlight"><pre><span></span><code><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">BuildableQuery</span><span class="w"> </span><span class="n">SELECT_SERVER_VERSION</span><span class="w"> </span><span class="o">=</span> |
| <span class="w"> </span><span class="n">selectFrom</span><span class="p">(</span><span class="s">"system"</span><span class="p">,</span><span class="w"> </span><span class="s">"local"</span><span class="p">).</span><span class="na">column</span><span class="p">(</span><span class="s">"release_version"</span><span class="p">);</span> |
| </code></pre></div> |
| <p>Note that you don't necessarily need to extract <code>CqlIdentifier</code> constants since the construction |
| already happens at initialization time.</p> |
| <h4 id="derived-configuration-profiles">Derived configuration profiles<a class="headerlink" href="#derived-configuration-profiles" title="Permanent link">¶</a></h4> |
| <p>The configuration API allows you to build <a href="../configuration/#derived-profiles">derived profiles</a> at |
| runtime.</p> |
| <div class="highlight"><pre><span></span><code><span class="n">DriverExecutionProfile</span><span class="w"> </span><span class="n">dynamicProfile</span><span class="w"> </span><span class="o">=</span> |
| <span class="w"> </span><span class="n">defaultProfile</span><span class="p">.</span><span class="na">withString</span><span class="p">(</span> |
| <span class="w"> </span><span class="n">DefaultDriverOption</span><span class="p">.</span><span class="na">REQUEST_CONSISTENCY</span><span class="p">,</span><span class="w"> </span><span class="n">DefaultConsistencyLevel</span><span class="p">.</span><span class="na">EACH_QUORUM</span><span class="p">.</span><span class="na">name</span><span class="p">());</span> |
| </code></pre></div> |
| <p>Their use is generally discouraged (you should define profiles statically in the configuration file |
| as much as possible), but if there's no other way and you reuse them over time, store them instead |
| of recreating them each time. </p> |
| <h3 id="metadata">Metadata<a class="headerlink" href="#metadata" title="Permanent link">¶</a></h3> |
| <p>The driver maintains <a href="../metadata/">metadata</a> about the state of the Cassandra cluster. This work is |
| done on dedicated "admin" threads (see the <a href="#thread-pooling">thread pooling</a> section below), so it's |
| not in direct competition with regular requests. </p> |
| <h4 id="filtering">Filtering<a class="headerlink" href="#filtering" title="Permanent link">¶</a></h4> |
| <p>You can disable entire parts of the metadata with those configuration options: </p> |
| <div class="highlight"><pre><span></span><code>datastax-java-driver.advanced.metadata { |
| schema.enabled = true |
| token-map.enabled = true |
| } |
| </code></pre></div> |
| <p>This will save CPU and memory resources, but you lose some driver features:</p> |
| <ul> |
| <li>if schema is disabled, <code>session.getMetadata().getKeyspaces()</code> will always be empty: your |
| application won't be able to inspect the database schema dynamically.</li> |
| <li>if the token map is disabled, <code>session.getMetadata().getTokenMap()</code> will always be empty, and you |
| lose the ability to use <a href="../load_balancing/#token-aware">token-aware routing</a>.</li> |
| </ul> |
| <p>Note that disabling the schema implicitly disables the token map (because computing the token map |
| requires the keyspace replication settings).</p> |
| <p>Perhaps more interestingly, metadata can be <a href="../metadata/schema/#filtering">filtered</a> to a specific |
| subset of keyspaces. This is handy if you connect to a shared cluster that holds data for multiple |
| applications:</p> |
| <div class="highlight"><pre><span></span><code>datastax-java-driver.advanced.metadata { |
| schema.refreshed-keyspaces = [ "users", "inventory" ] |
| } |
| </code></pre></div> |
| <p>To get a sense of the time spent on metadata refreshes, enable <a href="../logging/">debug logs</a> and look |
| for entries like this:</p> |
| <div class="highlight"><pre><span></span><code>[s0-io-0] DEBUG c.d.o.d.i.c.m.s.q.CassandraSchemaQueries - [s0] Schema queries took 88 ms |
| [s0-admin-0] DEBUG c.d.o.d.i.c.m.s.p.CassandraSchemaParser - [s0] Schema parsing took 71 ms |
| [s0-admin-0] DEBUG c.d.o.d.i.c.metadata.DefaultMetadata - [s0] Refreshing token map (only schema has changed) |
| [s0-admin-0] DEBUG c.d.o.d.i.c.m.token.DefaultTokenMap - [s0] Computing keyspace-level data for {system_auth={class=org.apache.cassandra.locator.SimpleStrategy, replication_factor=1}, system_schema={class=org.apache.cassandra.locator.LocalStrategy}, system_distributed={class=org.apache.cassandra.locator.SimpleStrategy, replication_factor=3}, system={class=org.apache.cassandra.locator.LocalStrategy}, system_traces={class=org.apache.cassandra.locator.SimpleStrategy, replication_factor=2}} |
| [s0-admin-0] DEBUG c.d.o.d.i.c.m.token.DefaultTokenMap - [s0] Computing new keyspace-level data for {class=org.apache.cassandra.locator.SimpleStrategy, replication_factor=1} |
| [s0-admin-0] DEBUG c.d.o.d.i.c.m.token.KeyspaceTokenMap - [s0] Computing keyspace-level data for {class=org.apache.cassandra.locator.SimpleStrategy, replication_factor=1} took 12 ms |
| [s0-admin-0] DEBUG c.d.o.d.i.c.m.token.DefaultTokenMap - [s0] Computing new keyspace-level data for {class=org.apache.cassandra.locator.LocalStrategy} |
| [s0-admin-0] DEBUG c.d.o.d.i.c.m.token.KeyspaceTokenMap - [s0] Computing keyspace-level data for {class=org.apache.cassandra.locator.LocalStrategy} took 1 ms |
| [s0-admin-0] DEBUG c.d.o.d.i.c.m.token.DefaultTokenMap - [s0] Computing new keyspace-level data for {class=org.apache.cassandra.locator.SimpleStrategy, replication_factor=3} |
| [s0-admin-0] DEBUG c.d.o.d.i.c.m.token.KeyspaceTokenMap - [s0] Computing keyspace-level data for {class=org.apache.cassandra.locator.SimpleStrategy, replication_factor=3} took 54 us |
| [s0-admin-0] DEBUG c.d.o.d.i.c.m.token.DefaultTokenMap - [s0] Computing new keyspace-level data for {class=org.apache.cassandra.locator.SimpleStrategy, replication_factor=2} |
| [s0-admin-0] DEBUG c.d.o.d.i.c.m.token.KeyspaceTokenMap - [s0] Computing keyspace-level data for {class=org.apache.cassandra.locator.SimpleStrategy, replication_factor=2} took 98 us |
| [s0-admin-0] DEBUG c.d.o.d.i.c.metadata.DefaultMetadata - [s0] Rebuilding token map took 32 ms |
| [s0-admin-0] DEBUG c.d.o.d.i.c.metadata.MetadataManager - [s0] Applying schema refresh took 34 ms |
| </code></pre></div> |
| <h4 id="debouncing">Debouncing<a class="headerlink" href="#debouncing" title="Permanent link">¶</a></h4> |
| <p>The driver receives push notifications of schema and topology changes from the Cassandra cluster. |
| These signals are <em>debounced</em>, meaning that rapid series of events will be amortized, for example:</p> |
| <ul> |
| <li>if multiple schema objects are created or modified, only perform a single schema refresh at the |
| end.</li> |
| <li>if a node's status oscillates rapidly between UP and DOWN, wait for gossip to stabilize and only |
| apply the last state.</li> |
| </ul> |
| <p>Debouncing is controlled by these configuration options (shown here with their defaults):</p> |
| <div class="highlight"><pre><span></span><code>datastax-java-driver.advanced.metadata { |
| topology-event-debouncer { |
| # How long the driver waits to propagate an event. If another event is received within that |
| # time, the window is reset and a batch of accumulated events will be delivered. |
| window = 1 second |
| |
| # The maximum number of events that can accumulate. If this count is reached, the events are |
| # delivered immediately and the time window is reset. |
| max-events = 20 |
| } |
| schema.debouncer { |
| window = 1 second |
| max-events = 20 |
| } |
| } |
| </code></pre></div> |
| <p>You may adjust those settings depending on your application's needs: higher values mean less impact |
| on performance, but the driver will be slower to react to changes. </p> |
| <h4 id="schema-updates">Schema updates<a class="headerlink" href="#schema-updates" title="Permanent link">¶</a></h4> |
| <p>You should group your schema changes as much as possible.</p> |
| <p>Every change made from a client will be pushed to all other clients, causing them to refresh their |
| metadata. If you have multiple client instances, it might be a good idea to |
| <a href="../metadata/schema/#enabling-disabling">deactivate the metadata</a> on all clients while you apply the |
| updates, and reactivate it at the end (reactivating will trigger an immediate refresh, so you might |
| want to ramp up clients to avoid a "thundering herd" effect).</p> |
| <p>Schema changes have to replicate to all nodes in the cluster. To minimize the chance of schema |
| disagreement errors:</p> |
| <ul> |
| <li>apply your changes serially. The driver handles this automatically by checking for |
| <a href="../metadata/schema/#schema-agreement">schema agreement</a> after each DDL query. Run them from the |
| same application thread, and, if you use the asynchronous API, chain the futures properly.</li> |
| <li>send all the changes to the same coordinator. This is one of the rare cases where we recommend |
| using <a href="https://docs.datastax.com/en/drivers/java/4.17/com/datastax/oss/driver/api/core/cql/Statement.html#setNode-com.datastax.oss.driver.api.core.metadata.Node-">Statement.setNode()</a>. </li> |
| </ul> |
| <h3 id="thread-pooling">Thread pooling<a class="headerlink" href="#thread-pooling" title="Permanent link">¶</a></h3> |
| <p>The driver architecture is designed around two code paths:</p> |
| <ul> |
| <li>the <strong>hot path</strong> is everything directly related to the execution of requests: encoding/decoding |
| driver types to/from low-level binary payloads, and network I/O. This is where the driver spends |
| most of its cycles in a typical application: when we have to make design tradeoffs, performance is |
| always the priority. Hot code runs on 3 categories of threads:<ul> |
| <li>your application's thread for the construction of statements;</li> |
| <li>the driver's "I/O" event loop group for encoding/decoding and network I/O. You can configure |
| it with the options in <code>datastax-java-driver.advanced.netty.io-group</code>.</li> |
| <li>the driver's "timer" thread for request timeouts and speculative executions. See |
| <code>datastax-java-driver.advanced.netty.timer</code>.</li> |
| </ul> |
| </li> |
| <li>the <strong>cold path</strong> is for all administrative tasks: managing the |
| <a href="../control_connection">control connection</a>, parsing <a href="../metadata/">metadata</a>, reacting to cluster |
| events (node going up/down, getting added/removed, etc), and scheduling periodic events |
| (reconnections, reloading the configuration). Comparatively, these tasks happen less often, and |
| are less critical (for example, stale schema metadata is not a blocker for request execution). |
| They are scheduled on a separate "admin" event loop group, controlled by the options in |
| <code>datastax-java-driver.advanced.netty.admin-group</code>.</li> |
| </ul> |
| <p>By default, the number of I/O threads is set to <code>Runtime.getRuntime().availableProcessors() * 2</code>, |
| and the number of admin threads to 2. It's hard to give one-size-fits-all recommendations because |
| every case is different, but you might want to try lowering I/O threads, especially if your |
| application already creates a lot of threads on its side. </p> |
| <p>Note that you can gain more fine-grained control over thread pools via the |
| <a href="../../api_conventions">internal</a> API (look at the <code>NettyOptions</code> interface). In particular, it is |
| possible to reuse the same event loop group for I/O, admin tasks, and even your application code |
| (the driver's internal code is fully asynchronous so it will never block any thread). The timer is |
| the only one that will have to stay on a separate thread.</p> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| </article> |
| </div> |
| |
| |
| <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> |
| </div> |
| |
| <button type="button" class="md-top md-icon" data-md-component="top" hidden> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> |
| Back to top |
| </button> |
| |
| </main> |
| |
| <footer class="md-footer"> |
| |
| <div class="md-footer-meta md-typeset"> |
| <div class="md-footer-meta__inner md-grid"> |
| <div class="md-copyright"> |
| |
| |
| Made with |
| <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> |
| Material for MkDocs |
| </a> |
| |
| </div> |
| |
| </div> |
| </div> |
| </footer> |
| |
| </div> |
| <div class="md-dialog" data-md-component="dialog"> |
| <div class="md-dialog__inner md-typeset"></div> |
| </div> |
| |
| |
| |
| |
| <script id="__config" type="application/json">{"base": "../..", "features": ["navigation.tabs", "navigation.sections", "navigation.top", "search.highlight", "search.share"], "search": "../../assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> |
| |
| |
| <script src="../../assets/javascripts/bundle.92b07e13.min.js"></script> |
| |
| |
| </body> |
| </html> |