<!DOCTYPE html>
<html>
  



<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="The Apache Cassandra database is the right choice when you need scalability and high availability without compromising performance. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for mission-critical data. Cassandra's support for replicating across multiple datacenters is best-in-class, providing lower latency for your users and the peace of mind of knowing that you can survive regional outages.
">
  <meta name="keywords" content="cassandra, apache, apache cassandra, distributed storage, key value store, scalability, bigtable, dynamo" />
  <meta name="robots" content="index,follow" />
  <meta name="language" content="en" />  

  <title>Documentation</title>

  <link rel="canonical" href="http://cassandra.apache.org/doc/latest/operating/bloom_filters.html">

  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
  <link rel="stylesheet" href="./../../../css/style.css">
  
  <link rel="stylesheet" href="./../../../css/sphinx.css">
  

   <link rel="top" title="Apache Cassandra Documentation v3.7" href="../index.html"/> <link rel="up" title="Operating Cassandra" href="index.html"/> <link rel="next" title="Compression" href="compression.html"/> <link rel="prev" title="Compaction" href="compaction.html"/> 
</head>

  <body>
    <!-- breadcrumbs -->
<div class="topnav">
  <div class="container breadcrumb-container">
    <ul class="breadcrumb">
      <li>
        <div class="dropdown">
          <img class="asf-logo" src="./../../../img/asf_feather.png" />
          <a data-toggle="dropdown" href="#">Apache Software Foundation <span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
            <li><a href="http://www.apache.org">Apache Homepage</a></li>
            <li><a href="http://www.apache.org/licenses/">License</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
            <li><a href="http://www.apache.org/security/">Security</a></li>
          </ul>
        </div>
      </li>

      
      <li><a href="./../../../">Apache Cassandra</a></li>
      

      
        
        <li><a href="./../../../doc">Documentation</a></li>
        
      

      
      <li><a href="./">Operating Cassandra</a></li>
      

      
      <li>Bloom Filters</li>
      
    </ul>
  </div>

  <!-- navbar -->
  <nav class="navbar navbar-default navbar-static-top" role="navigation">
    <div class="container">
      <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#cassandra-menu" aria-expanded="false">
          <span class="sr-only">Toggle navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="./../../../"><img src="./../../../img/cassandra_logo.png" alt="Apache Cassandra logo" /></a>
      </div><!-- /.navbar-header -->

      <div id="cassandra-menu" class="collapse navbar-collapse">
        <ul class="nav navbar-nav navbar-right">
          <li><a href="./../../../">Home</a></li>
          <li><a href="./../../../download/">Download</a></li>
          <li><a href="./../../../doc/">Documentation</a></li>
          <li><a href="./../../../community/">Community</a></li>
        </ul>
      </div><!-- /#cassandra-menu -->

      
    </div>
  </nav><!-- /.navbar -->
</div><!-- /.topnav -->

    <div class="container-fluid">
  <div class="row">
    <div class="col-md-2">
      <div class="doc-navigation">
        <div class="doc-menu" role="navigation">
          <div class="navbar-header">
            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
              <span class="sr-only">Toggle navigation</span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
            </button>
          </div>
          <div class="navbar-collapse collapse sidebar-navbar-collapse">
            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
              <div class="form-group">
                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
                <input type="hidden" name="check_keywords" value="yes" />
                <input type="hidden" name="area" value="default" />
              </div>
            </form>
            
            
            
            <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Bloom Filters</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#changing">Changing</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
</ul>

            
            
          </div><!--/.nav-collapse -->
        </div>
      </div>
    </div>
    <div class="col-md-8">
      <div class="content doc-content">
        <div class="container">
          
  <div class="section" id="bloom-filters">
<h1>Bloom Filters<a class="headerlink" href="#bloom-filters" title="Permalink to this headline">¶</a></h1>
<p>In the read path, Cassandra merges data on disk (in SSTables) with data in RAM (in memtables). To avoid checking every
SSTable data file for the partition being requested, Cassandra employs a data structure known as a bloom filter.</p>
<p>Bloom filters are a probabilistic data structure that allows Cassandra to determine one of two possible states: - The
data definitely does not exist in the given file, or - The data probably exists in the given file.</p>
<p>While bloom filters can not guarantee that the data exists in a given SSTable, bloom filters can be made more accurate
by allowing them to consume more RAM. Operators have the opportunity to tune this behavior per table by adjusting the
the <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> to a float between 0 and 1.</p>
<p>The default value for <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> is 0.1 for tables using LeveledCompactionStrategy and 0.01 for all
other cases.</p>
<p>Bloom filters are stored in RAM, but are stored offheap, so operators should not consider bloom filters when selecting
the maximum heap size.  As accuracy improves (as the <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> gets closer to 0), memory usage
increases non-linearly - the bloom filter for <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span> <span class="pre">=</span> <span class="pre">0.01</span></code> will require about three times as much
memory as the same table with <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span> <span class="pre">=</span> <span class="pre">0.1</span></code>.</p>
<p>Typical values for <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> are usually between 0.01 (1%) to 0.1 (10%) false-positive chance, where
Cassandra may scan an SSTable for a row, only to find that it does not exist on the disk. The parameter should be tuned
by use case:</p>
<ul class="simple">
<li>Users with more RAM and slower disks may benefit from setting the <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> to a numerically lower
number (such as 0.01) to avoid excess IO operations</li>
<li>Users with less RAM, more dense nodes, or very fast disks may tolerate a higher <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> in order to
save RAM at the expense of excess IO operations</li>
<li>In workloads that rarely read, or that only perform reads by scanning the entire data set (such as analytics
workloads), setting the <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> to a much higher number is acceptable.</li>
</ul>
<div class="section" id="changing">
<h2>Changing<a class="headerlink" href="#changing" title="Permalink to this headline">¶</a></h2>
<p>The bloom filter false positive chance is visible in the <code class="docutils literal"><span class="pre">DESCRIBE</span> <span class="pre">TABLE</span></code> output as the field
<code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code>. Operators can change the value with an <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> statement:</p>
<div class="highlight-none"><div class="highlight"><pre><span></span>ALTER TABLE keyspace.table WITH bloom_filter_fp_chance=0.01
</pre></div>
</div>
<p>Operators should be aware, however, that this change is not immediate: the bloom filter is calculated when the file is
written, and persisted on disk as the Filter component of the SSTable. Upon issuing an <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> statement, new
files on disk will be written with the new <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code>, but existing sstables will not be modified until
they are compacted - if an operator needs a change to <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> to take effect, they can trigger an
SSTable rewrite using <code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">scrub</span></code> or <code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">upgradesstables</span> <span class="pre">-a</span></code>, both of which will rebuild the sstables on
disk, regenerating the bloom filters in the progress.</p>
</div>
</div>



          
          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
            
            <a href="compression.html" class="btn btn-default pull-right " role="button" title="Compression" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
            
            
            <a href="compaction.html" class="btn btn-default" role="button" title="Compaction" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
            
          </div>
          
        </div>
      </div>
    </div>
    <div class="col-md-2">
    </div>
  </div>
</div>

    <footer>
  <div class="container">
    <div class="col-md-4 social-blk">
      <span class="social">
        <a href="https://twitter.com/cassandra"
           class="twitter-follow-button"
           data-show-count="false" data-size="large">Follow @cassandra</a>
        <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
        <a href="https://twitter.com/intent/tweet?button_hashtag=cassandra"
           class="twitter-hashtag-button"
           data-size="large"
           data-related="ApacheCassandra">Tweet #cassandra</a>
        <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
      </span>
    </div>

    <div class="col-md-8 trademark">
      <p>&copy; 2016 <a href="http://apache.org">The Apache Software Foundation</a>.
      Apache, the Apache feather logo, and Apache Cassandra are trademarks of The Apache Software Foundation.
      <p>
    </div>
  </div><!-- /.container -->
</footer>

<!-- Javascript. Placed here so pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="./../../../js/underscore-min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>


<script src="./../../../js/doctools.js"></script>
<script src="./../../../js/searchtools.js"></script>

 <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:    "", VERSION:     "", COLLAPSE_INDEX: false, FILE_SUFFIX: ".html", HAS_SOURCE:  false, SOURCELINK_SUFFIX: "" }; </script> 

<script type="text/javascript">
$(function() {
    // Stick the #nav to the top of the window
    var nav = $('.doc-navigation');
    var navHomeY = nav.offset().top;
    var isFixed = false;
    var $w = $(window);
    $w.scroll(function() {
        var scrollTop = $w.scrollTop();
        var shouldBeFixed = $w.width() > 991 && scrollTop >= navHomeY - 10;
        if (shouldBeFixed && !isFixed) {
            nav.css({
                position: 'fixed',
                top: 0,
                left: nav.offset().left,
                width: nav.width(),
            });
            nav.addClass('fixed-navigation');
            isFixed = true;
        }
        else if (!shouldBeFixed && isFixed)
        {
            nav.css({
                position: 'static'
            });
            nav.removeClass('fixed-navigation');
            isFixed = false;
        }
    });
});
</script>


<script type="text/javascript">
  var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
  document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

  try {
    var pageTracker = _gat._getTracker("UA-11583863-1");
    pageTracker._trackPageview();
  } catch(err) {}
</script>


  </body>
</html>
