Menimcha, oldingi nashrlardan farqli o'laroq, PostgreSQL 12 bir yoki ikkita inqilobiy xususiyatni o'z ichiga olmaydi (bo'linish yoki so'rovlar parallelligi kabi). Men bir marta hazillashdimki, PostgreSQL 12 ning asosiy xususiyati kattaroq barqarorlikdir. Sizning biznesingizning muhim ma'lumotlarini boshqarishda sizga kerak bo'lgan narsa shu emasmi?
Ammo PostgreSQL 12 shu bilan tugamaydi: yangi xususiyatlar va yaxshilanishlar bilan ilovalar yanada yaxshi ishlaydi, va siz qilishingiz kerak bo'lgan yagona narsa yangilanishdir!
(Xo'sh, indekslarni qayta tiklashingiz mumkin, ammo bu nashrda biz odatdagidek qo'rqinchli emas.)
PostgreSQL-ni yangilash va keraksiz shov-shuvlarsiz darhol sezilarli yaxshilanishlardan bahramand bo'lish juda yaxshi bo'ladi. Bir necha yil oldin men PostgreSQL 9.4 dan PostgreSQL 10 ga yangilashni ko'rib chiqdim va PostgreSQL 10 da yaxshilangan so'rovlar parallelligi tufayli ilova qanday tezlashganini ko'rdim. Va eng muhimi, mendan deyarli hech narsa talab qilinmadi (shunchaki konfiguratsiya parametrini o'rnating. max_parallel_workers
).
Qabul qiling, ilovalar yangilangandan so'ng darhol yaxshiroq ishlaganda qulay. Va biz foydalanuvchilarni xursand qilish uchun juda ko'p harakat qilamiz, chunki PostgreSQL-da ularning soni tobora ko'payib bormoqda.
Xo'sh, qanday qilib PostgreSQL 12 ga oddiy yangilanish sizni xursand qilishi mumkin? Men hozir aytaman.
Indekslashning asosiy yaxshilanishlari
Indekslashsiz ma'lumotlar bazasi uzoqqa bormaydi. Yana qanday qilib tezda ma'lumotni topishingiz mumkin? PostgreSQL-ning asosiy indekslash tizimi deyiladi
Biz shunchaki operatordan foydalanamiz CREATE INDEX ON some_table (some_column)
, va PostgreSQL biz doimiy ravishda qiymatlarni kiritish, yangilash va o'chirishda indeksni yangilab turish uchun juda ko'p ishlarni bajaradi. Hamma narsa o'z-o'zidan ishlaydi, go'yo sehr bilan.
Ammo PostgreSQL indekslarida bitta muammo bor - ular
PostgreSQL 12 B-daraxt indekslarining ishlashini sezilarli darajada yaxshilaydi va TPC-C kabi ko'rsatkichlar bilan o'tkazilgan tajribalar shuni ko'rsatdiki, hozirda o'rtacha 40% kamroq joy ishlatiladi. Endi biz nafaqat B-daraxt indekslarini saqlashga (ya'ni, yozish operatsiyalariga), balki ma'lumotlarni qayta tiklashga ham kamroq vaqt sarflaymiz, chunki indekslar ancha kichik.
Jadvallarini faol yangilaydigan ilovalar - odatda OLTP ilovalari (
Ba'zi yangilash strategiyalari ushbu imtiyozlardan foydalanish uchun B-daraxt indekslarini qayta tiklashni talab qiladi (masalan,
PostgreSQL 12 da indekslash infratuzilmasida boshqa yaxshilanishlar mavjud. Sehrgarlik bo'lgan yana bir narsa -
PostgreSQL 12 indeksni yaratish jarayonida GiST, GIN va SP-GiST indekslari tomonidan yaratilgan WAL yozuvlarining qo'shimcha xarajatlarini kamaytirdi. Bu bir qancha sezilarli afzalliklarni beradi: WAL yozuvlari diskda kamroq joy egallaydi va ma'lumotlar tezroq qayta o'ynaladi, masalan, ofatni tiklash yoki o'z vaqtida tiklash. Agar siz ilovalaringizda bunday indekslardan foydalansangiz (masalan, PostGIS-ga asoslangan geofazoviy ilovalar GiST indeksidan ko'p foydalanadi), bu sizning tarafingizdan hech qanday harakat qilmasdan tajribani sezilarli darajada yaxshilaydigan yana bir xususiyatdir.
Bo'linish - kattaroq, yaxshiroq, tezroq
PostgreSQL 10 joriy etildi
PostgreSQL 12-da, bo'linish tizimining ishlashi sezilarli darajada yaxshilandi, ayniqsa jadvalda minglab bo'limlar mavjud bo'lsa. Misol uchun, agar so'rov minglab jadvaldagi bir nechta bo'limlarga ta'sir qilsa, u tezroq bajariladi. Ushbu turdagi so'rovlar uchun unumdorlik yaxshilanmaydi. Bundan tashqari, bir nechta bo'limli jadvallarda INSERT operatsiyalari qanchalik tez bajarilishini ko'rasiz.
Foydalanish orqali ma'lumotlarni yozib olish
Ushbu afzalliklar tufayli PostgreSQL sizga kattaroq ma'lumotlar to'plamlarini saqlash va ularni olishni osonlashtirish imkonini beradi. Va sizning tarafingizdan hech qanday harakat yo'q. Agar dasturda vaqt seriyasi ma'lumotlarini yozish kabi ko'plab bo'limlar bo'lsa, oddiy yangilash uning ish faoliyatini sezilarli darajada yaxshilaydi.
Garchi bu "yangilash va zavqlanish" yaxshilanishi bo'lmasa-da, PostgreSQL 12 sizga qismlarga bo'lingan jadvallarga havola qiluvchi xorijiy kalitlarni yaratishga imkon beradi, bu esa bo'limlarni ishlashdan zavqlantiradi.
WITH so'rovlari ancha yaxshilandi
qachon
Men tez-tez SQL-ga yangi boshlanuvchilar CTE-dan foydalanishni yaxshi ko'rishlarini ko'raman; agar siz ularni ma'lum bir tarzda yozsangiz, siz haqiqatan ham imperativ dastur yozayotgandek bo'lasiz. Shaxsan men bu so'rovlarni aylanib chiqish uchun qayta yozishni yoqtirardim holda CTE va unumdorlikni oshirish. Endi hammasi boshqacha.
PostgreSQL 12 sizga ma'lum turdagi CTE ni nojo'ya ta'sirlarsiz kiritish imkonini beradi (SELECT
), so'rov oxirida faqat bir marta ishlatiladi. Agar men qayta yozgan CTE so'rovlarini kuzatib tursam, ularning aksariyati ushbu toifaga kiradi. Bu ishlab chiquvchilarga aniq kod yozishga yordam beradi, endi u ham tez ishlaydi.
Bundan tashqari, PostgreSQL 12 hech narsa qilmasdan SQL bajarilishini optimallashtiradi. Va endi men bunday so'rovlarni optimallashtirishga hojat qolmasa ham, PostgreSQL so'rovlarni optimallashtirish ustida ishlashda davom etayotgani juda yaxshi.
Just-in-Time (JIT) - endi standart
Qo'llab-quvvatlanadigan PostgreSQL 12 tizimlarida
PostgreSQL 12 da JIT sukut boʻyicha yoqilganligi sababli, unumdorlik oʻz-oʻzidan yaxshilanadi, lekin soʻrovlar samaradorligini oʻlchash va biror narsani sozlashingiz kerakligini bilish uchun JITni joriy qilgan PostgreSQL 11 da ilovani sinab koʻrishni tavsiya qilaman.
PostgreSQL 12-dagi qolgan yangi xususiyatlar haqida nima deyish mumkin?
PostgreSQL 12 standart SQL/JSON marshrut ifodalari yordamida JSON ma'lumotlarini tekshirish qobiliyatidan tortib parametr bilan ko'p faktorli autentifikatsiyagacha bo'lgan ko'plab ajoyib yangi xususiyatlarga ega. clientcert=verify-full
, yaratilgan ustunlar va boshqalar. Alohida post uchun etarli.
PostgreSQL 10 singari, PostgreSQL 12 ham yangilanishdan so'ng darhol umumiy ish faoliyatini yaxshilaydi. Siz, albatta, o'z yo'lingizga ega bo'lishingiz mumkin - yaxshilanishlarni yoqishdan oldin, men PostgreSQL 10 bilan qilganimdek, dasturni ishlab chiqarish tizimida shunga o'xshash sharoitlarda sinab ko'ring. Hatto PostgreSQL 12 men kutganimdan ham barqarorroq bo'lsa ham, sinovdan o'tishda dangasa bo'lmang. ilovalarni ishlab chiqarishga chiqarishdan oldin yaxshilab o'rganing.
Manba: www.habr.com