Рецепт вибірка через запит select ... for update

Уявіть що ви запускаєте кілька процесів, які роблять select запит до однієї і тієї ж таблиці. Якщо не передбачити спеціальне умова, то кілька процесів можуть вибрати одну і ту ж запис одночасно. У цій статті я покажу вам рішення, яке на 100% допоможе уникнути подібної ситуації.

Для того, щоб уникнути вищезгаданої ситуації необхідно виконати не просто SELECT запит, а його розширену версію, про яку багато хто і не підозрюють: SELECT ... FOR UPDATE.

Таким чином, при виконанні даного запиту, всі порушені записи в базі даних будуть заблоковані до завершення сеансу роботи з БД або до моменту поновлення даних записів. Інший скрипт не зможе вибрати заблоковані записи до тих пір, поки не настане одне зі згаданих умов.

Однак не все так просто. Вам потрібно виконати ще кілька умов. По-перше, ваша таблиця повинна бути створена на основі архітектури InnoDB. В іншому випадку блокування просто не спрацьовуватиме. По-друге, перед виконанням вибірки необхідно відключити авто-комун запиту. Тобто іншими словами автоматичне виконання запиту. Після того як ви вкажете UPDATE запит, необхідно буде ще раз звернутися до бази і закоммітіть зміни за допомогою команди COMMIT.

5 останніх уроків рубрики "PHP"

Коли мова йде про безпеку веб-сайту, то фраза "фільтруйте все, екрануйте все" завжди буде актуальна. Сьогодні поговоримо про фільтрації даних.

  • Expressive 2 підтримує можливість підключення інших ZF компонент за спеціальною схемою. Не всім подобається це рішення. У цій статті ми розповімо як поліпшили процес підключення декількох модулів.

  • Припустимо, що вам необхідно відправити якусь інформацію в Google Analytics з серверного скрипта. Як це зробити. Відповідь в цій замітці.

  • Підбірка з декількох видів PHP пісочниць. На деяких ви в режимі online зможете потестить свій код, але є так само рішення, які можна впровадити на свій сайт.

    Рецепт вибірка через запит select ... for update

    За рахунок отримання інформації відразу по двох каналах (зір і слух) ефективність навчання значно перевершує навчання по книгах. А домашні завдання і онлайн-тести дозволять вам постійно думати на мові, що вивчається і відразу перевіряти свої знання!

    Рецепт вибірка через запит select ... for update

    Рецепт вибірка через запит select ... for update

    Якщо ви давно хочете як слід вивчити HTML, то у мене для Вас є чудова новина!

    Рецепт вибірка через запит select ... for update

    Якщо ви вже вивчили HTML і хочете рухатися далі, то наступним кроком буде вивчення технології CSS.

    Рецепт вибірка через запит select ... for update

    Якщо ви хочете розібратися з поняттями домену і хостингу, навчитися створювати бази даних, закачувати файли сайту на сервер по FTP, створювати піддомени, налаштовувати поштові скриньки для свого сайту і стежити за його відвідуваністю, то цей курс створений спеціально для вас!