﻿<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  
  <head>
<!-- Yandex.Metrika counter -->
    <script type="text/javascript" >
      (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
      m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
      (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
    
      ym(72949126, "init", {
           clickmap:true,
           trackLinks:true,
           accurateTrackBounce:true,
           webvisor:true
      });
    </script>
    <noscript><div><img src="https://mc.yandex.ru/watch/72949126" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
    <!-- /Yandex.Metrika counter -->
<script type='text/javascript'>
    window.__lo_site_id = 284467;
    
      (function() {
        var wa = document.createElement('script'); wa.type = 'text/javascript'; wa.async = true;
        wa.src = 'https://d10lpsik1i8c69.cloudfront.net/w.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(wa, s);
        })();
      </script>
<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 async src="https://www.googletagmanager.com/gtag/js?id=UA-61232409-1"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
    
      gtag('config', 'UA-61232409-1');
    </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>
