﻿<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  
  <head>
<link rel="canonical" href="https://ignite.apache.org/releases/latest/dotnetdoc/api/Apache.Ignite.Core.Cache.Configuration.CacheAtomicityMode.html" />


    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Enum CacheAtomicityMode
   | Apache Ignite.NET </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Enum CacheAtomicityMode
   | Apache Ignite.NET ">
    <meta name="generator" content="docfx 2.24.0.0">
    
    <link rel="shortcut icon" href="../images/favicon.ico">
    <link rel="stylesheet" href="../styles/docfx.vendor.css">
    <link rel="stylesheet" href="../styles/docfx.css">
    <link rel="stylesheet" href="../styles/main.css">
    <meta property="docfx:navrel" content="../toc.html">
    <meta property="docfx:tocrel" content="toc.html">
    
    <meta property="docfx:rel" content="../">
    
  
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-61232409-1', 'auto');
  ga('send', 'pageview');

</script></head>
  <body data-spy="scroll" data-target="#affix">
    <div id="wrapper">
      <header>
        
        <nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
          <div class="container">
            <div class="navbar-header">
              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
                <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="../index.html">
                <img id="logo" class="svg" src="../images/logo_ignite_32_32.png" alt="">
              </a>
            </div>
            <div class="collapse navbar-collapse" id="navbar">
              <form class="navbar-form navbar-right" role="search" id="search">
                <div class="form-group">
                  <input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
                </div>
              </form>
            </div>
          </div>
        </nav>
        
        <div class="subnav navbar navbar-default">
          <div class="container hide-when-search" id="breadcrumb">
            <ul class="breadcrumb">
              <li></li>
            </ul>
          </div>
        </div>
      </header>
      <div class="container body-content">
        
        <div id="search-results">
          <div class="search-list"></div>
          <div class="sr-items"></div>
          <ul id="pagination"></ul>
        </div>
      </div>
      <div role="main" class="container body-content hide-when-search">
        
        <div class="sidenav hide-when-search">
          <a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
          <div class="sidetoggle collapse" id="sidetoggle">
            <div id="sidetoc"></div>
          </div>
        </div>
        <div class="article row grid-right">
          <div class="col-md-10">
            <article class="content wrap" id="_content" data-uid="Apache.Ignite.Core.Cache.Configuration.CacheAtomicityMode">
  
  
  <h1 id="Apache_Ignite_Core_Cache_Configuration_CacheAtomicityMode" data-uid="Apache.Ignite.Core.Cache.Configuration.CacheAtomicityMode" class="text-break">Enum CacheAtomicityMode
  </h1>
  <div class="markdown level0 summary"><p>Cache atomicity mode.</p>
</div>
  <div class="markdown level0 conceptual"></div>
  <h6><strong>Namespace</strong>: <a class="xref" href="Apache.Ignite.Core.Cache.Configuration.html">Apache.Ignite.Core.Cache.Configuration</a></h6>
  <h6><strong>Assembly</strong>: Apache.Ignite.Core.dll</h6>
  <h5 id="Apache_Ignite_Core_Cache_Configuration_CacheAtomicityMode_syntax">Syntax</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public enum CacheAtomicityMode</code></pre>
  </div>
  <h3 id="fields">Fields
  </h3>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    <thead>
    <tbody>
      <tr>
        <td id="Apache_Ignite_Core_Cache_Configuration_CacheAtomicityMode_Atomic">Atomic</td>
        <td><p>Specifies atomic-only cache behaviour. In this mode distributed transactions and distributed
locking are not supported. Disabling transactions and locking allows to achieve much higher
performance and throughput ratios.
<p>
In addition to transactions and locking, one of the main differences to <a class="xref" href="Apache.Ignite.Core.Cache.Configuration.CacheAtomicityMode.html#Apache_Ignite_Core_Cache_Configuration_CacheAtomicityMode_Atomic">Atomic</a> mode
is that bulk writes, such as <a class="xref" href="Apache.Ignite.Core.Cache.ICache-2.html#Apache_Ignite_Core_Cache_ICache_2_PutAll_System_Collections_Generic_IEnumerable_System_Collections_Generic_KeyValuePair__0__1___">PutAll(IEnumerable&lt;KeyValuePair&lt;TK, TV&gt;&gt;)</a> 
and <a class="xref" href="Apache.Ignite.Core.Cache.ICache-2.html#Apache_Ignite_Core_Cache_ICache_2_RemoveAll_System_Collections_Generic_IEnumerable__0__">RemoveAll(IEnumerable&lt;TK&gt;)</a> methods, 
become simple batch operations which can partially fail. In case of partial
failure, <a class="xref" href="Apache.Ignite.Core.Cache.CachePartialUpdateException.html">CachePartialUpdateException</a>will be thrown which will contain a list of keys 
for which the update failed. It is recommended that bulk writes are used
whenever multiple keys need to be inserted or updated in cache, as they reduce number of network trips and
provide better performance.
<p>
Note that even without locking and transactions, <a class="xref" href="Apache.Ignite.Core.Cache.Configuration.CacheAtomicityMode.html#Apache_Ignite_Core_Cache_Configuration_CacheAtomicityMode_Atomic">Atomic</a> mode still provides
full consistency guarantees across all cache nodes.
<p>
Also note that all data modifications in <a class="xref" href="Apache.Ignite.Core.Cache.Configuration.CacheAtomicityMode.html#Apache_Ignite_Core_Cache_Configuration_CacheAtomicityMode_Atomic">Atomic</a> mode are guaranteed to be atomic
and consistent with writes to the underlying persistent store, if one is configured.        </p>
</td>
      </tr>
      <tr>
        <td id="Apache_Ignite_Core_Cache_Configuration_CacheAtomicityMode_Transactional">Transactional</td>
        <td><p>Specifies fully ACID-compliant transactional cache behavior.
<p>
<strong>Note!</strong> In this mode, transactional consistency is guaranteed for key-value API operations only.
To enable ACID capabilities for SQL transactions, use TRANSACTIONAL_SNAPSHOT mode.
<p>
<strong>Note!</strong> This atomicity mode is not compatible with the other atomicity modes within the same transaction.
If a transaction is executed over multiple caches, all caches must have the same atomicity mode,
either TRANSACTIONAL_SNAPSHOT or TRANSACTIONAL.</p>
</td>
      </tr>
      <tr>
        <td id="Apache_Ignite_Core_Cache_Configuration_CacheAtomicityMode_TransactionalSnapshot">TransactionalSnapshot</td>
        <td><p>This is an experimental feature. Transactional SQL is currently in a beta status.
<p>
Specifies fully ACID-compliant transactional cache behavior for both key-value API and SQL transactions.
<p>
This atomicity mode enables multiversion concurrency control (MVCC) for the cache. In MVCC-enabled caches,
when a transaction updates a row, it creates a new version of that row instead of overwriting it.
Other users continue to see the old version of the row until the transaction is committed.
In this way, readers and writers do not conflict with each other and always work with a consistent dataset.
The old version of data is cleaned up when it&apos;s no longer accessed by anyone.
<p>
With this mode enabled, one node is elected as an MVCC coordinator. This node tracks all in-flight transactions
and queries executed in the cluster. Each transaction or query executed over the cache with
TRANSACTIONAL_SNAPSHOT mode works with a current snapshot of data generated for this transaction or query
by the coordinator. This snapshot ensures that the transaction works with a consistent database state
during its execution period.
<p>
<strong>Note!</strong> This atomicity mode is not compatible with the other atomicity modes within the same transaction.
If a transaction is executed over multiple caches, all caches must have the same atomicity mode,
either TRANSACTIONAL_SNAPSHOT or TRANSACTIONAL.</p>
</td>
      </tr>
    </tbody>
  </thead></thead></table>
</article>
          </div>
          
          <div class="hidden-sm col-md-2" role="complementary">
            <div class="sideaffix">
              <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
              <!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
              </nav>
            </div>
          </div>
        </div>
      </div>
      
      <footer>
        <div class="grad-bottom"></div>
        <div class="footer">
          <div class="container">
            <span class="pull-right">
              <a href="#top">Back to top</a>
            </span>
            © 2015 - 2019 The Apache Software Foundation
            
          </div>
        </div>
      </footer>
    </div>
    
    <script type="text/javascript" src="../styles/docfx.vendor.js"></script>
    <script type="text/javascript" src="../styles/docfx.js"></script>
    <script type="text/javascript" src="../styles/main.js"></script>
  </body>
</html>
