План запиту — упорядкований набір кроків, які використовуються для доступу до даних в системах керування базами даних SQL. Це конкретний випадок концепції реляційних моделей планів доступу. Оскільки мова SQL є декларативною, то зазвичай існує велика кількість альтернативних способів виконання заданого запиту з широким діапазоном продуктивності. Коли запит відправляється в базу даних, оптимізатор запитів оцінює деякі з різних, правильних можливих планів виконання запиту і повертає той, який він вважає найкращим. Оскільки оптимізатори запитів недосконалі, то користувачам і адміністраторам баз даних іноді доводиться вручну перевіряти і налаштовувати плани, створені оптимізатором, для підвищення продуктивності.
Створення планів запитів
Кожна система керування базами даних може запропонувати один або кілька механізмів повернення плану заданого запиту. Деякі пакети містять інструменти, що генерують графічне подання плану запиту. Інші інструменти дозволяють встановити в з'єднанні спеціальний режим, що змушує СКБД повертати текстовий опис плану запиту. Інший механізм отримання плану запиту включає запит до таблиці віртуальної бази даних після виконання запиту, який потрібно досліджувати. В Oracle, наприклад, це може бути досягнуто за допомогою оператора EXPLAIN PLAN
.
Графічні плани
Наприклад, інструмент SQL Server Management Studio, який поставляється з Microsoft SQL Server, показує графічний план при виконанні даного двостолового з'єднання зі зразковою базою даних:
SELECT * FROM HumanResources.Employee AS e INNER JOIN Person.Contact AS c ON e.ContactID = c.ContactID ORDER BY c.LastName
Інтерфейс дозволяє досліджувати різні атрибути операторів, що беруть участь у плані запиту, в тому числі тип оператора, кількість рядків, яке кожен оператор споживає або виробляє, а також очікувану вартість роботи кожного оператора.
Текстові плани
Текстовий план вищенаведеного запиту має такий вигляд:
StmtText ---- |--Sort(ORDER BY:([c].[LastName] ASC)) |--Nested Loops(Inner Join, OUTER REFERENCES:([e].[ContactID], [Expr1004]) WITH UNORDERED PREFETCH) |--Clustered Index Scan(OBJECT:([AdventureWorks].[HumanResources].[Employee].[PK_Employee_EmployeeID] AS [e])) |--Clustered Index Seek(OBJECT:([AdventureWorks].[Person].[Contact].[PK_Contact_ContactID] AS [c]), SEEK:([c].[ContactID]=[AdventureWorks].[HumanResources].[Employee].[ContactID] as [e].[ContactID]) ORDERED FORWARD)
Він вказує, що механізм запитів виконає перевірку індексу первинного ключа таблиці Employee
і пошук за індексом первинного ключа (стовпчик ContactID
) таблиці Contact
, щоб знайти рядки зі збігом. Результатні рядки з кожного боку буде показано вкладеному оператору об'єднання вкладених циклів, відсортовано, а потім повернуті як результат, встановлений для з'єднання. Щоб налаштувати запит, користувач повинен розуміти різні оператори, які може використовувати база даних, і ті, які можуть бути ефективнішими за інші, при цьому забезпечуючи семантично правильні результати запиту.
Налаштування бази даних
Перегляд плану запиту може надати можливості для створення нових індексів або зміни наявних. Він також може показати, що база даних неправильно використовує наявні індекси.
Налаштування запитів
Оптимізатор запитів не завжди обиратиме найефективніший план даного запиту. В деяких базах даних план запиту можна переглянути, знайти проблеми, а потім оптимізатор запитів дає підказки з його поліпшення. В інших базах даних можна спробувати альтернативи даного запиту (семантично еквівалентні запити, які повертають такі самі результати). Деякі інструменти запитів можуть генерувати вбудовані підказки в запиті для використання оптимізатором. Деякі бази даних на кшталт Oracle надають таблицю планів для налаштування запитів. Така таблиця планів повертає вартість і час виконання запиту. Oracle пропонує два підходи до оптимізації: на основі витрат або правил. Другий підхід повільно застаріває[]. Для використання оптимізації на основі витрат усі таблиці, що використовуються в запиті, повинні бути проаналізовані. Для цього адміністратор бази даних може запустити код з пакету DBMS_STATS
. Іншими інструментами для оптимізації запитів є: трасування SQL, та TKPROF.
Див. також
Посилання
- Сінх, Хардіп (2009). SQL Performance Tuning with reference to Oracle [Регулювання продуктивності SQL з посиланням на Oracle]. Seeing With C (англійською) . Процитовано 24 травня 2017.
{{}}
: Обслуговування CS1: Сторінки з параметром url-status, але без параметра archive-url ()
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Plan zapitu uporyadkovanij nabir krokiv yaki vikoristovuyutsya dlya dostupu do danih v sistemah keruvannya bazami danih SQL Ce konkretnij vipadok koncepciyi relyacijnih modelej planiv dostupu Oskilki mova SQL ye deklarativnoyu to zazvichaj isnuye velika kilkist alternativnih sposobiv vikonannya zadanogo zapitu z shirokim diapazonom produktivnosti Koli zapit vidpravlyayetsya v bazu danih optimizator zapitiv ocinyuye deyaki z riznih pravilnih mozhlivih planiv vikonannya zapitu i povertaye toj yakij vin vvazhaye najkrashim Oskilki optimizatori zapitiv nedoskonali to koristuvacham i administratoram baz danih inodi dovoditsya vruchnu pereviryati i nalashtovuvati plani stvoreni optimizatorom dlya pidvishennya produktivnosti Stvorennya planiv zapitivKozhna sistema keruvannya bazami danih mozhe zaproponuvati odin abo kilka mehanizmiv povernennya planu zadanogo zapitu Deyaki paketi mistyat instrumenti sho generuyut grafichne podannya planu zapitu Inshi instrumenti dozvolyayut vstanoviti v z yednanni specialnij rezhim sho zmushuye SKBD povertati tekstovij opis planu zapitu Inshij mehanizm otrimannya planu zapitu vklyuchaye zapit do tablici virtualnoyi bazi danih pislya vikonannya zapitu yakij potribno doslidzhuvati V Oracle napriklad ce mozhe buti dosyagnuto za dopomogoyu operatora EXPLAIN PLAN Grafichni plani Napriklad instrument SQL Server Management Studio yakij postavlyayetsya z Microsoft SQL Server pokazuye grafichnij plan pri vikonanni danogo dvostolovogo z yednannya zi zrazkovoyu bazoyu danih SELECT FROM HumanResources Employee AS e INNER JOIN Person Contact AS c ON e ContactID c ContactID ORDER BY c LastName Interfejs dozvolyaye doslidzhuvati rizni atributi operatoriv sho berut uchast u plani zapitu v tomu chisli tip operatora kilkist ryadkiv yake kozhen operator spozhivaye abo viroblyaye a takozh ochikuvanu vartist roboti kozhnogo operatora Tekstovi plani Tekstovij plan vishenavedenogo zapitu maye takij viglyad StmtText Sort ORDER BY c LastName ASC Nested Loops Inner Join OUTER REFERENCES e ContactID Expr1004 WITH UNORDERED PREFETCH Clustered Index Scan OBJECT AdventureWorks HumanResources Employee PK Employee EmployeeID AS e Clustered Index Seek OBJECT AdventureWorks Person Contact PK Contact ContactID AS c SEEK c ContactID AdventureWorks HumanResources Employee ContactID as e ContactID ORDERED FORWARD Vin vkazuye sho mehanizm zapitiv vikonaye perevirku indeksu pervinnogo klyucha tablici Employee i poshuk za indeksom pervinnogo klyucha stovpchik ContactID tablici Contact shob znajti ryadki zi zbigom Rezultatni ryadki z kozhnogo boku bude pokazano vkladenomu operatoru ob yednannya vkladenih cikliv vidsortovano a potim povernuti yak rezultat vstanovlenij dlya z yednannya Shob nalashtuvati zapit koristuvach povinen rozumiti rizni operatori yaki mozhe vikoristovuvati baza danih i ti yaki mozhut buti efektivnishimi za inshi pri comu zabezpechuyuchi semantichno pravilni rezultati zapitu Nalashtuvannya bazi danihDokladnishe Optimizator zapitiv Pereglyad planu zapitu mozhe nadati mozhlivosti dlya stvorennya novih indeksiv abo zmini nayavnih Vin takozh mozhe pokazati sho baza danih nepravilno vikoristovuye nayavni indeksi Nalashtuvannya zapitivOptimizator zapitiv ne zavzhdi obiratime najefektivnishij plan danogo zapitu V deyakih bazah danih plan zapitu mozhna pereglyanuti znajti problemi a potim optimizator zapitiv daye pidkazki z jogo polipshennya V inshih bazah danih mozhna sprobuvati alternativi danogo zapitu semantichno ekvivalentni zapiti yaki povertayut taki sami rezultati Deyaki instrumenti zapitiv mozhut generuvati vbudovani pidkazki v zapiti dlya vikoristannya optimizatorom Deyaki bazi danih na kshtalt Oracle nadayut tablicyu planiv dlya nalashtuvannya zapitiv Taka tablicya planiv povertaye vartist i chas vikonannya zapitu Oracle proponuye dva pidhodi do optimizaciyi na osnovi vitrat abo pravil Drugij pidhid povilno zastarivaye dzherelo Dlya vikoristannya optimizaciyi na osnovi vitrat usi tablici sho vikoristovuyutsya v zapiti povinni buti proanalizovani Dlya cogo administrator bazi danih mozhe zapustiti kod z paketu DBMS STATS Inshimi instrumentami dlya optimizaciyi zapitiv ye trasuvannya SQL ta TKPROF Div takozhSemantichna optimizaciya zapitiv SUBDPosilannyaSinh Hardip 2009 SQL Performance Tuning with reference to Oracle Regulyuvannya produktivnosti SQL z posilannyam na Oracle Seeing With C anglijskoyu Procitovano 24 travnya 2017 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z parametrom url status ale bez parametra archive url posilannya