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

    <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>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 - 2018 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>
