🗊Презентация Транзакції та блокування

Категория: Информатика
Нажмите для полного просмотра!
Транзакції та блокування, слайд №1Транзакції та блокування, слайд №2Транзакції та блокування, слайд №3Транзакції та блокування, слайд №4Транзакції та блокування, слайд №5Транзакції та блокування, слайд №6Транзакції та блокування, слайд №7Транзакції та блокування, слайд №8Транзакції та блокування, слайд №9Транзакції та блокування, слайд №10Транзакції та блокування, слайд №11

Вы можете ознакомиться и скачать презентацию на тему Транзакції та блокування. Доклад-сообщение содержит 11 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Транзакції та блокування
Описание слайда:
Транзакції та блокування

Слайд 2





1. Транзакції
Транзакція - послідовність операторів SQL, що виконуються як єдина операція, яка не перериває-ться іншими клієнтами. Поки відбувається робота з записами таблиці (їх оновлення або видалення), СУБД MySQL автоматично  блокує доступ до них.
Підтримка транзакцій здійснюється тільки в таблицях ВDВ і InnoDB.
Транзакції об'єднують оператори в групу і гаран-тують, що всі операції всередині групи будуть вико-нані успішно. Якщо частина транзакції виконується зі збоєм, результати виконання всіх операторів транзакції до місця збою скасуються, приводячи базу даних до вигляду, в якому вона була до виконання транзакції.
Описание слайда:
1. Транзакції Транзакція - послідовність операторів SQL, що виконуються як єдина операція, яка не перериває-ться іншими клієнтами. Поки відбувається робота з записами таблиці (їх оновлення або видалення), СУБД MySQL автоматично блокує доступ до них. Підтримка транзакцій здійснюється тільки в таблицях ВDВ і InnoDB. Транзакції об'єднують оператори в групу і гаран-тують, що всі операції всередині групи будуть вико-нані успішно. Якщо частина транзакції виконується зі збоєм, результати виконання всіх операторів транзакції до місця збою скасуються, приводячи базу даних до вигляду, в якому вона була до виконання транзакції.

Слайд 3





За замовчуванням СУБД MySQL працює в режимі автоматичного завершення транзакцій, після виконання оператора оновлення даних, який модифікує таблицю, MySQL зберігає зміни на диску. Для об'єднання в транзакцію кількох операторів слід відключити цей режим. Це здійснюється за допомогою системної змінної AUTOCOMMIT, значення якої встановлюється оператором SET AUTOCOMMIT = 0;
За замовчуванням СУБД MySQL працює в режимі автоматичного завершення транзакцій, після виконання оператора оновлення даних, який модифікує таблицю, MySQL зберігає зміни на диску. Для об'єднання в транзакцію кількох операторів слід відключити цей режим. Це здійснюється за допомогою системної змінної AUTOCOMMIT, значення якої встановлюється оператором SET AUTOCOMMIT = 0;
Після відключення режиму автоматичного завершення транзакцій слід використовувати оператор COMMIT, щоб зберігати зміни на диску, або ROLLBACK, щоб скасувати зміни, виконані з моменту початку транзакції. Для включення режиму автоматичного завершення транзакцій, слід виконати оператор SET AUTOCOMMIT = 1.
Описание слайда:
За замовчуванням СУБД MySQL працює в режимі автоматичного завершення транзакцій, після виконання оператора оновлення даних, який модифікує таблицю, MySQL зберігає зміни на диску. Для об'єднання в транзакцію кількох операторів слід відключити цей режим. Це здійснюється за допомогою системної змінної AUTOCOMMIT, значення якої встановлюється оператором SET AUTOCOMMIT = 0; За замовчуванням СУБД MySQL працює в режимі автоматичного завершення транзакцій, після виконання оператора оновлення даних, який модифікує таблицю, MySQL зберігає зміни на диску. Для об'єднання в транзакцію кількох операторів слід відключити цей режим. Це здійснюється за допомогою системної змінної AUTOCOMMIT, значення якої встановлюється оператором SET AUTOCOMMIT = 0; Після відключення режиму автоматичного завершення транзакцій слід використовувати оператор COMMIT, щоб зберігати зміни на диску, або ROLLBACK, щоб скасувати зміни, виконані з моменту початку транзакції. Для включення режиму автоматичного завершення транзакцій, слід виконати оператор SET AUTOCOMMIT = 1.

Слайд 4





Для включення режиму автоматичного завершення транзакцій тільки для окремої послідовності операторів, використовується оператор START TRANSACTION.
Для включення режиму автоматичного завершення транзакцій тільки для окремої послідовності операторів, використовується оператор START TRANSACTION.
Після виконання оператора START TRANSACTION режим автоматичного завершення транзакцій залишається включеним до явного завершення транзакції за допомогою оператора COMMIT або відкату транзакції за допомогою ROLLBACK.
Описание слайда:
Для включення режиму автоматичного завершення транзакцій тільки для окремої послідовності операторів, використовується оператор START TRANSACTION. Для включення режиму автоматичного завершення транзакцій тільки для окремої послідовності операторів, використовується оператор START TRANSACTION. Після виконання оператора START TRANSACTION режим автоматичного завершення транзакцій залишається включеним до явного завершення транзакції за допомогою оператора COMMIT або відкату транзакції за допомогою ROLLBACK.

Слайд 5





Приклад механізму транзакцій. 
Приклад механізму транзакцій. 
UPDATE user_account SET allsum = allsum + 1000 WHERE id =‘1’;
UPDATE user_account SET allsum = allsum - 1000 WHERE id =‘2’;
Це переказ грошей з особового рахунку клієнта з номером 2 на особовий рахунок клієнта з номером 1. Якщо перший запит успішно виконався, а другий з якихось причин (помилка бази даних, помилка на сервері і т.д.) - ні. Отримуємо ситуацію, яка загрожує грошовими втратами.
Для уникнення цього потрібно, щоб обидва запити виконувалися як одне ціле. І якщо виникла помилка в одному запиті, не були виконані  інші. Для цього служить механізм транзакцій.
Описание слайда:
Приклад механізму транзакцій. Приклад механізму транзакцій. UPDATE user_account SET allsum = allsum + 1000 WHERE id =‘1’; UPDATE user_account SET allsum = allsum - 1000 WHERE id =‘2’; Це переказ грошей з особового рахунку клієнта з номером 2 на особовий рахунок клієнта з номером 1. Якщо перший запит успішно виконався, а другий з якихось причин (помилка бази даних, помилка на сервері і т.д.) - ні. Отримуємо ситуацію, яка загрожує грошовими втратами. Для уникнення цього потрібно, щоб обидва запити виконувалися як одне ціле. І якщо виникла помилка в одному запиті, не були виконані інші. Для цього служить механізм транзакцій.

Слайд 6





Оператор, що відкриває транзакцію: "START TRANSACTION;". Після правильного виконання всіх запитів транзакцію можна або завершити внісши всі зміни в базу даних - "COMMIT;", або відкотити, повернувши все в початковий стан – “ROLLBACK".
Оператор, що відкриває транзакцію: "START TRANSACTION;". Після правильного виконання всіх запитів транзакцію можна або завершити внісши всі зміни в базу даних - "COMMIT;", або відкотити, повернувши все в початковий стан – “ROLLBACK".
Слід врахувати що:
1. Транзакційний механізм підтримують тільки InnoDB і BDB. Тому всі таблиці з якими хочете працювати через транзакції слід переконвертувати у відповідний тип.
2. За замовчуванням MySQL працює в режимі autocommit. Це означає, що результати виконання будь-якого SQL - оператора, що змінює дані, будуть відразу зберігатися.
Описание слайда:
Оператор, що відкриває транзакцію: "START TRANSACTION;". Після правильного виконання всіх запитів транзакцію можна або завершити внісши всі зміни в базу даних - "COMMIT;", або відкотити, повернувши все в початковий стан – “ROLLBACK". Оператор, що відкриває транзакцію: "START TRANSACTION;". Після правильного виконання всіх запитів транзакцію можна або завершити внісши всі зміни в базу даних - "COMMIT;", або відкотити, повернувши все в початковий стан – “ROLLBACK". Слід врахувати що: 1. Транзакційний механізм підтримують тільки InnoDB і BDB. Тому всі таблиці з якими хочете працювати через транзакції слід переконвертувати у відповідний тип. 2. За замовчуванням MySQL працює в режимі autocommit. Це означає, що результати виконання будь-якого SQL - оператора, що змінює дані, будуть відразу зберігатися.

Слайд 7





Режим autocommit можна відключити командою SET AUTOCOMMIT = 0. При відключеному режимі autocommit кожну транзакцію треба явно завершувати операторами COMMIT/ROLLBACK.
Режим autocommit можна відключити командою SET AUTOCOMMIT = 0. При відключеному режимі autocommit кожну транзакцію треба явно завершувати операторами COMMIT/ROLLBACK.
Таким чином, для того, щоб реалізувати однократну транзакцію, яка вирішує поставлену на початку статті проблему, необхідно виконати такий код:
START   TRANSACTION;
UPDATE user_account 
SET allsum = allsum + 1000 WHERE id =‘1’;
UPDATE user_account 
SET allsum = allsum - 1000 WHERE id =‘2’;
COMMIT;
Описание слайда:
Режим autocommit можна відключити командою SET AUTOCOMMIT = 0. При відключеному режимі autocommit кожну транзакцію треба явно завершувати операторами COMMIT/ROLLBACK. Режим autocommit можна відключити командою SET AUTOCOMMIT = 0. При відключеному режимі autocommit кожну транзакцію треба явно завершувати операторами COMMIT/ROLLBACK. Таким чином, для того, щоб реалізувати однократну транзакцію, яка вирішує поставлену на початку статті проблему, необхідно виконати такий код: START TRANSACTION; UPDATE user_account SET allsum = allsum + 1000 WHERE id =‘1’; UPDATE user_account SET allsum = allsum - 1000 WHERE id =‘2’; COMMIT;

Слайд 8





2. Блокування таблиць
Для таблиць типу MyІSAM використання транзакцій недоступне. Проте їх можна емулювати при допомогою операторів LOCK TABLES та UNLOCK TABLES. Ці оператори блокують всю таблицю, ніхто не може працювати з таблицями до тих пір, поки вони залишаються заблокованими. Оператор LOCK TABLES виконує блокування таблиць, a UNLOCK TABLES знімає блокування.
Усі таблиці, заблоковані в поточному з'єднанні, розблокуються при повторному виклику оператора LOCK TABLES.
Оператори LOCK TABLES і UNLOCK TABLES мають синоніми LOCK TABLE і UNLOCK TABLE, відповідно
Описание слайда:
2. Блокування таблиць Для таблиць типу MyІSAM використання транзакцій недоступне. Проте їх можна емулювати при допомогою операторів LOCK TABLES та UNLOCK TABLES. Ці оператори блокують всю таблицю, ніхто не може працювати з таблицями до тих пір, поки вони залишаються заблокованими. Оператор LOCK TABLES виконує блокування таблиць, a UNLOCK TABLES знімає блокування. Усі таблиці, заблоковані в поточному з'єднанні, розблокуються при повторному виклику оператора LOCK TABLES. Оператори LOCK TABLES і UNLOCK TABLES мають синоніми LOCK TABLE і UNLOCK TABLE, відповідно

Слайд 9





LOCK  TABLES catalogs WRITE;
LOCK  TABLES catalogs WRITE;
INSERT INTO catalogs VALUES (NULL, ‘Принтер'); 
INSERT INTO catalogs VALUES(NULL, ‘Різне');
UNLOCK  TABLES;
Лістинг  демонструє блокування таблиці catalogs на час додавання даних в базу даних. Після опера-тора LOCK TABLES записується ім'я блокованої таблиці, при знятті блокування за допомогою оператора UNLOCK TABLES вказання імені таблиці не потрібне. Основна причина застосу-вання блокування таблиці за допомогою LOCK TABLES - це збільшення швидкості оновлення таблиць і додавання великих обсягів даних.
Описание слайда:
LOCK TABLES catalogs WRITE; LOCK TABLES catalogs WRITE; INSERT INTO catalogs VALUES (NULL, ‘Принтер'); INSERT INTO catalogs VALUES(NULL, ‘Різне'); UNLOCK TABLES; Лістинг демонструє блокування таблиці catalogs на час додавання даних в базу даних. Після опера-тора LOCK TABLES записується ім'я блокованої таблиці, при знятті блокування за допомогою оператора UNLOCK TABLES вказання імені таблиці не потрібне. Основна причина застосу-вання блокування таблиці за допомогою LOCK TABLES - це збільшення швидкості оновлення таблиць і додавання великих обсягів даних.

Слайд 10





При використанні блокувань можна явно вказати тип блокування - на читання (READ) або на запис (WRITE).
При використанні блокувань можна явно вказати тип блокування - на читання (READ) або на запис (WRITE).
LOCK TABLES catalogs WRITE;
INSERT INTO catalogs VALUES(NULL,'Периферія')
INSERT INTO catalogs VALUES(NULL,'Різне ');
UNLOCK TABLES catalogs;
LOCK TABLES catalogs READ;
INSERT INTO catalogs VALUES (NULL,'Периферія')
INSERT INTO catalogs VALUES(NULL,‘Різне ');
UNLOCK TABLES;
 Різниця між блокуваннями (READ) і (WRITE) полягає в тому, що клієнт, який встановив блокування на читання, і інші клієнти можуть тільки читати з таблиці дані. При блокуванні на запис (WRITE) встановивший його клієнт може як вносити записи в таблицю, так і читати, в той час як доступ інших клієнтів до таблиці блокується. Причому всі інші клієнти очікують, коли блокування буде скасоване оператором UNLOCK TABLES.
Описание слайда:
При використанні блокувань можна явно вказати тип блокування - на читання (READ) або на запис (WRITE). При використанні блокувань можна явно вказати тип блокування - на читання (READ) або на запис (WRITE). LOCK TABLES catalogs WRITE; INSERT INTO catalogs VALUES(NULL,'Периферія') INSERT INTO catalogs VALUES(NULL,'Різне '); UNLOCK TABLES catalogs; LOCK TABLES catalogs READ; INSERT INTO catalogs VALUES (NULL,'Периферія') INSERT INTO catalogs VALUES(NULL,‘Різне '); UNLOCK TABLES;  Різниця між блокуваннями (READ) і (WRITE) полягає в тому, що клієнт, який встановив блокування на читання, і інші клієнти можуть тільки читати з таблиці дані. При блокуванні на запис (WRITE) встановивший його клієнт може як вносити записи в таблицю, так і читати, в той час як доступ інших клієнтів до таблиці блокується. Причому всі інші клієнти очікують, коли блокування буде скасоване оператором UNLOCK TABLES.

Слайд 11





Один оператор LOCK TABLES може блокувати декілька таблиць, рекомендується блокувати всі таблиці, які беруть участь у запитах всередині блокування. 
Один оператор LOCK TABLES може блокувати декілька таблиць, рекомендується блокувати всі таблиці, які беруть участь у запитах всередині блокування. 
LOCK TABLES catalogs WRITE, products WRITE; 
SELECT * FROM catalogs, products
 WHERE 
          products.id_catalog = catalogs.id_catalogs
INSERT INTO catalogs VALUES(NULL,‘Різне');
UNLOCK TABLES catalogs;
Описание слайда:
Один оператор LOCK TABLES може блокувати декілька таблиць, рекомендується блокувати всі таблиці, які беруть участь у запитах всередині блокування. Один оператор LOCK TABLES може блокувати декілька таблиць, рекомендується блокувати всі таблиці, які беруть участь у запитах всередині блокування. LOCK TABLES catalogs WRITE, products WRITE; SELECT * FROM catalogs, products WHERE products.id_catalog = catalogs.id_catalogs INSERT INTO catalogs VALUES(NULL,‘Різне'); UNLOCK TABLES catalogs;



Похожие презентации
Mypresentation.ru
Загрузить презентацию