Збережені процедури mysql як спосіб розгону повільної СУБД

Що за процедури ще?

Якщо у вас фобія щодо медичних процедур, то дані структури «не з тієї теми». Так що можна не боятися. А якщо серйозно, то збережені процедури - це зручна і корисна для «здоров'я» СУБД річ. Їх ще називають «збереженими функціями MySQL», але це не зовсім точне визначення. Хоча давайте розбиратися з усім по порядку.

Збережені процедури дозволяють значно оптимізувати роботу сервера і підвищити швидкість його роботи, оскільки їх код після першого виконання зберігається в кеші оперативки. При всіх наступних викликах процедура буде вилучатись з кешу, а не вирушати знову на виконання.

В MySQL виклик збереженої процедури означає, що вписані в її код запит буде опрацьовано лише наполовину. І то, якщо буде змінено значення їх параметрів. Але не все так ідеально. Наведемо спочатку позитивні сторони використання процедур:

Інкапсуляція функціональності - весь код зберігається в одному місці, що полегшує доступ до нього для інших додатків. У цьому збережені процедури схожі з програмними функціями.

Збережені процедури mysql як спосіб розгону повільної СУБД

Фреймворк YII2. Швидка розробка з сучасним PHP фреймворком

Дізнайся тонкощі сучасної веб-розробки за допомогою фреймворка YII2

Ізоляція доступу до даних - все користувачі отримують доступ не до рядків таблиць, а тільки до збереженим процедурам. Що в свою чергу підвищує рівень захищеності всіх даних.

Підвищення швидкості роботи сервера - за рахунок кешування і об'єднання запитів.

В MySQL збережені процедури в теорії є структурами, що належать до більш «високих матерій» - програмування СУБД. Так що ми з вами (як професіонали) хоч потихеньку, але ростемо. Але повернемося до процедур, і опишемо негативні сторони їх використання:

Навантаження на сервер БД підвищується - велика частина коду процедур виконується на стороні сервера. Дана СУБД побудована за моделлю «клієнт-сервер», в якій задіяні кілька пристроїв.

Ускладнюється маніпуляція даними - при розробці додатків доведеться прописувати частину коду і на стороні клієнта.

Ускладнюється процес перенесення БД на інші рейки (СУБД).

Процедури в phpMyAdmin

Для початку розглянемо застосування в MySQL збережених процедур на прикладі phpMyAdmin. Таким чином нам буде легше розібратися з цим типом структур. Стартуємо!

Запускаємо програмну оболонку, праворуч вибираємо тестову БД. У мене такий є база world. Потім в головному меню зверху переходимо по вкладці «Процедури». Тут тиснемо на «Додати процедуру».

Збережені процедури mysql як спосіб розгону повільної СУБД

Уже на цьому етапі ми знайомимося з особливостями синтаксису створення збережених процедур MySQL. В поле «Визначення» прописуємо тіло структури. Зверніть увагу, що виконується запит знаходиться між ключовими словами BEGIN і END:

Даний запит не виконує ніяких дій з базою, а лише виводить напис. Це ми вказали в полі «Доступ до SQL даними».

Для закінчення створення нашої першої процедури тиснемо внизу «Ок». Після цього програма виводить «зелененькі» повідомлення про вдале виконання запиту. Його код представлений нижче. В MySQL збережені процедури і функції створюються за допомогою спеціальної команди CREATE PROCEDURE. Але про це пізніше.

Збережені процедури mysql як спосіб розгону повільної СУБД

Тепер запустимо створену структуру на виконання. Для цього в розділі «Процедури» натискаємо посилання «Виконати». Але що це за неподобство! Куди подівся наш улюблений «зелененький»? Чому програма «лається» і «кричить», що їй не вистачає виділеної пам'яті?

Збережені процедури mysql як спосіб розгону повільної СУБД

Це ще раз доводить, що на виконання тригерів і збережених процедур в MySQL витрачається більше ресурсів.

Збережені процедури mysql як спосіб розгону повільної СУБД

Збережені процедури mysql як спосіб розгону повільної СУБД

Фреймворк YII2. Швидка розробка з сучасним PHP фреймворком

Дізнайся тонкощі сучасної веб-розробки за допомогою фреймворка YII2

Перейдіть в конфігураційний файл my.ini, і збільште ліміт оперативки, встановленої для кожного потоку, до 256 kb. Тепер ще раз запустіть на виконання створену процедуру. Цього разу все пройшло як треба, і програма повернула результат без помилки.

Збережені процедури mysql як спосіб розгону повільної СУБД

Зверніть увагу, що для виклику використовується команда CALL із зазначенням імені процедури і прийнятих параметрів (в дужках).

Більш складний приклад

Але все ж phpMyAdmin за своїми можливостями більше підходить для швидкого складання процедур. А для розробки в MySQL збереженої процедури з динамічним кількістю аргументів (наприклад) буде потрібно більш зручне ПО. чому:

phpMyAdmin не хоче нормально «розуміти» процедури, створені не через спеціальний конструктор.

Програма не виконує структури, запущені під root і порожнім паролем, а в Денвері створити нового користувача і зайти під ним в phpMyAdmin ціла проблема.

Якщо ви уважно стежите за моїми публікаціями і виконуєте всі прописані в них «побажання», то у вас повинен вже стояти MySQL Administrator. У прив'язку до нього залишилося завантажити MySQL Query Browser за цим посиланням. Ці дві програми краще використовувати разом: в першій створювати процедури, а в інший тестувати їх. поїхали:

Запускаємо MySQL Administrator.

Зліва вгорі переходимо через вкладку «Catalog».

Збережені процедури mysql як спосіб розгону повільної СУБД

Вибираємо потрібну БД, і у верхньому меню тиснемо на «Stored procedures», а внизу на «Create Stored Proc»

Збережені процедури mysql як спосіб розгону повільної СУБД

Збережені процедури mysql як спосіб розгону повільної СУБД

Для запуску процедури заходимо в MySQL Query Browser. Спочатку вводимо свою учетку і пароль, а потім зліва в «Object Explorer» знаходимо папку з потрібною базою. Решта черговість дії показана на наступному знімку.

Збережені процедури mysql як спосіб розгону повільної СУБД

Запуск процедури в PHP

Тепер розглянемо, як відбувається в PHP виклик збереженої процедури MySQL. Для цього нам доведеться трохи «перекроїти» код нашого попереднього прикладу. Ми додамо в процедуру параметр на висновок, а також змінимо код запиту:

Для виклику з файлу PHP процедури і виведення результату будемо використовувати можливості класу PDOStatement, створеного спеціально для роботи з БД через SQL

Цей клас реалізований порівняно недавно, і підтримується PHP, починаючи з версії 5.1.0. Раджу перед використанням перевірити використовувану версію мови c допомогою вбудованої функції phpversion ().

Збережені процедури mysql як спосіб розгону повільної СУБД

Збережені процедури mysql як спосіб розгону повільної СУБД

Збережені процедури mysql як спосіб розгону повільної СУБД

Фреймворк YII2. Швидка розробка з сучасним PHP фреймворком

Дізнайся тонкощі сучасної веб-розробки за допомогою фреймворка YII2

Найсвіжіші новини IT і веб-розробки на нашому Telegram-каналі

Схожі статті