<!doctypehtml><html lang=en><meta content="text/html; charset=utf-8"http-equiv=Content-Type><title>
   Transaction processing
  </title><meta content="For other uses, see Transaction (disambiguation). In computer science, transaction processing is information processing that is divided into individual, indivisible operations, called transactions. Each transaction must succeed or fail as a&amp#8230;"name=Description><meta content="Transaction processing"name=Keywords><meta content=width=device-width,initial-scale=1,minimum-scale=1 name=viewport><meta content=mature name=rating><meta content=on http-equiv=x-dns-prefetch-control><link href=https://ajax.googleapis.com rel=dns-prefetch><link href=https://www.googletagservices.com rel=dns-prefetch><link href=https://www.google-analytics.com rel=dns-prefetch><link href=https://pagead2.googlesyndication.com rel=dns-prefetch><link href=https://ajax.googleapis.com rel=dns-prefetch><link href=https://an.yandex.ru rel=dns-prefetch><link href=https://mc.yandex.ru rel=dns-prefetch><link as=image href=/images/Logo_en.png rel=preload><link as=image href=/images/Logo_h_en.png rel=preload><meta content="Transaction processing"property=og:title><meta content=article property=og:type><meta content=https://en-academic.com/dic.nsf/enwiki/137406 property=og:url><meta content=https://en-academic.com/images/Logo_social_en.png?3 property=og:image><meta content="For other uses, see Transaction (disambiguation). In computer science, transaction processing is information processing that is divided into individual, indivisible operations, called transactions. Each transaction must succeed or fail as a&amp#8230;"property=og:description><meta content="Academic Dictionaries and Encyclopedias"property=og:site_name><link title="Academic Dictionaries and Encyclopedias"href=//en-academic.com/dicsearch.xml rel=search type=application/opensearchdescription+xml><meta content=ALL name=ROBOTS><link href=https://en-academic.com/dic.nsf/enwiki/137407 rel=next><link href=https://en-academic.com/dic.nsf/enwiki/137405 rel=prev><link href=https://en-academic.com/contents.nsf/enwiki/ rel=TOC><link href=https://en-academic.com/contents.nsf/enwiki/ rel=index><link href=https://en-academic.com/contents.nsf/enwiki/ rel=contents><link href=https://en-academic.com/dic.nsf/enwiki/137406 rel=canonical><script async src=https://www.googletagservices.com/tag/js/gpt.js></script><script async src=https://cdn-b.notsy.io/acd/ym.js></script><script>window.notsyFirstTapRegistered = false;
    (function () {
        function onFirstTap () {
            window.notsyFirstTapRegistered = true;
            document.removeEventListener('touchstart', onFirstTap);
        }
 
        document.addEventListener('touchstart', onFirstTap);
    })();</script><script>var googletag = window.googletag || {};
  googletag.cmd = googletag.cmd || [];

  var notsyInit = !!window.notsyInit ? window.notsyInit: function(s) {window.notsyPageSettings = s}
  notsyInit({
    'page': 'main_page_desktop',
    'enableAdUnits': ['ACD_FLOAT_970'],
    'targeting': [
       ['AgeLimits', 'adult'],
       ['pageType', 'article'],
       ['category', 'Общая информация'],
       ['did', 'enwiki'],
       ['len', 185]
     ]
  });</script><style>div.hidden,#sharemenu,div.autosuggest,#contextmenu,#ad_top,#ad_bottom,#ad_right,#ad_top2,#restrictions,#footer ul + div,#TerminsNavigationBar,#top-menu,#lang,#search-tabs,#search-box .translate-lang,#translate-arrow,#dic-query,#logo img.h,#t-direction-head,#langbar,.smm{display:none}p,ul{list-style-type:none;margin:0 0 15px}ul li{margin-bottom:6px}.content ul{list-style-type:disc}*{padding:0;margin:0}html,body{height:100%}body{padding:0;margin:0;color:#000;font:14px Helvetica,Arial,Tahoma,sans-serif;background:#fff;line-height:1.5em}a{color:#0d44a0;text-decoration:none}h1{font-size:24px;margin:0 0 18px}h2{font-size:20px;margin:0 0 14px}h3{font-size:16px;margin:0 0 10px}h1 a,h2 a{color:#454545!important}#page{margin:0 auto}#page{min-height:100%;position:relative;padding-top:105px}#page{width:720px;padding-right:330px}* html #page{height:100%}#header{position:relative;height:122px}#logo{float:left;margin-top:21px;width:125px}#logo a.img{width:90px;margin:0 0 0 16px}#logo a.img.logo-en{margin-left:13px}#logo a{display:block;font-size:12px;text-align:center;word-break:break-all}#site-title{padding-top:35px;margin:0 0 5px 135px}#site-title a{color:#000;font-size:18px;font-style:italic;display:block;font-weight:400}#search-box{margin-left:135px;border-top-right-radius:3px;border-bottom-right-radius:3px;padding:4px;position:relative;background:#abcf7e;min-height:33px}#search-box.dic{background:#896744}#search-box table{border-spacing:0;border-collapse:collapse;width:100%}#search-box table td{padding:0;vertical-align:middle}#search-box table td:first-child{padding-right:3px}#search-box table td:last-child{width:1px}#search-query,#dic-query,.translate-lang{padding:6px;font-size:16px;height:18px;border:1px solid #949494;width:100%;box-sizing:border-box;height:32px;float:none;margin:0;background:white;float:left;border-radius:0!important}#search-button{width:70px;height:32px;text-align:center;border:1px solid #7a8e69;border-radius:3px;background:#e0e0e0}#search-tabs{display:block;margin:0 15px 0 135px;padding:0;list-style-type:none}#search-tabs li{float:left;min-width:70px;max-width:140px;padding:0 15px;height:23px;line-height:23px;background:#bde693;text-align:center;margin-right:1px}#search-box.dic + #search-tabs li{background:#C9A784}#search-tabs li:last-child{border-bottom-right-radius:3px}#search-tabs li a{color:#353535;font-style:italic;font-size:12px;display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}#search-tabs li.active{height:22px;line-height:23px;position:relative;background:#abcf7e;border-bottom-left-radius:3px;border-bottom-right-radius:3px}#search-box.dic + #search-tabs li.active{background:#896744}#search-tabs li.active a{color:white}#content{clear:both;margin:30px 0;padding-left:15px}#content a{text-decoration:underline}#content .breadcrumb{margin-bottom:20px}#search_sublinks,#search_links{margin-bottom:8px;margin-left:-8px}#search_sublinks a,#search_links a{padding:3px 8px 1px;border-radius:2px}#search_sublinks a.active,#search_links a.active{color:#000 !important;background:#bde693;text-decoration:none!important}.term{color:saddlebrown}@media(max-width:767px){.hideForMobile{display:none}#header{height:auto}#page{padding:5px;width:auto}#logo{float:none;width:144px;text-align:left;margin:0;padding-top:5px}#logo a{height:44px;overflow:hidden;text-align:left}#logo img.h{display:initial;width:144px;height:44px}#logo img.v{display:none}#site-title{padding:0;margin:10px 0 5px}#search-box,#search-tabs{clear:both;margin:0;width:auto;padding:4px}#search-box.translate #search-query{width:100%;margin-bottom:4px}#search-box.translate #td-search{overflow:visible;display:table-cell}ul#search-tabs{white-space:nowrap;margin-top:5px;overflow-x:auto;overflow-y:hidden}ul#search-tabs li,ul#search-tabs li.active{background:none!important;box-shadow:none;min-width:0;padding:0 5px;float:none;display:inline-block}ul#search-tabs li a{border-bottom:1px dashed green;font-style:normal;color:green;font-size:16px}ul#search-tabs li.active a{color:black;border-bottom-color:white;font-weight:700}ul#search-tabs li a:hover,ul#search-tabs li.active a:hover{color:black}#content{margin:15px 0}.h250{height:280px;max-height:280px;overflow:hidden;margin:25px 0 25px 0}</style><link rel="shortcut icon"href=https://en-academic.com/favicon.ico sizes=16x16 type=image/x-icon><link rel="shortcut icon"href=https://en-academic.com/images/icon.ico sizes=32x32 type=image/x-icon><link rel="shortcut icon"href=https://en-academic.com/images/icon.ico sizes=48x48 type=image/x-icon><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','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-2754246-1', 'auto');
  ga('require', 'displayfeatures');

  ga('set', 'dimension1', 'Общая информация');
  ga('set', 'dimension2', 'article');
  ga('set', 'dimension3', '1');

  ga('send', 'pageview');</script><script>if(typeof(console) == 'undefined' ) console = {};
	if(typeof(console.log) == 'undefined' ) console.log = function(){};
	if(typeof(console.warn) == 'undefined' ) console.warn = function(){};
	if(typeof(console.error) == 'undefined' ) console.error = function(){};
	if(typeof(console.time) == 'undefined' ) console.time = function(){};
	if(typeof(console.timeEnd) == 'undefined' ) console.timeEnd = function(){};
	Academic = {};
	Academic.sUserLanguage = 'en';
	Academic.sDomainURL = 'https://en-academic.com/dic.nsf/enwiki/';
	Academic.sMainDomainURL = '//dic.academic.pro/';
	Academic.sTranslateDomainURL = '//translate.en-academic.com/';
		Academic.sDictionaryId = 'enwiki';
		Academic.Lang = {};
	Academic.Lang.sTermNotFound = 'The term wasn\'t found';</script><body><div id=ad_top><div style="max-height: 90px; overflow: hidden; display: inline-block;"class=banner><div id=ACD_ATF_970></div></div></div><div id=page><div id=header><div id=logo><a href=//en-academic.com> <img alt=en-academic.com class=v height=68 src=//en-academic.com/images/Logo_en.png width=88> <img alt=en-academic.com class=h height=44 src=//en-academic.com/images/Logo_h_en.png width=144> <br> en-academic.com </a></div><ul id=top-menu><li id=lang><a class=link href=#> EN </a> <ul id=lang-menu><li><a href=//dic.academic.ru> RU </a><li><a href=//de-academic.com> DE </a><li><a href=//es-academic.com> ES </a><li><a href=//fr-academic.com> FR </a></ul><li><a class="add-fav link"href=# onclick=add_favorite(this);> Remember this site </a><li><a href=//partners.academic.ru/partner_proposal.php target=_blank> Embed dictionaries into your website </a></ul><h2 id=site-title><a href=//en-academic.com> Academic Dictionaries and Encyclopedias </a></h2><div id=search-box><form action=//academic.ru/searchall.php name=formSearch><table><tbody><tr><td id=td-search><input placeholder="Enter text to search in dictionaries and encyclopedias"title="Enter text to search in dictionaries and encyclopedias"autocomplete=off id=search-query name=SWord required> <div class=translate-lang><select id=translateFrom name=from><option value=xx>All languages<option value=en>English<option value=ru>Russian<option value=zh>Chinese<option value=de>German<option value=fr>French<option value=es>Spanish<option value=it>Italian<option value=la>Latin<option value=fi>Finnish<option value=el>Greek<option value=he>Hebrew<option value=ar>Arabic<option value=sw>Swahili<option value=no>Norwegian<option value=pt>Portuguese<option value=hu>Hungarian<option value=tr>Turkish<option value=id>Indonesian<option value=sv>Swedish<option value=pl>Polish<option value=et>Estonian<option value=lv>Latvian<option value=da>Danish<option value=nl>Dutch<option value=hy>Armenian<option value=uk>Ukrainian<option value=ja>Japanese<option value=sa>Sanskrit<option value=th>Thai<option value=ga>Irish<option value=tt>Tatar<option value=sk>Slovak<option value=sl>Slovene<option value=tv>Tuvan<option value=ur>Urdu<option value=yi>Yiddish<option value=mk>Macedonian<option value=ca>Catalan<option value=ba>Bashkir<option value=cs>Czech<option value=ka>Georgian<option value=ko>Korean<option value=hr>Croatian<option value=ro>Romanian, Moldavian<option value=sh>Yakut<option value=ky>Kyrgyz<option value=bo>Tibetan Standard<option value=be>Belarusian<option value=bg>Bulgarian<option value=is>Icelandic<option value=sq>Albanian<option value=nu>Nahuatl<option value=mm>Komi<option value=cy>Welsh<option value=kk>Kazakh<option value=uz>Uzbek<option value=sr>Serbian<option value=vi>Vietnamese<option value=az>Azerbaijani<option value=eu>Basque<option value=hi>Hindi<option value=mi>Māori<option value=qu>Quechua<option value=ak>Akan<option value=ay>Aymara<option value=ht>Haitian<option value=mn>Mongolian<option value=pi>Pāli<option value=mu>Maya<option value=lt>Lithuanian<option value=cj>Shor<option value=ct>Crimean Tatar language<option value=eo>Esperanto<option value=in>Ingush<option value=se>Northern Sami<option value=hs>Hornjoserbska<option value=ce>Chechen<option value=gd>Scottish Gaelic<option value=sx>Sumerian<option value=os>Ossetian<option value=ke>Circassian<option value=ad>Adyghe<option value=fa>Persian<option value=ai>Ainu<option value=km>Khmer<option value=pr>Old Russian<option value=cu>Old Church Slavonic<option value=mc>Mycenaean<option value=qy>Quenya<option value=ya>Yupik<option value=af>Afrikaans<option value=pm>Papiamento<option value=pa>Panjabi<option value=tl>Tagalog<option value=mf>Moksha<option value=cr>Cree<option value=wr>Waray<option value=ku>Kurdish<option value=gw>Alsatian<option value=fo>Faroese<option value=ab>Abkhaz<option value=an>Aragonese<option value=rp>Aromanian<option value=at>Asturian<option value=mv>Erzya<option value=kv>Komi<option value=mj>Mari<option value=cv>Chuvash<option value=ld>Ladino<option value=ud>Udmurt<option value=vp>Veps<option value=al>Altaic<option value=dl>Dolgan<option value=kc>Karachay<option value=kp>Kumyk<option value=og>Nogai<option value=ot>Ottoman Turkish<option value=tf>Tofalar<option value=tk>Turkmen<option value=ug>Uighur<option value=uu>Idioma urrumano<option value=bu>Buryat<option value=oa>Orok<option value=ev>Evenki<option value=ma>Manchu<option value=gn>Guaraní<option value=tg>Tajik<option value=ik>Inupiaq<option value=ms>Malay<option value=kb>Kabyle<option value=tw>Twi<option value=ln>Lingala<option value=bb>Bagobo<option value=yo>Yoruba<option value=sz>Silesian<option value=lb>Luxembourgish<option value=ck>Cherokee<option value=cn>Cheyenne<option value=go>Klingon<option value=jb>Lojban</select></div> <div id=translate-arrow><a>   </a></div> <div class=translate-lang><select id=translateOf name=to><option value=xx>All languages<option value=ru>Russian<option selected value=en>English<option value=de>German<option value=la>Latin<option value=he>Hebrew<option value=es>Spanish<option value=no>Norwegian<option value=zh>Chinese<option value=fr>French<option value=uk>Ukrainian<option value=it>Italian<option value=pt>Portuguese<option value=hu>Hungarian<option value=tr>Turkish<option value=pl>Polish<option value=da>Danish<option value=tt>Tatar<option value=ku>Kurdish<option value=sl>Slovene<option value=el>Greek<option value=id>Indonesian<option value=vi>Vietnamese<option value=mi>Māori<option value=tl>Tagalog<option value=ur>Urdu<option value=is>Icelandic<option value=hi>Hindi<option value=ga>Irish<option value=fo>Faroese<option value=bg>Bulgarian<option value=lv>Latvian<option value=sq>Albanian<option value=ar>Arabic<option value=fi>Finnish<option value=fa>Persian<option value=mn>Mongolian<option value=nl>Dutch<option value=sv>Swedish<option value=pi>Pāli<option value=ja>Japanese<option value=ko>Korean<option value=et>Estonian<option value=ka>Georgian<option value=tg>Tajik<option value=lt>Lithuanian<option value=ro>Romanian, Moldavian<option value=hr>Croatian<option value=sw>Swahili<option value=kk>Kazakh<option value=mk>Macedonian<option value=th>Thai<option value=be>Belarusian<option value=gl>Galician<option value=ca>Catalan<option value=ce>Chechen<option value=kc>Karachay<option value=sk>Slovak<option value=cs>Czech<option value=sr>Serbian<option value=hy>Armenian<option value=az>Azerbaijani<option value=uz>Uzbek<option value=qu>Quechua<option value=ht>Haitian<option value=mu>Maya<option value=ay>Aymara<option value=cj>Shor<option value=eo>Esperanto<option value=ct>Crimean Tatar language<option value=os>Ossetian<option value=ad>Adyghe<option value=sh>Yakut<option value=ai>Ainu<option value=km>Khmer<option value=pr>Old Russian<option value=cu>Old Church Slavonic<option value=ta>Tamil<option value=qy>Quenya<option value=av>Avaric<option value=af>Afrikaans<option value=pm>Papiamento<option value=mf>Moksha<option value=yo>Yoruba<option value=gw>Alsatian<option value=yi>Yiddish<option value=ab>Abkhaz<option value=mv>Erzya<option value=in>Ingush<option value=iz>Ingrian<option value=mj>Mari<option value=cv>Chuvash<option value=ud>Udmurt<option value=vd>Votic<option value=vp>Veps<option value=al>Altaic<option value=kp>Kumyk<option value=tk>Turkmen<option value=ug>Uighur<option value=uu>Idioma urrumano<option value=ev>Evenki<option value=ba>Bashkir<option value=ms>Malay<option value=mt>Maltese<option value=ln>Lingala<option value=pa>Panjabi<option value=ck>Cherokee<option value=ch>Chamorro<option value=go>Klingon<option value=eu>Basque<option value=ps>Pashto</select></div> <input id=did-field name=did type=hidden value=enwiki> <input id=search-type name=stype type=hidden><td><button id=search-button>Search!</button></table></form><input placeholder="interactive contents"title="interactive contents"autocomplete=off id=dic-query name=dic_query></div><ul id=search-tabs><li data-search-type=-1 id=thisdic><a onclick="return false;"href=#> Wikipedia </a><li class=active data-search-type=0 id=interpretations><a onclick="return false;"href=#> Interpretations </a></ul></div><div id=ad_top2></div><div id=content><div style="clear: both;"itemscope itemtype=http://data-vocabulary.org/Breadcrumb><h2 class=breadcrumb><a href=/contents.nsf/enwiki/ itemprop=url> <span itemprop=title> Wikipedia </span> </a></h2></div><div class=content id=selectable-content><div class=title id=TerminTitle><h1>Transaction processing</h1></div><div id=search_links></div><ul class=smm><li class=vk><a onclick="share('vk'); return false;"href=#> </a><li class=ok><a onclick="share('ok'); return false;"href=#> </a><li class=fb><a onclick="share('fb'); return false;"href=#> </a><li class=tw><a onclick="share('tw'); return false;"href=#> </a><li class=gplus><a onclick="share('g+'); return false;"href=#> </a><li class=mailru><a onclick="share('mail.ru'); return false;"href=#> </a><li class=lj><a onclick="share('lj'); return false;"href=#> </a><li class=li><a onclick="share('li'); return false;"href=#> </a></ul><div id=article><dl><div itemscope itemtype=http://webmaster.yandex.ru/vocabularies/enc-article.xml><dt class=term itemprop=title lang=en>Transaction processing<dd class=descript itemprop=content lang=en><div class=mw-content-ltr dir=ltr lang=en><div class=dablink>For other uses, see Transaction (disambiguation).</div><p>In <a href=2868> computer science </a> , <b> transaction processing </b> is information processing that is divided into individual, indivisible operations, called <i> transactions. </i> Each transaction must succeed or fail as a complete unit; it cannot remain in an intermediate state. Transaction mandatorily requires acknowledgment to get received as a necessary feedback for accomplishment.<table class=toc id=toc><tbody><tr><td style="text-align: left;"><div id=toctitle><h2>Contents</h2></div> <ul><li class="toclevel-1 tocsection-1"><a href=#Description> <span class=tocnumber> 1 </span> <span class=toctext> Description </span> </a><li class="toclevel-1 tocsection-2"><a href=#Methodology> <span class=tocnumber> 2 </span> <span class=toctext> Methodology </span> </a> <ul><li class="toclevel-2 tocsection-3"><a href=#Rollback> <span class=tocnumber> 2.1 </span> <span class=toctext> Rollback </span> </a><li class="toclevel-2 tocsection-4"><a href=#Rollforward> <span class=tocnumber> 2.2 </span> <span class=toctext> Rollforward </span> </a><li class="toclevel-2 tocsection-5"><a href=#Deadlocks> <span class=tocnumber> 2.3 </span> <span class=toctext> Deadlocks </span> </a><li class="toclevel-2 tocsection-6"><a href=#Compensating_transaction> <span class=tocnumber> 2.4 </span> <span class=toctext> Compensating transaction </span> </a></ul><li class="toclevel-1 tocsection-7"><a href=#ACID_criteria_.28Atomicity.2C_Consistency.2C_Isolation.2C_Durability.29> <span class=tocnumber> 3 </span> <span class=toctext> ACID criteria (Atomicity, Consistency, Isolation, Durability) </span> </a><li class="toclevel-1 tocsection-8"><a href=#Implementations> <span class=tocnumber> 4 </span> <span class=toctext> Implementations </span> </a><li class="toclevel-1 tocsection-9"><a href=#See_also> <span class=tocnumber> 5 </span> <span class=toctext> See also </span> </a><li class="toclevel-1 tocsection-10"><a href=#External_references> <span class=tocnumber> 6 </span> <span class=toctext> External references </span> </a><li class="toclevel-1 tocsection-11"><a href=#Further_reading> <span class=tocnumber> 7 </span> <span class=toctext> Further reading </span> </a></ul></table><h2><span class=mw-headline id=Description> Description </span></h2><p><strong class=selflink> Transaction processing </strong> is designed to maintain a computer system (typically a <a href=4849> database </a> or some modern filesystems) in a known, consistent state, by ensuring that any operations carried out on the system that are interdependent are either all completed successfully or all canceled successfully.<p>For example, consider a typical banking transaction that involves moving $700 from a customer's savings account to a customer's checking account. This transaction is a single operation in the eyes of the bank, but it involves at least two separate operations in computer terms: debiting the savings account by $700, and crediting the checking account by $700. If the debit operation succeeds but the credit does not (or <i> vice versa), </i> the books of the bank will not balance at the end of the day. There must therefore be a way to ensure that either both operations succeed or both fail, so that there is never any inconsistency in the bank's database as a whole. Transaction processing is designed to provide this.<p>Transaction processing allows multiple individual operations to be linked together automatically as a single, indivisible transaction. The transaction-processing system ensures that either all operations in a transaction are completed without error, or none of them are. If some of the operations are completed but errors occur when the others are attempted, the transaction-processing system “rolls back” <i> all </i> of the operations of the transaction (including the successful ones), thereby erasing all traces of the transaction and restoring the system to the consistent, known state that it was in before processing of the transaction began. If all operations of a transaction are completed successfully, the transaction is <a href=790923> committed </a> by the system, and all changes to the database are made permanent; the transaction cannot be rolled back once this is done.<p>Transaction processing guards against hardware and software errors that might leave a transaction partially completed, with the system left in an unknown, inconsistent state. If the computer system crashes in the middle of a transaction, the transaction processing system guarantees that all operations in any <i> uncommitted </i> ( <i> i.e., </i> not completely processed) transactions are cancelled.<p>Transactions are processed in a strict chronological order. If transaction <i> n+1 </i> <i> intend </i> s to touch the same portion of the database as transaction <i> n, </i> transaction <i> n+1 </i> does not begin until transaction <i> n </i> is committed. Before any transaction is committed, all other transactions affecting the same part of the system must also be committed; there can be no “holes” in the sequence of preceding transactions.<h2><span class=mw-headline id=Methodology> Methodology </span></h2><p>The basic principles of all transaction-processing systems are the same. However, the terminology may vary from one transaction-processing system to another, and the terms used below are not necessarily universal.<h3><span class=mw-headline id=Rollback> Rollback </span></h3><p>Transaction-processing systems ensure database integrity by recording intermediate states of the database as it is modified, then using these records to restore the database to a known state if a transaction cannot be committed. For example, copies of information on the database <i> prior </i> to its modification by a transaction are set aside by the system before the transaction can make any modifications (this is sometimes called a <i> before image). </i> If any part of the transaction fails before it is committed, these copies are used to restore the database to the state it was in before the transaction began.<h3><span class=mw-headline id=Rollforward> Rollforward </span></h3><p>It is also possible to keep a separate journal of all modifications to a database (sometimes called <i> after images); </i> this is not required for rollback of failed transactions, but it is useful for updating the database in the event of a database failure, so some transaction-processing systems provide it. If the database fails entirely, it must be restored from the most recent back-up. The back-up will not reflect transactions committed since the back-up was made. However, once the database is restored, the journal of after images can be applied to the database ( <i> rollforward) </i> to bring the database up to date. Any transactions in progress at the time of the failure can then be rolled back. The result is a database in a consistent, known state that includes the results of all transactions committed up to the moment of failure.<h3><span class=mw-headline id=Deadlocks> Deadlocks </span></h3><p>In some cases, two transactions may, in the course of their processing, attempt to access the same portion of a database at the same time, in a way that prevents them from proceeding. For example, transaction A may access portion X of the database, and transaction B may access portion Y of the database. If, at that point, transaction A then tries to access portion Y of the database while transaction B tries to access portion X, a <i> deadlock </i> occurs, and neither transaction can move forward. Transaction-processing systems are designed to detect these deadlocks when they occur. Typically both transactions will be cancelled and rolled back, and then they will be started again in a different order, automatically, so that the deadlock doesn't occur again. Or sometimes, just one of the deadlocked transactions will be cancelled, rolled back, and automatically re-started after a short delay.<p>Deadlocks can also occur between three or more transactions. The more transactions involved, the more difficult they are to detect, to the point that transaction processing systems find there is a practical limit to the deadlocks they can detect.<h3><span class=mw-headline id=Compensating_transaction> Compensating transaction </span></h3><p>In systems where commit and rollback mechanisms are not available or undesirable, a <a href=4075203> Compensating transaction </a> is often used to undo failed transactions and restore the system to a previous state.<h2><span class=mw-headline id=ACID_criteria_.28Atomicity.2C_Consistency.2C_Isolation.2C_Durability.29> ACID criteria (Atomicity, Consistency, Isolation, Durability) </span></h2><div class="rellink relarticle mainarticle">Main article: <a href=61> ACID </a></div><p>Transaction processing has these benefits:<ul><li>It allows sharing of computer resources among many users<li>It shifts the time of job processing to when the computing resources are less busy<li>It avoids idling the computing resources without minute-by-minute human interaction and supervision<li>It is used on expensive classes of computers to help amortize the cost by keeping high rates of utilization of those expensive resources<li>A transaction is an atomic unit of processing.</ul><h2><span class=mw-headline id=Implementations> Implementations </span></h2><div class="rellink relarticle mainarticle">Main article: <a href=1801154> Transaction processing system </a></div><p>Standard transaction-processing software, notably <a href=10747269> IBM </a> 's Information Management System, was first developed in the 1960s, and was often closely coupled to particular <a href=4941> database management systems </a> . <a href=11553228> client–server computing </a> implemented similar principles in the 1980s with mixed success. However, in more recent years, the distributed client–server model has become considerably more difficult to maintain. As the number of transactions grew in response to various online services (especially the Web), a single distributed database was not a practical solution. In addition, most online systems consist of a whole suite of programs operating together, as opposed to a strict client–server model where the single server could handle the transaction processing. Today a number of transaction processing systems are available that work at the inter-program level and which scale to large systems, including <a href=12279> mainframes </a> .<p>An important open industry standard is the X/Open Distributed Transaction Processing (DTP) (see <a href=27270> JTA </a> ). However, proprietary transaction-processing environments such as IBM's <a href=223363> CICS </a> are still very popular, although CICS has evolved to include open industry standards as well.<p>A modern transaction processing implementation combines elements of both object-oriented persistence with traditional transaction monitoring. One such implementation is the commercial DTS/S1 product from Obsidian Dynamics, or the open-source product <a href=11601486> db4o </a> .<h2><span class=mw-headline id=See_also> See also </span></h2><ul><li><a href=61> ACID </a><li><a href=4611798> ACMS </a><li><a href=25702> Audit trail </a><li><a href=223363> CICS </a><li><a href=4075203> Compensating transaction </a><li>Concurrent programming<li><a href=147837> Database transaction </a><li><a href=8723446> Extreme Transaction Processing </a> (XTP)<li><a href=4607893> IBM TXSeries </a> (CICS on distributed platforms)<li>IMS<li>Java EE (e.g. WebSphere Application Server)<li><a href=27270> Java Transaction API </a> (JTA)<li>Two-phase commit<li><a href=18663> Transaction Processing Facility </a><li><a href=566573> Tuxedo (software) </a><li><a href=1700565> Transaction Processing Management System </a> (TPMS)<li><a href=10047301> Transaction Processing Performance Council </a> (TPC)<li>Telecommunication Application Transaction Processing Benchmark (TATP)</ul><h2><span class=mw-headline id=External_references> External references </span></h2><ul><li><a class="external text"href=http://www.subbu.org/articles/nuts-and-bolts-of-transaction-processing rel=nofollow> Nuts and Bolts of Transaction Processing </a></ul><h2><span class=mw-headline id=Further_reading> Further reading </span></h2><ul><li>Gerhard Weikum, Gottfried Vossen, <i> Transactional information systems: theory, algorithms, and the practice of concurrency control and recovery </i> , Morgan Kaufmann, 2002, <a class="internal mw-magiclink-isbn"href=/wiki/Special:BookSources/1558605088> ISBN 1558605088 </a><li><a href=185005> Jim Gray </a> , Andreas Reuter, Transaction Processing — Concepts and Techniques, 1993, Morgan Kaufmann, <a class="internal mw-magiclink-isbn"href=/wiki/Special:BookSources/1558601902> ISBN 1-55860-190-2 </a><li>Philip A. Bernstein, Eric Newcomer, Principles of Transaction Processing, 1997, Morgan Kaufmann, <a class="internal mw-magiclink-isbn"href=/wiki/Special:BookSources/1558604154> ISBN 1-55860-415-4 </a><li>Ahmed K. Elmagarmid (Editor), Transaction Models for Advanced Database Applications, Morgan-Kaufmann, 1992, <a class="internal mw-magiclink-isbn"href=/wiki/Special:BookSources/1558602143> ISBN 1-55860-214-3 </a></ul><table cellspacing=0 class=navbox style=;><tbody><tr><td style=padding:2px;><table class="nowraplinks collapsible autocollapse"cellspacing=0 style=width:100%;background:transparent;color:inherit;;><tbody><tr><th class=navbox-title colspan=2 style=;><span style=float:left;width:6em;text-align:left;> <span class="noprint plainlinks navbar"> <span style=white-space:nowrap;word-spacing:-.12em;> <a href=#> <span style=";;background:none transparent;border:none;font-size:100%;"title="View this template"> v </span> </a> <span style=";;background:none transparent;border:none;font-size:100%;"> <b> · </b> </span> <a href=#> <span style=";;background:none transparent;border:none;font-size:100%;"title="Discuss this template"> d </span> </a> <span style=";;background:none transparent;border:none;font-size:100%;"> <b> · </b> </span> <a class="external text"href=//en.wikipedia.org/w/index.php?title=Template:Databases&action=edit> <span style=";;background:none transparent;border:none;font-size:100%;"title="Edit this template"> e </span> </a> </span> </span> </span> <span style=font-size:110%;> <a href=4941> Database management systems </a> </span><tr style=height:2px;><td style="text-align: left;"><tr><td class="navbox-abovebelow hlist"colspan=2 style=;><div><ul><li><a href=11616178> Database models </a><li><a href=5021> Database normalization </a><li><a href=5965863> Database storage </a><li><a href=958225> Distributed DBMS </a><li><a href=635467> Federated database system </a><li><a href=250100> Referential integrity </a><li><a href=118027> Relational algebra </a><li><a href=118336> Relational calculus </a><li><a href=15864> Relational database </a><li><a href=60070> Relational DBMS </a><li><a href=16079> Relational model </a><li><a href=43051> Object-relational database </a><li><strong class=selflink> Transaction processing </strong></ul></div><tr style=height:2px;><td style="text-align: left;"><tr><td class=navbox-group style=;;>Concepts<td class="navbox-list navbox-odd hlist"style=text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;><div style="padding:0em 0.25em"><ul><li><a href=4849> Database </a><li><a href=61> ACID </a><li><a href=174915> CRUD </a><li><a href=963195> Null </a><li><a href=199000> Candidate key </a><li><a href=159903> Foreign key </a><li>Primary key<li><a href=569784> Superkey </a><li><a href=263746> Surrogate key </a><li><a href=1623211> Armstrong's axioms </a><li><a href=11825524> NoSQL </a></ul></div><tr style=height:2px><td style="text-align: left;"><tr><td class=navbox-group style=;;>Objects<td class="navbox-list navbox-even hlist"style=text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;><div style="padding:0em 0.25em"><ul><li>Relation ( <a href=825325> Table </a> )<li><a href=944739> View </a><li><a href=147837> Transaction </a><li><a href=153785> Log </a><li><a href=683245> Trigger </a><li><a href=829873> Index </a><li><a href=168441> Stored procedure </a><li><a href=1008122> Cursor </a><li><a href=955156> Partition </a></ul></div><tr style=height:2px><td style="text-align: left;"><tr><td class=navbox-group style=;;>Components<td class="navbox-list navbox-odd hlist"style=text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;><div style="padding:0em 0.25em"><ul><li><a href=139849> Concurrency control </a><li><a href=345340> Data dictionary </a><li><a href=27268> JDBC </a><li><a href=114135> ODBC </a><li><a href=274662> Query language </a><li><a href=839726> Query optimizer </a><li><a href=829742> Query plan </a></ul></div><tr style=height:2px;><td style="text-align: left;"><tr><td class="navbox-abovebelow hlist"colspan=2 style=;><div><p><b> Database products: </b><ul><li><a href=763313> Object-oriented </a> ( <a href=775139> comparison </a> )<li><a href=763300> Relational </a> ( <a href=763398> comparison </a> )<li><a href=8418053> Document-oriented </a></ul></div></table></table></div> <div class=catlinks id=catlinks><div id=mw-normal-catlinks>Categories: <ul><li>Database management systems<li>Databases<li><a href=137406> Transaction processing </a></ul></div></div></dd><br><p class=src id=TerminSourceInfo><em> <span itemprop=source> Wikimedia Foundation </span> . <span itemprop=source-date> 2010 </span> . </em></div></dl></div><div style="padding:5px 0px;"><b> <a title="онлайн-сервис помощи студентам"href=https://homework.academic.ru> Нужно решить контрольную? </a> </b></div><div id=socialBar_h></div><ul class=post-nav id=TerminsNavigationBar><li class=prev><a title="Gilbert Islands"href=https://en-academic.com/dic.nsf/enwiki/137405> Gilbert Islands </a><li class=next><a title="Lake Winnipesaukee"href=https://en-academic.com/dic.nsf/enwiki/137407> Lake Winnipesaukee </a></ul><div class=other-info><div class=holder><h3 class=dictionary>Look at other dictionaries:</h3><ul class=terms-list><li><p><strong> <a href=//business_finance.en-academic.com/25844/transaction_processing> transaction processing </a> </strong> — ➔ processing * * * transaction processing UK US noun [U] ► IT the use of a computer system to organize transactions (= actions that change information) in a database ► COMMERCE the system used by a company to deal with its sales: »The Service… …   <span class=src2> Financial and business terms </span></p><li><p><strong> <a href=//useful_english.en-academic.com/461901/transaction_processing> transaction processing </a> </strong> — noun (computing) The use of an online computer to interrogate or update files in real time • • • Main Entry: ↑transact …   <span class=src2> Useful english dictionary </span></p><li><p><strong> <a href=//networking_en.en-academic.com/3087/transaction_processing> transaction processing </a> </strong> —    A processing method in which transactions are executed immediately when they are received by the system, rather than at some later time as in batch processing systems. Airline reservation databases and automatic teller machines are examples of …   <span class=src2> Dictionary of networking </span></p><li><p><strong> <a href=//en-academic.com/dic.nsf/enwiki/6596974> Transaction Processing over XML </a> </strong> — (TPoX) is a computing benchmark for XML database systems. As a benchmark, TPoX is used for the performance testing of database management systems that are capable of storing, searching and retrieving XML data. The goal of TPoX is to allow… …   <span class=src2> Wikipedia </span></p><li><p><strong> <a href=//en-academic.com/dic.nsf/enwiki/10047301> Transaction Processing Performance Council </a> </strong> — (TPC) is a non profit organization founded in 1988 to define transaction processing and database benchmarks and to disseminate objective, verifiable TPC performance data to the industry. TPC benchmarks are widely used today in evaluating the… …   <span class=src2> Wikipedia </span></p><li><p><strong> <a href=//de-academic.com/dic.nsf/dewiki/1407776> Transaction Processing Facility </a> </strong> — (TPF) ist ein Echtzeitbetriebssystem für die IBM Großrechner der System/360 und der System z Familien. TPF wurde aus dem Airline Control Program (ACP) von IBM und mehreren nordamerikanischen und europäischen Fluggesellschaften entwickelt. 1979… …   <span class=src2> Deutsch Wikipedia </span></p><li><p><strong> <a href=//de-academic.com/dic.nsf/dewiki/1407778> Transaction Processing over XML </a> </strong> — (TPoX) ist die Bezeichnung eines von der IBM entwickelten Benchmarks zur Performancemessung von XML Datenbanken. Die Version 1.0 der Spezifikation wurde im Dezember 2006 vorgestellt, Version 2.0 folgte im Juni 2009. Weblinks TPoX bei… …   <span class=src2> Deutsch Wikipedia </span></p><li><p><strong> <a href=//en-academic.com/dic.nsf/enwiki/1801154> Transaction processing system </a> </strong> — A Transaction Processing System To be considered a transaction processing system the computer must pass the ACID test.From a technical perspective, a Transaction Processing System (or Transaction Processing Monitor) monitors transaction programs …   <span class=src2> Wikipedia </span></p><li><p><strong> <a href=//en-academic.com/dic.nsf/enwiki/18663> Transaction Processing Facility </a> </strong> — Infobox OS name = z/TPF caption = developer = IBM source model = Closed source (Source code is available to licenced users with restrictions) kernel type = Real time supported platforms = ? ui = ? family = z/TPF released = latest release version …   <span class=src2> Wikipedia </span></p><li><p><strong> <a href=//fr-academic.com/dic.nsf/frwiki/2151050> Transaction Processing Performance Council </a> </strong> — Le Transaction Processing Performance Council (TPC) est un organisme a but non lucratif[1] dont l activité consiste à élaborer des tests de performance de systèmes informatiques transactionnels. Les éditeurs publient régulièrement les records… …   <span class=src2> Wikipédia en Français </span></p></ul></div></div></div></div><div id=ad_bottom></div><div id=footer><div id=liveinternet><a href=https://www.liveinternet.ru/click;academic target=_blank> <img alt height=31 id=licntC2FD src=data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAIBTAA7 style=border:0 title=LiveInternet width=31> </a><script>(function(d,s){d.getElementById("licntC2FD").src=
            "https://counter.yadro.ru/hit;academic?t44.6;r"+escape(d.referrer)+
            ((typeof(s)=="undefined")?"":";s"+s.width+"*"+s.height+"*"+
            (s.colorDepth?s.colorDepth:s.pixelDepth))+";u"+escape(d.URL)+
            ";h"+escape(d.title.substring(0,150))+";"+Math.random()})
            (document,screen)</script></div><div id=restrictions>18+</div> © Academic, 2000-2021 <ul><li>Contact us: <a href=# id=m_s> Technical Support </a> , <a href=# id=m_a> Advertising </a></ul><div><a href=//partners.academic.ru/partner_proposal.php> Dictionaries export </a> , created on PHP, <div class="img joom"></div> Joomla, <div class="img drp"></div> Drupal, <div class="img wp"></div> WordPress, MODx.</div></div><div id=contextmenu><ul id=context-actions><li><a data-in=masha> Mark and share </a><li class=separator><li><a data-in=academic> Search through all dictionaries </a><li><a data-in=translate> Translate… </a><li><a data-in=internet> Search Internet </a></ul><ul id=context-suggestions></ul></div><div style="top: 1075px; left: 240px;"id=sharemenu><h3>Share the article and excerpts</h3><ul class=smm><li class=vk><a onclick="share('vk'); return false;"href=#> </a><li class=ok><a onclick="share('ok'); return false;"href=#> </a><li class=fb><a onclick="share('fb'); return false;"href=#> </a><li class=tw><a onclick="share('tw'); return false;"href=#> </a><li class=gplus><a onclick="share('g+'); return false;"href=#> </a><li class=mailru><a onclick="share('mail.ru'); return false;"href=#> </a><li class=lj><a onclick="share('lj'); return false;"href=#> </a><li class=li><a onclick="share('li'); return false;"href=#> </a></ul><div id=share-basement><h5>Direct link</h5><a href id=share-directlink> … </a><small> Do a right-click on the link above <br> and select “Copy Link” </small></div></div><script async src=/js/academic.min.js?20210723></script><div id=ad_right><div class=banner><div id=ACD_ATFR_300n></div></div><div class="banner sticky"><div id=ACD_MIDR_300c></div></div></div></div><div id=div-gpt-ad-bottom><script>googletag.cmd.push(function() { googletag.display('div-gpt-ad-bottom'); });</script></div><div id=div-gpt-ad-4fullscreen></div><script>(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(70309897, "init", {
        clickmap:false,
        trackLinks:true,
        accurateTrackBounce:false
   });</script><noscript><div><img style="position:absolute; left:-9999px;"alt src=https://mc.yandex.ru/watch/70309897></div></noscript><script>var _comscore = _comscore || [];
  _comscore.push({ c1: "2", c2: "23600742" });
  (function() {
    var s = document.createElement("script"), el = document.getElementsByTagName("script")[0]; s.async = true;
    s.src = (document.location.protocol == "https:" ? "https://sb" : "http://b") + ".scorecardresearch.com/beacon.js";
    el.parentNode.insertBefore(s, el);
  })();</script><noscript><img src=//b.scorecardresearch.com/p?c1=2&c2=23600742&cv=2.0&cj=1></noscript><link href=/css/academic_v2.css?20210501a rel=stylesheet><link href=/css/mobile-menu.css?20190810 rel=stylesheet>