Библиотека Рефераты Курсовые Дипломы Поиск
Библиотека Рефераты Курсовые Дипломы Поиск
сделать стартовой добавить в избранное
Кефирный гриб на сайте www.za4et.net.ru

Компьютеры, Программирование Компьютеры, Программирование

Блокировки в MS SQL Server 2000

Чашка "Неваляшка".
Ваши дети во время приёма пищи вечно проливают что-то на ковёр и пол, пачкают руки, а Вы потом тратите уйму времени на выведение пятен с
222 руб
Раздел: Тарелки
Фонарь садовый «Тюльпан».
Дачные фонари на солнечных батареях были сделаны с использованием технологии аккумулирования солнечной энергии. Уличные светильники для
106 руб
Раздел: Уличное освещение
Забавная пачка "5000 дублей".
Юмор – настоящее богатство! Купюры в пачке выглядят совсем как настоящие, к тому же и банковской лентой перехвачены... Но вглядитесь
60 руб
Раздел: Прочее

Алексей Ширшов Введение Обычно блокировки рассматривают совместно с транзакциями. В данной статье упор делается в основном на механизм блокировок, его внутреннее устройство и использование в СУБД MS SQL Server 2000. Предполагается, что читатель хорошо знаком с транзакциями и их свойствами. Давайте вспомним вкратце, какими свойствами должны обладать транзакции в современных СУБД (эти требования носят название ACID – A omici y, Co sis e cy, Isola io и Durabili y): A omici y (атомарность). Это требование заключается в том, что все данные, с которыми работает транзакция, должны быть либо подтверждены (commi ), либо отменены (rollback). Не должно быть ситуации, когда часть изменений подтверждается, а часть – отменяется. Это правило автоматически выполняется для простых данных. Co sis e cy (согласованность). После выполнения транзакции все данные должны остаться в согласованном состоянии. Другими словами, транзакция либо не изменит данных, и они останутся в прежнем состоянии, либо измененные данные будут удовлетворять ограничениям целостности, правилам (rules) и другим критериям согласованности данных. Isola io (изолированность). Транзакции должны выполнятся автономно и независимо от других транзакций. При одновременном выполнении множества конкурирующих друг с другом транзакций, любое обновление определенной транзакции будет скрыто от остальных до тех пор, пока эта транзакция не будет зафиксирована. Существуют несколько уровней изолированности (изоляции) транзакций, которые позволяют выбрать наиболее оптимальное решение с точки зрения производительности и целостности данных. Основным методом реализации этих уровней и являются блокировки, о которых пойдет речь в этой статье. Durabili y (долговечность или устойчивость). Это требование заключается в том, что после подтверждения изменения данных (фиксации транзакции) система переходит в новое состояние и возврат к старому состоянию не возможен, т.е. не возможен откат в предыдущее состояние. Для вложенных транзакций это требование нарушается. В данной статье рассматриваются механизмы реализации уровней изолированности транзакции. Стандартом A SI были определены четыре уровня изоляции транзакций. Первый – это нулевой уровень изоляции, второй – первый уровень и так далее. Эти уровни помогают решать различные проблемы, которые будут рассматриваться подробно далее в процессе написания демонстрационной программы на С . Определения уровней будут даны в конце раздела. Итак, чтобы лучше понять проблемы изоляции транзакций, рассмотрим их сначала с точки зрения программирования на С . Так как наша программа будет оперировать простыми данными (значение типа i ), будем считать, что требования атомарности выполняются автоматически. Кроме того, мы не будем налагать каких-либо логических ограничений на значение переменной и не будем использовать вложенных транзакций, так что требования согласованности и устойчивости также будут опущены. Наша программа содержит всего два класса: CObjec и CProxy. Класс CObjec - это объект-одиночка (si gle o ), который содержит переменную value (доступ к этой переменной мы и будем защищать), и некоторый набор служебных функций.

Класс CProxy представляет собой посредника для объекта CObjec ; именно с ним будет работать клиент. Вот первоначальный набросок (в классе CProxy используется нестандартная конструкция declspec(proper y), поддерживаемая только компиляторами от Microsof ): class CObjec ; class CProxy {  frie d class CObjec ; public: i value;  i ge Value(i level = -1) co s ;  void pu Value(i i);  void Commi ();  void Rollback(); priva e:  i level;  i value;  bool fUpd;  CProxy(CObjec par,i level)  {   fUpd = false;   pare = par;   level = level;  }  CObjec pare ; }; class CObjec {  frie d class CProxy; public:  s a ic CProxy& Ge Objec (i level = -1);  ~CObjec ()  {   if (hMu ex) CloseHa dle(hMu ex);  } pro ec ed:  CProxy& Begi ra (i level)  {   re ur ( ew CProxy( his,level));  }  void Reques Exclusive(i level)  {  }    void Reques Shared(i level)  {  }  void RemoveShared(i level)  {  }  void RemoveLocks()  {  } priva e:  CObjec ()  {   value = 0;  }  i value;  s a ic HA DLE hMu ex; }; declspec(selec a y) HA DLE CObjec ::hMu ex = ULL; CProxy& CObjec ::Ge Objec (i level) {  HA DLE hLocMu ex = Crea eMu ex( ULL, RUE, ("Guard-Lock-Mu ex"));  bool flg = Ge Las Error() == ERROR ALREADY EXIS S;    if (flg) Wai ForSi gleObjec (hLocMu ex,I FI I E);  else CObjec ::hMu ex = hLocMu ex;  s a ic CObjec obj;  ReleaseMu ex(hLocMu ex);    if (flg) CloseHa dle(hLocMu ex);  re ur obj.Begi ra (level); } void CProxy::Commi () {  pare ->RemoveLocks();  dele e his; } void CProxy::Rollback() {  if (fUpd)   pare ->value = value;  pare ->RemoveLocks();  dele e his; } void CProxy::pu Value(i i) {  pare ->Reques Exclusive( level);  if (!fUpd)   value = pare ->value;  pare ->value = i;  fUpd = rue; } i CProxy::ge Value(i level) co s {  if (level == -1)   level = level;  pare ->Reques Shared(level);  i v = pare ->value;  pare ->RemoveShared(level);  re ur v; } Клиент никогда не имеет дела непосредственно с экземпляром класса CObjec . Экземпляры класса CProxy – представляют копию данных объекта CObjec и делегируют запросы на чтение и запись переменной value. Код получился несколько громоздким: к чему такие сложности? Я заранее определил довольно широкий интерфейс, чтобы потом меньше исправлять. :) Прошу обратить внимание на довольно сложный механизм создания экземпляра CObjec в функции Ge Objec . Обычно в программах используется более простой код, типа: CProxy& CObjec ::Ge Objec (i level) {  s a ic CObjec obj;  re ur obj.Begi ra (level); } Чем он плох? Дело в том, что если несколько потоков попытаются одновременно вызвать функцию Ge Objec , конструктор класса CObjec может быть вызван более одного раза, так как компилятор (возможно, это его ошибка) не генерирует безопасный код проверки с использованием ассемблерной инструкции cmpxchg. Хотя вероятность возникновения такой ситуации довольно низка, я рекомендую все же не игнорировать ее. Самое простое решение проблемы заключается в использовании недорогого ресурса критической секции, например, так: CProxy& CObjec ::Ge Objec (i level) {  ::E erCri icalSec io (&g cs);  s a ic CObjec obj;  ::LeaveCri icalSec io (&g cs);  re ur obj.B

egi ra (level); } Однако встает вопрос: где ее инициализировать? Можно в конструкторе глобального объекта, но если у нас будет такой же глобальный клиент, мы не сможем гарантировать, что инициализация критической секции произойдет раньше вызова функции Ge Objec . Нам нужно что-то, что создается, инициализируется и захватывает ресурс непосредственно в функции Ge Objec . В качестве этого «чего-то» я выбрал объект исполнительной системы «Мьютекс». Его использование вы и можете наблюдать в первоначальном коде. Теперь рассмотрим пример с использованием этих классов, который сразу вскрывает первую проблему. u sig ed s dcall hread proc(void ) { // Начало транзакции  CProxy& prx = CObjec ::Ge Objec ();  prx.value = 20;  prx.Commi ();  re ur 0; } i mai (i argc, char argv[]) { // Начало транзакции  CProxy& prx = CObjec ::Ge Objec ();  prx.value = 10; // Начало новой сессии   begi hreadex(0,0, hread proc,0,0,0); // Эмулируем работу // Sleep(1000);  pri f("%d ",prx.value);  prx.Commi ();  re ur 0; } Здесь я в двух параллельных потоках изменяю значение переменной value объекта CObjec : в одном – на 10, во втором – на 20. Что выведется на консоль? Определенно сказать нельзя: если раскомментировать строчку Sleep(1000), выведется 20. С закомментированной строчкой выводится 10. Эта проблема носит название «проблема потери последнего изменения» (los upda e problem) или проблема «грязной» записи. Она заключается в том, что при одновременном выполнении транзакций, в которых производится изменение данных, невозможно сказать заранее, какое конечное значение примут данные после фиксирования обеих транзакций. В случае «грязной» записи только одна из всех параллельно выполняющихся транзакций будет работать с действительными данными, остальные – нет. Другими словами, хотя данные и будут находиться в согласованном состоянии, логическая их целостность будет нарушена. Для того чтобы наш объект удовлетворял первому уровню изоляции транзакций, на котором запрещается «загрязнение» данных, перепишем его следующим образом (изменения касаются только класса CObjec ): class CObjec {  frie d class CProxy; public:  e um {READ U COMMI ED};  s a ic CProxy& Ge Objec (i level = -1);  ~CObjec ()  {   Dele eCri icalSec io (&exclusive);   if (hMu ex) CloseHa dle(hMu ex);  } pro ec ed:  CProxy& Begi ra (i level)  {   re ur ( ew CProxy( his,level));  }  void Reques Exclusive(i level)  {   if (level >= READ U COMMI ED)    es Exclusive();  }    void Reques Shared(i level)  {  }  void RemoveShared(i level)  {  }  void RemoveLocks()  {   RemoveAllLocks();  } priva e:  CObjec ()  {   value = 0;   I i ializeCri icalSec io (&exclusive);  }  void es Exclusive()  {   //Проверка на монопольную блокировку   E erCri icalSec io (&exclusive);   //Вошли больше одного раза   if (exclusive.Recursio Cou > 1)    LeaveCri icalSec io (&exclusive);  }  void RemoveAllLocks()  {   //Если была установлена монопольная блокировка - снимаем   if (exclusive.Ow i g hread == (HA DLE)Ge Curre hreadId())    LeaveCri icalSec io (&exclusive);  }  i value;  CRI ICAL SEC IO exclusive;  s a ic HA DLE hMu ex; }; Добавленный код выделен.

В SQL Server 2000 используются два типа ролей: серверные и роли базы данных. Серверные роли управляют доступом к операциям, которые влияют на сервер SQL Server, например запуск и остановка сервера, конфигурирование таких усовершенствованных компонентов, как репликация, управление системой безопасности и создание баз данных. Роли баз данных управляют операциями и доступом к данным указанной базы данных. Для добавления пользователя с серверной ролью в программе SQL Server Enterprise Manager выполните перечисленные ниже действия. 1. В окне Microsoft SQL Servers программы SQL Server Enterprise Manager откройте папку Security используемого сервера и выберите папку Server Roles для отображения фиксированного набора серверных ролей.  РИС. 3.24. Новая учетная запись отображается в консольном окне Microsoft SQL Servers программы SQL Server Enterprise Manager 2. Щелкните правой кнопкой мыши на изменяемой роли и выберите команду Properties из контекстного меню или щелкните дважды на изменяемой роли. При этом на экране появится диалоговое окно Server Role Properties (Свойства серверной роли), показанное на рис. 3.25. 3

1. MS SQL Server 6.5

2. Конфликты схем сопоставления (collation) в Microsoft SQL Server 2000

3. Администрирование SQL Server 2000

4. MS SQL Server 9 “Yukon”. Интеграция с .NET

5. Работа с регулярными выражениями в SQL Server

6. Работа с двоичными данными (SQL Server + ASP)
7. MS SQL 2005: оконные функции
8. Разработка сложных web-проектов с использованием Microsoft Commerce Server 2000

9. Создание с помощью SQL Server базы данных для магазина продуктов

10. Анализ системы безопасности Microsoft Windows 2000 Advanced Server и стратегий ее использования

11. Преемственность и перспективность в работе по русскому языку между I-III (IV) (на материале внеурочной предметной деятельности) (и V-VI классами (Диплом) MS Word`2000)

12. Особенности профессионального оформления документов в MS Word 2000

13. Расходы и доходы бюджета РФ 2000-2001гг.

14. История экономики России XX века. 1917-2000 годы

15. Новейшая мировая история. Периодизация 1945-2000

16. Remote Access Server, удаленный доступ модема к серверу

Металлическая клетка-корона, белая, 16,5x21,5 см.
"Садовая" металлическая серия кукольной миниатюры в масштабе 1:12. Размер: 16,5x21,5 см. Материал: металл. Цвет: белый.
308 руб
Раздел: Прочие
Музыкальный центр "Парк развлечений".
Это детское пианино с диапазоном в одну октаву предназначено для малышей. Над клавиатурой пианино расположены кнопки с изображением
1575 руб
Раздел: Сортеры, логические игрушки
Датчик обнаружения угарного газа.
Ежегодно сотни людей по всему миру погибают от отравления угарным газом. Именно поэтому в каждом доме, где используется любая
783 руб
Раздел: Детекторы, датчики движения

17. Шина USB (Word`2000, HTML)

18. Реляционные Базы Данных. SQL - стандартный язык реляционных баз данных

19. Скорость обработки запросов на SQL серверах

20. Использование макросов для программирования в MS ACCESS

21. Инструкция по эксплуатации базы данных магазина «Телевизоры» средствами Access 2000

22. Общая характеристика MS-DOS
23. Операционная система MS-DOS
24. Операционная система MS DOS. Обзор версий MS DOS. Основные составные части MS DOS. Начальная загрузка MS DOS

25. Операционная система MS DOS. Основные принципы хранения информации на магнитных дисках в MS DOS. Файловая система MS DOS

26. Общие свойства приложений Office Pro 2000

27. Access-одна из программ MS Office

28. Изучение программ MS Office

29. Norton Commander– инструментарий работы в среде MS DOS

30. Работа с командами операционной системы MS - DOS

31. Влияние искусственно вносимой соли NaF на накопление фтора в почве и разнотравье луга (Word`2000)

32. Мониторинг Балтийского моря (MS Works)

Чехол для телефона - кошелек, 14.5x9х3.5 см.
В Вашей необъятной сумке невозможно разыскать телефон или кошелек? Направляясь на ланч или шоппинг, Вам приходится брать с собой массивный
396 руб
Раздел: Сумочки для телефонов
Велосипед трехколесный Moby Kids "Comfort. EVA", цвет: красный.
Детский трёхколёсный велосипед Moby Kids "Comfort 10х8 EVA". В данной модели предусмотрены дополнительные функции и аксессуары,
4216 руб
Раздел: Трехколесные
Дневник школьный "Наушники".
Формат: А5 (215x170 мм). Количество листов: 48. Внутренний блок: тонированный офсет 70 г/м2. Материал обложки: искусственная кожа. Способ
370 руб
Раздел: Для младших классов

33. ИЗМЕНЕНИЕ КАЧЕСТВА ВОДНЫХ РЕСУРСОВ КАЛИНИНГРАДСКОЙ ОБЛАСТИ, В ЗАВИСИМОСТИ ОТ ХАРАКТЕРА ЗАГРЯЗНЕНИЯ (MS Works)

34. Решение экологических проблем в г. Москве в 2000 году

35. Разработка методического пособия для самостоятельной работы студентов по теме: "Газовые законы" (MS Word`97)

36. Роль СМИ в избирательных кампаниях 1999-2000 гг.

37. Проектирование станочного приспособления для операции "Сверление" детали "Вал" (WinWord 2000 & CorelDraw 9.0)

38. Модернизация узла блокировки капота автомобиля ЗАЗ-1102 "Таврия" и его модификаций
39. Проект социологического иследования на тему "Изменение отношения жителей Москвы к работе милиции в 1990 - 2000 гг."
40. Полимеры и их конформации (WinWord97/2000)

41. ПРОГНОЗ ЦЕНЫ НА ОЛОВО В РОССИИ И МИРЕ НА 2000 ГОД

42. Тенденции развития розничного товарооборота в Российской Федерации в период с 1992 по 2000 год

43. Проблема несостоятельности (банкротства) (предприятия WinWord 2000)

44. Федеральный закон о бюджете на 2000 год

45. Основные положения экономической программы развития России с 2000 до 2010 года

46. Вывод израильских войск с территории Южного Ливана. Май 2000.;

47. Экзаменационные билеты по истории за осень 2000

48. Сигнализация, централизация, блокировка

Пакеты для хранения и заморозки грудного молока, 15 штук.
Пакеты для молока предназначены для хранения и заморозки грудного молока. Пакеты стерильны и полностью готовы к использованию. Пакеты с
351 руб
Раздел: Молокоотсосы, аксессуары
Магнит для досок Hebel Maul 6166099, сферический, 10 штук.
Магнит яркого цвета и обтекаемой формы не только надежно удержит листы бумаги на магнитно-маркерной поверхности, но и поможет расставить
500 руб
Раздел: Магниты канцелярские
Набор из 2 мягких ракеток с мячом, арт. Т59921.
Набор для игр с мячом и круглыми, мягкими, ярко оформленными ракетками "батут" оценят, как взрослые, так и дети. Игра с такими
353 руб
Раздел: Ловушки мячей, кэтчбол, огоспорт

49. Безопасность файловых ресурсов сети Windows 2000

50. Билеты по предмету Античная культура за осенний семестр 2000 года

51. Экзаменационные билеты по маркетингу за 2000 год

52. Установление правового фундамента в кыргызско-российских отношениях и Политический диалог в период 1991-2000 г

53. Экзаменационные билеты по менеджменту в непроизводственной сфере за осенний семестр 2000 года

54. Экзаменационные билеты по менеджменту за 2000 год
55. Применение избирательных технологий на выборах в Пермскую городскую Думу 2000 года
56. Список экзаменационных вопросов и билетов по налоговой системе за осенний семестр 2000 года

57. Власть и общество в политическом пространстве России 2000 года

58. Экзаменационные билеты по предмету Психология и педагогика за осенний семестр 2000 года

59. Перечень экзаменационных вопросов и билетов политика доходов и заработной платы осенний семестр 2000

60. Экзаменационные билеты по политологии за осенний семестр 2000 г

61. Соглашение между общероссийскими профсоюзами объединениями работодателей и правительством на 2000-2001 г

62. Экзаменационные билеты по социологии за осенний семестр 2000 г

63. Экзаменационные билеты по статистике за осень-зиму 2000 года

64. Экзаменационные билеты по теории организации за второй семестр 2000 г

Пенал "DeLune", арт. D-819.
Пенал школьный каркасный, изготовлен по жестко-каркасной технологии, обеспечивающий, надежную защиту письменных принадлежностей от
651 руб
Раздел: Без наполнения
Подушка "Verossa" (заменитель лебяжьего пуха), 70х70 см.
Одеяла и подушки торговой марки Verossa с инновационным наполнителем из микроволокна — искусственный лебяжий пух - обладают всеми
1068 руб
Раздел: Размер 70х70 см
Стул детский "Малыш-1".
"Малыш №1" - маленький, компактный удобный стульчик для малыша. Он изготовлен из натуральных материалов и покрыт нетоксичным,
853 руб
Раздел: Стульчики

65. Билеты по исследованию систем управления - 2000

66. Билеты по исследованию систем управления - 2000

67. Экзаменационные билеты по предмету Стратегическое планирование за конец 2000 года

68. Билеты по инновационному менеджменту за осенний семестр 2000 года

69. Экзаменационные билеты по предмету Стратегическое планирование за конец 2000 года

70. Правила Волейбола 1999-2000
71. Правила Волейбола 1999-2000
72. Экзаменационные билеты по предмету Финансы, денежное обращение, кредит за осенний семестр 2000 года

73. Билеты по Электронике и электротехнике за декабрь 2000 г

74. Стратегия сокращения персонала на российских предприятиях в 1998-2000 годах

75. Билеты Мировая экономика за осенний семестр 2000 года

76. Выполнение плана ОТХ мероприятий ОАО Татнефть за 2000 г

77. Денежно кредитная политика банка РФ на 2000 год

78. Экзаменационные билеты по История экономики за осенний семестр 2000 года

79. Экзаменационные вопросы с билетами по предмету Государственное регулирование за 2000 год

80. Экзаменационные билеты математическое моделирование экономических систем осенний семестр 2000 года

Электронный озвученный плакат "Говорящая Азбука".
«Говорящая АЗБУКА» из серии звуковых плакатов Знаток ТМ для начинающих изучать русский алфавит. Кнопки «Изучение» и «Экзамен» помогут
703 руб
Раздел: Электронные и звуковые плакаты
Настольная семейная игра "Усачи".
Весёлая игра на реакцию. Каждый игрок берёт усы на специальной палочке с присоской. Сдающий переворачивает по одной карте из колоды. На
445 руб
Раздел: Игры на ловкость
Синтетическое средство для стирки белья с ферментами для лучшего отстирывания "Топ", 900 г.
Синтетическое средство для стирки белья подходит как для ручной, так и для автоматической стирки белья из натуральных, смесовых и
342 руб
Раздел: Стиральные порошки

81. Билеты Экономическая теория за второй семестр 2000 года

82. Экзаменационные билеты по предмету Теория и история языкознания за ноябрь 2000 - февраль 2001 гг.

83. Экзаменационные билеты по предмету Теория и история языкознания за ноябрь 2000 - февраль 2001 гг..

84. Бухучет 2000

85. Опыт краткосрочного прогноза времени, места и силы камчатских землетрясений 1996-2000 гг.

86. Экзаменационные вопросы и билеты по концепции современного естествознания за осенний семестр 2000 года
87. Сборник экзаменационных билетов по французскому языку за осенний семестр 2000 г
88. Швидкість обробки запитів на SQL-серверах укр

89. Типовые задачи администрирования сети Windows 2000

90. Устранение неполадок при отсутствии на контроллерах домена Windows 2000 общих папок SYSVOL и NETLOGON

91. Опыт использования ADO для доступа к базам данных форматов MS Access, xBase и Paradox

92. Графическое программирование на Ms Fortran

93. AutoCad 2000

94. Компьютерная проблема 2000 года

95. AutoCAD 2000

96. MS Windows

Пенал, 1 отделение, 20x14x4 см, серый/зеленый.
Пенал школьный с 2 откидными планками, для канцелярских принадлежностей. Размер: 20x14x4 см. Застежка: молния. Количество отделений:
317 руб
Раздел: Без наполнения
Смываемые фломастеры "Супер чисто" с толстым наконечником, 8 штук.
В картонной коробке 8 разноцветных фломастеров. Они выполнены из качественных экологически чистых материалов. Созданные на основе
393 руб
Раздел: 7-12 цветов
Пломба свинцовая 10 мм, упаковка 1 кг.
Рекомендуется использовать совместно с витой проволокой или шпагатом. Устанавливается с помощью пломбиратора. Применение свинцовых пломб
362 руб
Раздел: Прочее

97. Windows NT 4.0 Server

98. Архивация данных в MS DOS

99. Защита баз данных. Access 2000


Поиск Рефератов на сайте za4eti.ru Вы студент, и у Вас нет времени на выполнение письменных работ (рефератов, курсовых и дипломов)? Мы сможем Вам в этом помочь. Возможно, Вам подойдет что-то из ПЕРЕЧНЯ ПРЕДМЕТОВ И ДИСЦИПЛИН, ПО КОТОРЫМ ВЫПОЛНЯЮТСЯ РЕФЕРАТЫ, КУРСОВЫЕ И ДИПЛОМНЫЕ РАБОТЫ. 
Вы можете поискать нужную Вам работу в КОЛЛЕКЦИИ ГОТОВЫХ РЕФЕРАТОВ, КУРСОВЫХ И ДИПЛОМНЫХ РАБОТ, выполненных преподавателями московских ВУЗов за период более чем 10-летней работы. Эти работы Вы можете бесплатно СКАЧАТЬ.