Mavzu: Soʻrovlarni qayta ishlash
REJA :
Kirish.
SQL so'rovlarini optimallashtirish
So'rovlarni bajarish
Xulosa
Foydalanilgan adabiyotlar va saytlar
So'rovlarni optimallashtirish masalasi har doim ma'lumotlar bazasi ishlab chiquvchilari va ular bilan ishlaydigan dasturchilar uchun dolzarbdir. Ma'lumotlar bazasini boshqarish zamonaviy tizimlari (DBMS) optimizator deb nomlangan komponentni o'z ichiga oladi. Uning ishlashini ko'rib chiqish va so'rovni yoki ma'lumotlar bazasini (JB) o'zgartirishning mumkin bo'lgan usullarini optimallashtiruvchi so'rovlarni bajarish rejasini tuzish va uni amalga oshirishga kam vaqt va mablag 'sarflaydigan tarzda tanlash kerak.
So'rovlarni optimallashtirish uchun bir nechta turli xil yondashuvlar va usullar mavjud, ammo birinchi o'ringa ortiqchalikni aniqlash uchun so'rovlar matnini tahlil qilish uchun SQL tili darajasida leksik optimallashtirish kiradi.
Agar foydalanuvchi qidiruv operatsiyasini boshlasa, ushbu foydalanuvchining SQL-bayonoti bir nechta ketma-ket bosqichlardan o'tadi, bu so'rovlarni qayta ishlash deb nomlanadi. SQL-ning asosiy afzalliklaridan biri shundaki, u protsessual emas, shuning uchun bayonot maqsadiga erishish uchun bajarilishi kerak bo'lgan qadamlarni sanab o'tishga hojat yo'q. Boshqacha qilib aytganda, SQL-ga qandaydir bir ish qilish kerakligini tasvirlashning hojati yo'q, buning o'rniga faqat ma'lumotlar bazasidan talab qilinadigan narsani tasvirlash kerak.
So'rovlarni qayta ishlash ma'lumotlar bazasidan so'ralgan ma'lumotlarni qaytarish uchun SQL bayonotini samarali bajarish rejasiga aylantirishni anglatadi. So'rovlarni optimallashtirish ma'lumotlar bazasi ishlaydigan serverda resurslarni sarflash, masalan, I / U va CPU resurslari kabi eng kam xarajatli natijaga erishish uchun eng samarali ijro rejasini tanlash va shuningdek so'rovning umumiy bajarilish vaqtini qisqartirish jarayonini anglatadi. ushbu so'rovga kiritilgan barcha operatsiyalar uchun vaqt ko'rsatkichlari yig'indisi. Ushbu ishlashni optimallashtirish javob vaqtlarini minimallashtirishga o'xshamasligi mumkin. Agar so'rovning to'liq natijasini emas, balki birinchi n qatorni olishga sarflanadigan vaqtni minimallashtirish zarur bo'lsa, optimallashtiruvchi boshqa rejani tanlashi mumkin va agar barcha so'rov ma'lumotlari uchun javob berish vaqtini minimallashtirish zarur bo'lsa, parallel ishlash rejimi ham tanlanishi mumkin.
Umuman olganda, foydalanuvchi tomonidan bajarilgan har bir SQL bayonoti ajralish bosqichi, optimallashtirish bosqichi va ijro etilish bosqichidan o'tadi. Agar SQL iborasi so'rov bo'lsa, u ma'lumotni olishni nazarda tutadi va shuning uchun, bu holda, ishlov berish jarayoni tugamaguncha, u ham olib kelish bosqichidan o'tadi. Quyidagi bo'limlarda ushbu bosqichlarning har birida Oracle nima qilishi haqida batafsilroq ma'lumot berilgan.
Ajralish bosqichi asosan SQL bayonotlari sintaksisini va semantikasini tekshirishdan iborat. Ushbu bosqich oxirida so'rovning tuzilishini aks ettiruvchi tahlil daraxti yaratiladi.
Xususan, ushbu bosqichda SQL iborasi relyatsion algebra so'roviga aylantirilib, uning sintaktik jihatdan to'g'ri yoki yo'qligini aniqlash uchun tahlil qilinadi. So'ngra ushbu so'rov semantik tekshiruv tekshiruvidan o'tkaziladi, uning davomida so'rovda ko'rsatilgan barcha jadvallar va alohida ustunlar hamda barcha kerakli ob'ekt imtiyozlari mavjud bo'lgan ma'lumotlar lug'ati yordamida tekshiriladi. Bundan tashqari, ma'lumotlar ustunlar ta'riflariga mos kelishini tekshirish uchun ustun turlari tekshiriladi. Keyinchalik operator yanada samarali ishlov berilishi uchun normalizatsiya qilinadi. Agar so'rov noto'g'ri tuzilgan bo'lsa, u rad etiladi. Sinov daraxti barcha sintaktik va semantik tekshiruvlardan o'tganidan so'ng, u tasdiqlanadi va mantiqiy so'rovlar rejasini yaratish bosqichiga yuboriladi. Ushbu operatsiyalarning barchasi kutubxonaning kesh qismini aks ettiruvchi SGA-da amalga oshiriladi.
Optimizatsiya bosqichida Oracle so'rovda mavjud jadvallar va indekslardan ma'lumotlarni olish uchun eng yaxshi kirish usulini tanlash uchun Cost-Base Optimizer (CBO) deb nomlangan optimallashtiruvchi vositadan foydalanadi. Taqdim etilgan statistik ma'lumotlar va SQL so'rovlarida ko'rsatilgan har qanday ko'rsatmalardan foydalangan holda, CBO SQL bayonoti uchun maqbul ijro rejasini tuzadi.
Umuman olganda, optimallashtirish bosqichini ikkita alohida kichik bosqichga bo'lish mumkin: so'rovlarni qayta yozish va jismoniy so'rovlarni bajarish rejasini yaratish. Keling, ushbu ikkita alohida optimallashtirish pastki bosqichlarini batafsil ko'rib chiqamiz.
So'rovni qayta yozish bosqichi
Shu nuqtada, tahlil daraxti so'rov uchun mavhum mantiqiy ijro rejasiga aylantiriladi. U haqiqiy so'rovni bajarish rejasining dastlabki versiyasini aks ettiradi va faqat asl so'rovning umumiy algebraik qayta tuzilgan versiyasini o'z ichiga oladi. Ya'ni, ushbu bosqichda, tahlil qilish daraxtining turli tugunlari va shoxlari relyatsion algebra amallari bilan almashtiriladi. Shuni esda tutingki, bu erda so'rovni qayta yozish materiallashtirilgan ko'rinishlarni ishlatishda qayta yozish bilan bir xil emas.
Ijro rejasini yaratish bosqichi
Bu vaqtda Oracle mantiqiy rejani fizik so'rovlar rejasiga o'zgartiradi. So'rovni qayta ishlash uchun optimallashtiruvchi uchun bir nechta algoritmlar mavjud bo'lishi mumkin. U so'rovga javob berish uchun ushbu algoritmlarning eng samarasini tanlaydi va operatsiyalarni amalga oshirishning eng samarali usulini belgilaydi. Qaysi operatsion bosqichlarni yaxshiroq bajarish kerakligini hal qilish bilan bir qatorda, ushbu bosqichlarni bajarish tartibini ham belgilaydi. Masalan, A jadvali va B jadvali o'rtasida birlashtirish operatsiyasini bajarishga qaror qilgandan so'ng, optimallashtiruvchi ushbu qo'shilishning qaysi turi bo'lishi kerakligini va uni qaysi tartibda bajarish yaxshiroq ekanligini aniqlaydi.
Umuman olganda, optimallashtiruvchi jismoniy yoki so'rovlarni bajarish rejasini tuzishda quyidagi omillarni hisobga oladi:
so'rov paytida bajarilishi kerak bo'lgan turli xil operatsiyalar (masalan, qo'shilish operatsiyalari);
ushbu operatsiyalarni bajarish tartibi;
ularning har birini bajarish uchun ishlatiladigan algoritm;
diskdan yoki xotiradan ma'lumotlarni olishning eng yaxshi usuli;
so'rov paytida ma'lumotlarni bir operatsiyadan boshqasiga o'tkazishning eng yaxshi usuli.
Optimizator potentsial bajarilish rejalari bo'lgan bir nechta haqiqiy fizik so'rov rejalarini yaratishi mumkin. Keyin optimallashtiruvchi mavjud jadval va indeks statistikasi asosida har bir mumkin bo'lgan fizikaviy rejaning narxini taxmin qilish va shu rejani tanlash orqali ularning orasini tanlaydi.
So'rovlarni qayta ishlash jarayonidagi so'nggi qadam optimallashtirilgan so'rovning bajarilishi (tanlangan fizik so'rov rejasi). Agar bu SELECT buyrug'i bo'lsa, u holda tegishli qatorlar foydalanuvchiga qaytariladi, agar u INSERT, UPDATE yoki DELETE buyrug'i bo'lsa, u holda qatorlarga tegishli o'zgarishlar kiritiladi. SQL bajarish mexanizmi optimallashtirish bosqichidan ijro rejasini oladi va uni bajaradi.
SQL bayonotlarini qayta ishlashning uch bosqichidan eng muhimi optimallashtirish bosqichi, chunki u kerakli ma'lumotlarni qanchalik tez olishini belgilaydi. Optimizatorning qanday ishlashini tushunish optimallashtirish jarayonini tushunishda muhim rol o'ynaydi. SQL-ni samarali yozish uchun odatiy kiruvchilar, qo'shilish usullari va qo'shilish buyurtmalari qanday ko'rinishini bilish muhimdir. Shuning uchun, keyingi bo'limda Oracle-ning kuchli CBO optimallashtiruvchisi haqida batafsil ma'lumot berilgan.
Dostları ilə paylaş: |