blob: 3769c20110e79e12366dcce49449dbbf14d56ab1 [file] [log] [blame]
<!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>