Що за процедури ще?
Якщо у вас фобія щодо медичних процедур, то дані структури «не з тієї теми». Так що можна не боятися. А якщо серйозно, то збережені процедури - це зручна і корисна для «здоров'я» СУБД річ. Їх ще називають «збереженими функціями MySQL», але це не зовсім точне визначення. Хоча давайте розбиратися з усім по порядку.
Збережені процедури дозволяють значно оптимізувати роботу сервера і підвищити швидкість його роботи, оскільки їх код після першого виконання зберігається в кеші оперативки. При всіх наступних викликах процедура буде вилучатись з кешу, а не вирушати знову на виконання.
В MySQL виклик збереженої процедури означає, що вписані в її код запит буде опрацьовано лише наполовину. І то, якщо буде змінено значення їх параметрів. Але не все так ідеально. Наведемо спочатку позитивні сторони використання процедур:
Інкапсуляція функціональності - весь код зберігається в одному місці, що полегшує доступ до нього для інших додатків. У цьому збережені процедури схожі з програмними функціями.
Фреймворк YII2. Швидка розробка з сучасним PHP фреймворком
Дізнайся тонкощі сучасної веб-розробки за допомогою фреймворка YII2
Ізоляція доступу до даних - все користувачі отримують доступ не до рядків таблиць, а тільки до збереженим процедурам. Що в свою чергу підвищує рівень захищеності всіх даних.
Підвищення швидкості роботи сервера - за рахунок кешування і об'єднання запитів.
В MySQL збережені процедури в теорії є структурами, що належать до більш «високих матерій» - програмування СУБД. Так що ми з вами (як професіонали) хоч потихеньку, але ростемо. Але повернемося до процедур, і опишемо негативні сторони їх використання:
Навантаження на сервер БД підвищується - велика частина коду процедур виконується на стороні сервера. Дана СУБД побудована за моделлю «клієнт-сервер», в якій задіяні кілька пристроїв.
Ускладнюється маніпуляція даними - при розробці додатків доведеться прописувати частину коду і на стороні клієнта.
Ускладнюється процес перенесення БД на інші рейки (СУБД).
Процедури в phpMyAdmin
Для початку розглянемо застосування в MySQL збережених процедур на прикладі phpMyAdmin. Таким чином нам буде легше розібратися з цим типом структур. Стартуємо!
Запускаємо програмну оболонку, праворуч вибираємо тестову БД. У мене такий є база world. Потім в головному меню зверху переходимо по вкладці «Процедури». Тут тиснемо на «Додати процедуру».
Уже на цьому етапі ми знайомимося з особливостями синтаксису створення збережених процедур MySQL. В поле «Визначення» прописуємо тіло структури. Зверніть увагу, що виконується запит знаходиться між ключовими словами BEGIN і END:
Даний запит не виконує ніяких дій з базою, а лише виводить напис. Це ми вказали в полі «Доступ до SQL даними».
Для закінчення створення нашої першої процедури тиснемо внизу «Ок». Після цього програма виводить «зелененькі» повідомлення про вдале виконання запиту. Його код представлений нижче. В MySQL збережені процедури і функції створюються за допомогою спеціальної команди CREATE PROCEDURE. Але про це пізніше.
Тепер запустимо створену структуру на виконання. Для цього в розділі «Процедури» натискаємо посилання «Виконати». Але що це за неподобство! Куди подівся наш улюблений «зелененький»? Чому програма «лається» і «кричить», що їй не вистачає виділеної пам'яті?
Це ще раз доводить, що на виконання тригерів і збережених процедур в MySQL витрачається більше ресурсів.
Фреймворк YII2. Швидка розробка з сучасним PHP фреймворком
Дізнайся тонкощі сучасної веб-розробки за допомогою фреймворка YII2
Перейдіть в конфігураційний файл my.ini, і збільште ліміт оперативки, встановленої для кожного потоку, до 256 kb. Тепер ще раз запустіть на виконання створену процедуру. Цього разу все пройшло як треба, і програма повернула результат без помилки.
Зверніть увагу, що для виклику використовується команда CALL із зазначенням імені процедури і прийнятих параметрів (в дужках).
Більш складний приклад
Але все ж phpMyAdmin за своїми можливостями більше підходить для швидкого складання процедур. А для розробки в MySQL збереженої процедури з динамічним кількістю аргументів (наприклад) буде потрібно більш зручне ПО. чому:
phpMyAdmin не хоче нормально «розуміти» процедури, створені не через спеціальний конструктор.
Програма не виконує структури, запущені під root і порожнім паролем, а в Денвері створити нового користувача і зайти під ним в phpMyAdmin ціла проблема.
Якщо ви уважно стежите за моїми публікаціями і виконуєте всі прописані в них «побажання», то у вас повинен вже стояти MySQL Administrator. У прив'язку до нього залишилося завантажити MySQL Query Browser за цим посиланням. Ці дві програми краще використовувати разом: в першій створювати процедури, а в інший тестувати їх. поїхали:
Запускаємо MySQL Administrator.
Зліва вгорі переходимо через вкладку «Catalog».
Вибираємо потрібну БД, і у верхньому меню тиснемо на «Stored procedures», а внизу на «Create Stored Proc»
Для запуску процедури заходимо в MySQL Query Browser. Спочатку вводимо свою учетку і пароль, а потім зліва в «Object Explorer» знаходимо папку з потрібною базою. Решта черговість дії показана на наступному знімку.
Запуск процедури в PHP
Тепер розглянемо, як відбувається в PHP виклик збереженої процедури MySQL. Для цього нам доведеться трохи «перекроїти» код нашого попереднього прикладу. Ми додамо в процедуру параметр на висновок, а також змінимо код запиту:
Для виклику з файлу PHP процедури і виведення результату будемо використовувати можливості класу PDOStatement, створеного спеціально для роботи з БД через SQL
Цей клас реалізований порівняно недавно, і підтримується PHP, починаючи з версії 5.1.0. Раджу перед використанням перевірити використовувану версію мови c допомогою вбудованої функції phpversion ().
Фреймворк YII2. Швидка розробка з сучасним PHP фреймворком
Дізнайся тонкощі сучасної веб-розробки за допомогою фреймворка YII2
Найсвіжіші новини IT і веб-розробки на нашому Telegram-каналі