C, PHP, VB, .NET

Дневникът на Филип Петров


Категория ‘Бази от Данни’

* Извеждане на няколко произволни реда

Публикувано на 17 май 2012 в раздел Бази от Данни.

Вече разгледахме методи за извеждане на един произволен ред от таблица. Понякога обаче ние се нуждаем от повече. Например „последни 10 статии“, „последни 100 влизания в системата“ и т.н. Затова в настоящата статия ще направя сравнение между методи за извеждане на множество от произволни редове. Ще се фокусираме върху сравнение между оптимизирания JOIN метод (който даде най-добри резултати при извеждането на един ред от таблица), метода с произволно id в WHERE и стандартния ORDER BY RAND(). Прочети още…

.

 


* Full-Text търсене с InnoDB в MySQL

Публикувано на 16 май 2012 в раздел Бази от Данни.

С наближаването на официалното излизане на стабилна версия 5.6 на MySQL идва време да поговорим и едно дългоочаквано нововъведение – full text search в InnoDB. Досега беше налично само за MyISAM таблици, но от предварителната версия за разработчици 5.6.4 вече може да се използва и от по-силния си събрат. Това беше и едно от малкото липсващи неща в InnoDB, което нерядко караше разработчиците да използват MyISAM. Прочети още…

.

 


* Произволен ред от таблица

Публикувано на 04 май 2012 в раздел Бази от Данни.

В тази статия ще разгледам няколко различни алгоритми за прочитане на псевдопроизволен ред от таблица в MySQL, които намерих в интернет. Фокусирах се само и единствено върху чисто SQL методи. Съществуват и други, които комбинират генериране на произволно число в приложението и изпращане на готови стойности към базата от данни. Прочети още…

.

 


* MySQL Query Cache

Публикувано на 14 април 2012 в раздел Бази от Данни.

Използването на „кеш за заявки“ е една добра възможност за повишаване на бързодействието на СУБД. В MySQL функционалността се нарича „query cache“. Идеята е да се записват готови резултати от вече изпълнени SELECT заявки в паметта и така те да се използват наготово. За целта се използва хеш таблица. Правилната настройка на кеша за заявки може да доведе до значително ускорение в бързодействието на системата. За да направим това обаче трябва да разберем как той функционира и съответно какво можем да спечелим и какво можем да загубим от използването му. Прочети още…

.

 


* Подготвени и параметризирани заявки

Публикувано на 11 април 2012 в раздел Бази от Данни.

Стандартно една SQL заявка преминава през два етапа – подготовка (което включва лексикален и синтактичен анализ) и изпълнение. Подготовката е нещо подобно на компилацията при езиците за програмиране – текстът въведен в заявката се подготвя до изпълним за средата код. След това този код се изпълнява и се връща резултат към софтуерния продукт. Подготвените заявки ни дават възможност да разделим тези две стъпки и да ги изпълняваме отделно една от друга. Това означава, че имаме възможност първо да „компилираме“ заявката с една команда, а да я изпълним впоследствие чрез втора.

Подготвените заявки могат да бъдат с и без параметри. Ето един пример за такава заявка без параметри: Прочети още…

.

 


* MySQL EXPLAIN – оптимизиране на заявки

Публикувано на 06 април 2012 в раздел Бази от Данни.

Заявките от тип EXPLAIN се използват предимно от администраторите на бази от данни, за да видят т.нар. query execution plan (план за изпълнение на заявките). При слагането на префикс EXPLAIN преди дадена заявка тя не се изпълнява, а вместо това се извежда информация за това по какъв начин MySQL ще я изпълни. Преди версии 5.6 EXPLAIN може да се изпълнява само върху SELECT заявки. От версия 5.6 вече работят и за INSERT, UPDATE и DELETE. Прочети още…

.

 


* Задача от контролна работа март 2012г. – 2

Публикувано на 06 април 2012 в раздел Бази от Данни.

Нужно е да се направи база от данни за споделяне на статии между голяма група от потребители. В нея за всички потребители се пази уникален номер и уникално име. Всеки потребител може да има три основни роли – обикновен потребител (може да чете информация), автор (може да споделя информация) и рецензент (преглежда статии и ги одобрява или отхвърля). Разбира се авторите и рецензентите сами по себе си са обикновени потребители. Освен това не е забранено на даден автор да бъде и рецензент на други статии. Прочети още…

.

 


* Събития в MySQL

Публикувано на 03 април 2012 в раздел Бази от Данни.

„Събитията“ (events) в MySQL ни позволяват да изпълняваме процедури отложено във времето. Те може да са регулярни, еднократни или ограничени в даден интервал от време. Основната полза от тях идва тогава, когато искаме да извършваме операции, които не са жизненоважни за функционирането на системата „в момента на изпълнение“. Такива може да са заявки за обобщение на данни (например изготвяне на статистически отчет в края на деня) или такава промяна на данни, която е хубаво да бъде правена, но не е съществено необходима за функционирането на системата и ако я правим всеки път, то бихме забавили излишно приложението. Прочети още…

.

 


* Симулиране на CHECK със SIGNAL в тригер

Публикувано на 02 април 2012 в раздел Бази от Данни.

Към версия 5.5 MySQL продължава да НЕ поддържа CHECK ограничения. В предишна статия показахме как може да се симулира CHECK с VIEW. С версия 5.5 на MySQL вече може да се използват т.нар. SIGNALS в тригери и съхранени процедури, което ни позволява „да хвърляме грешки“ от тях. Прочети още…

.

 


* Тригери

Публикувано на 01 април 2012 в раздел Бази от Данни.

Тригерите са начин за автоматизиране на действия, свързани с обработката на информация в базите от данни. Те са процедури, които се изпълняват при извикване на заявки insert, update или delete. Ако приемем изпълнението на такива заявки за „събитие“, то тригерите са процедури, които се изпълняват преди или след дадено събитие.

Нека покажем един пример – ще създадем таблица с няколко футболни отбора: Прочети още…

.