История сайта

Параллельное управление процессами в базе данных

4. Проблемы параллельного выполнения процессов, модифицирующих БД. Пессимистическое и оптимистическое управление параллельным управлением.

Современные СУБД являются многопользовательскими системами, т.е. допускают параллельную одновременную работу большого количества пользователей. При этом пользователи не должны мешать друг другу.

Если несколько пользователей одновременно обращаются к БД при отсутствии блокировок, возможны ошибки при одновременном использовании в их транзакциях одних и тех же данных. Проблемы с параллельным выполнением бывают следующие:

• потерянные или «скрытые» обновления;

• зависимость от незафиксированных данных («грязное чтение»);

• несогласованный анализ (неповторяемое чтение);

• чтение фантомов.

Потерянные обновления

Потерянные обновления появляются при выборе одной строки двумя или более транзакциями, которые затем обновляют эту строку на основе ее первоначального значения. Ни у одной из транзакций нет сведений о действиях, выполненных другими транзакциями. Поэтому последнее обновление записывается поверх обновлений, сделанных другими транзакциями, что приводит к потере данных.

Зависимость от незафиксированных данных («грязное чтение»)

Зависимость от незафиксированных данных возникает, когда вторая транзакция выбирает строку, которую в это время обновляет первая транзакция. Таким образом, вторая транзакция читает еще не зафиксированные данные, которые могут быть изменены первой транзакцией.

Несогласованный анализ (неповторяемое чтение)

Несогласованным анализом называется ситуация, когда вторая транзакция несколько раз обращается к той же строке, что и первая, однако от раза к разу данные меняются. Несогласованный анализ напоминает неподтвержденную зависимость тем, что первая транзакция изменяет данные, которые читает вторая транзакция. Однако при несогласованном анализе первая транзакция подтверждает изменение этих данных. Кроме того, при несогласованном анализе происходит многократное {двукратное или больше) чтение второй транзакцией одной и той же строки с разными данными (отсюда термин «неповторяемое чтение»).

Чтение фантомов

Так называется ситуация, когда строки из диапазона строк, читаемого во время транзакции, добавляются или удаляются. Первая операция чтения, исполняемая во время транзакции, показывает наличие в прочитанном диапазоне некоторой строки. Если другая транзакция удалит ее, то эта строка не будет обнаружена, когда диапазон будет прочитан в следующий раз. Аналогично, если другая транзакция добавляет в читаемый диапазон строку после первого чтения, эта строка обнаружится только при повторном чтении.

Параллельная работа

Когда множество пользователей одновременно пытаются модифицировать данные в БД, необходимо создать систему управления, которая защитила бы модификации, выполненные одним пользователем, от негативного воздействия модификаций, сделанных другими. Этот процесс называется управлением параллельным выполнением.

Существуют два типа управления параллельным выполнением.

Пессимистическое управление параллельным выполнением. Система блокировок не разрешает пользователям выполнить модификации, влияющие на других пользователей. Если пользователь выполнил какое-либо действие, в результате которого установлена блокировка, то другим пользователям не удастся выполнять действия, конфликтующие с установленной блокировкой, пока владелец не освободит ее. Этот процесс называется пессимистическим управлением. Он используется главным образом в средах, где высока конкуренция за данные.

Оптимистическое управление параллельным выполнением. При этом способе управления пользователи не блокируют данные при чтении. Во время обновления система следит, не изменил ли другой пользователь данные после их прочтения. Если другой пользователь модифицировал данные, генерируется ошибка. Как правило, получивший ошибку пользователь, откатывает транзакцию и повторяет операцию снова. Этот способ управления в основном используется в средах с низкой конкуренцией за данные.

SQL Server поддерживает различные механизмы оптимистического и пессимистического управления параллельным выполнением. Пользователю предоставляется право определить тип управления параллельным выполнением, установив уровень изоляции транзакции для соединения и параметры параллельного выполнения для курсоров. Эти атрибуты задают посредством операторов Transact-SQL или через свойства и атрибуты API БД; например ADO, OLE DB и ODBC.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Реклама от гугла
Новости Белогорья Недавние статьи</div> </div><div class="art-blockcontent"> <ul> <li> <a href="http://vapankov.ru/?p=44961">Два пьяных водителя попались за рулём одной и той же «семёрки» за ночь</a> </li> <li> <a href="http://vapankov.ru/?p=44962">Под новый год россияне заняли в МФО на 12,6 % больше денег, чем осенью</a> </li> <li> <a href="http://vapankov.ru/?p=44963">Индексация выплат, загранпаспорт в МФЦ и новые кредиты – с 1 февраля в России</a> </li> <li> <a href="http://vapankov.ru/?p=44964">100-летие со дня образования Ленинского комсомола отметят в Белгороде</a> </li> <li> <a href="http://vapankov.ru/?p=44965">Артём Семейкин не прибыл на первый сбор «Энергомаша»</a> </li> </ul> </div> </div><div id="meta-2" class="art-block widget widget_meta clearfix"> <div class="art-blockheader"> <div class="t">Мета</div> </div><div class="art-blockcontent"> <ul> <li><a href="http://vapankov.ru/wp-login.php?action=register">Регистрация</a></li> <li><a href="http://vapankov.ru/wp-login.php">Войти</a></li> <li><a href="http://vapankov.ru/?feed=rss2"><abbr title="Really Simple Syndication">RSS</abbr> записей</a></li> <li><a href="http://vapankov.ru/?feed=comments-rss2"><abbr title="Really Simple Syndication">RSS</abbr> комментариев</a></li> <li><a href="https://ru.wordpress.org/" title="Сайт работает на WordPress — современной персональной платформе для публикаций.">WordPress.org</a></li> </ul> </div> </div> </div> </div> </div> </div><footer class="art-footer clearfix"><p><a href="http://vapankov.ru/?feed=rss2" class="art-rss-tag-icon" title="Сайт Василия Панкова RSS Feed" style="float: left; line-height: 0px;"></a></p> <a href="#">Link1</a> | <a href="#">Link2</a> | <a href="#">Link3</a></p> <p>Copyright © 2011 - 2018гг. All Rights Reserved.</p> <!--LiveInternet counter--><script type="text/javascript"><!-- document.write("<a href='http://www.liveinternet.ru/click' "+ "target=_blank><img src='//counter.yadro.ru/hit?t16.3;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+ ";"+Math.random()+ "' alt='' title='LiveInternet: показано число просмотров за 24"+ " часа, посетителей за 24 часа и за сегодня' "+ "border='0' width='88' height='31'><\/a>") //--></script><!--/LiveInternet--> <!-- Yandex.Metrika informer --> <a href="https://metrika.yandex.ru/stat/?id=25737512&from=informer" target="_blank" rel="nofollow"><img src="//bs.yandex.ru/informer/25737512/3_1_B8BBFFFF_989BF0FF_0_pageviews" style="width:88px; height:31px; border:0;" alt="Яндекс.Метрика" title="Яндекс.Метрика: данные за сегодня (просмотры, визиты и уникальные посетители)" onclick="try{Ya.Metrika.informer({i:this,id:25737512,lang:'ru'});return false}catch(e){}"/></a> <!-- /Yandex.Metrika informer --> <!-- Yandex.Metrika counter --> <script type="text/javascript"> (function (d, w, c) { (w[c] = w[c] || []).push(function() { try { w.yaCounter25737512 = new Ya.Metrika({id:25737512, clickmap:true, trackLinks:true, accurateTrackBounce:true}); } catch(e) { } }); var n = d.getElementsByTagName("script")[0], s = d.createElement("script"), f = function () { n.parentNode.insertBefore(s, n); }; s.type = "text/javascript"; s.async = true; s.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//mc.yandex.ru/metrika/watch.js"; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window, "yandex_metrika_callbacks"); </script> <noscript><div><img src="//mc.yandex.ru/watch/25737512" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --></footer> </div> <p class="art-page-footer"> <span id="art-footnote-links">Designed by Василий.</span> </p> </div> <div id="wp-footer"> <script type='text/javascript' src='http://vapankov.ru/wp-content/plugins/si-captcha-for-wordpress/captcha/si_captcha.js?ver=1.0'></script> <script type="text/javascript"> //<![CDATA[ var si_captcha_styles = "\ <!-- begin SI CAPTCHA Anti-Spam - comment form style -->\ <style type='text/css'>\ div#captchaImgDiv { display:block; }\ .captchaSizeDivSmall { width:175px; height:45px; padding-top:10px; }\ .captchaSizeDivLarge { width:250px; height:60px; padding-top:10px; }\ img#si_image_com,#si_image_reg,#si_image_log,#si_image_side_login { border-style:none; margin:0; padding-right:5px; float:left; }\ .captchaImgRefresh { border-style:none; margin:0; vertical-align:bottom; }\ div#captchaInputDiv { display:block; padding-top:15px; padding-bottom:5px; }\ label#captcha_code_label { margin:0; }\ input#captcha_code { width:65px; }\ </style>\ <!-- end SI CAPTCHA Anti-Spam - comment form style -->\ "; jQuery(document).ready(function($) { $('head').append(si_captcha_styles); }); //]]> </script> <script type='text/javascript'>jQuery(document).ready(function(){ jQuery('a.colorbox').colorbox({iframe:true, width:'80%', height:'80%'});jQuery('a.rssmi_youtube').colorbox({iframe:true, innerWidth:425, innerHeight:344})});</script><!-- Scroll Triggered Boxes v2.2.1 - https://wordpress.org/plugins/scroll-triggered-boxes/--> <div class="stb-container stb-top-left-container"> <div class="scroll-triggered-box stb stb-342 stb-top-left" id="stb-342" style="display: none;"> <div class="stb-content"> <p><strong><span style="color: #ff0000;">ВНИМАНИЕ! САНКЦИИ!</span></strong></p> <p>Санкции введены ТОЛЬКО в отношении Барака Обамы! <span style="color: #ff0000;"><strong>Бараку</strong></span> <span style="color: #ff0000;"><strong>ЗАПРЕЩЕНО посещать этот сайт!!!</strong></span></p> <p><strong><span style="color: #ff0000;">ATTENTION! SANCTIONS!</span></strong></p> <p>Sanctions were imposed ONLY in respect of Barack Obama! <span style="color: #ff0000;"><strong>Barack NOT visit this site!!!</strong></span></p> <p> </p> <p><span style="color: #0000ff;">После закрытия этого окна, оно сегодня больше не появится.</span></p> <p><span style="color: #0000ff;">After closing this window, it will not show up today.</span></p> </div> <span class="stb-close">×</span> </div> </div> <div id="stb-overlay"></div><!-- / Scroll Triggered Box --><script type='text/javascript' src='http://vapankov.ru/wp-content/plugins/akismet/_inc/form.js?ver=3.1.11'></script> <link rel='stylesheet' id='wprssmi_colorbox-css' href='http://vapankov.ru/wp-content/plugins/wp-rss-multi-importer/css/colorbox.css?ver=4.5.16' type='text/css' media='all' /> <link rel='stylesheet' id='frontend-css' href='http://vapankov.ru/wp-content/plugins/wp-rss-multi-importer/css/frontend.css?ver=4.5.16' type='text/css' media='all' /> <script type='text/javascript' src='http://vapankov.ru/wp-includes/js/comment-reply.min.js?ver=4.5.16'></script> <script type='text/javascript'> /* <![CDATA[ */ var STB_Global_Options = {"testMode":""}; var STB_Box_Options = {"342":{"id":342,"title":"\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435 ! \u0421\u0430\u043d\u043a\u0446\u0438\u0438! Attention! Sanctions!","trigger":"percentage","triggerPercentage":0,"triggerElementSelector":"","animation":"fade","cookieTime":1,"autoHide":false,"autoShow":true,"position":"top-left","minimumScreenWidth":0,"unclosable":false}}; /* ]]> */ </script> <script type='text/javascript' src='http://vapankov.ru/wp-content/plugins/scroll-triggered-boxes/assets/js/script.min.js?ver=2.2.1'></script> <script type='text/javascript' src='http://vapankov.ru/wp-includes/js/wp-embed.min.js?ver=4.5.16'></script> <script type='text/javascript' src='http://vapankov.ru/wp-content/plugins/wp-rss-multi-importer/scripts/jquery.colorbox-min.js?ver=4.5.16'></script> <script type='text/javascript' src='http://vapankov.ru/wp-content/plugins/wp-rss-multi-importer/scripts/detect-mobile.js?ver=4.5.16'></script> <script type='text/javascript' src='http://vapankov.ru/wp-content/plugins/wp-rss-multi-importer/scripts/show-excerpt.js?ver=4.5.16'></script> <!-- 47 queries. 0,478 seconds. --> </div> </body> </html>