ปล่อย PostgreSQL 15

หลังจากหนึ่งปีของการพัฒนา PostgreSQL 15 DBMS สาขาเสถียรใหม่ก็ได้รับการเผยแพร่แล้ว การอัปเดตสำหรับสาขาใหม่จะเปิดตัวในระยะเวลาห้าปีจนถึงเดือนพฤศจิกายน 2027

นวัตกรรมหลัก:

  • เพิ่มการรองรับคำสั่ง SQL "MERGE" ซึ่งคล้ายกับนิพจน์ "INSERT ... ON CONFLICT" MERGE ช่วยให้คุณสร้างคำสั่ง SQL แบบมีเงื่อนไขที่รวมการดำเนินการ INSERT, UPDATE และ DELETE ไว้ในนิพจน์เดียว ตัวอย่างเช่น เมื่อใช้ MERGE คุณสามารถรวมสองตารางเข้าด้วยกันได้โดยการแทรกบันทึกที่หายไปและอัปเดตรายการที่มีอยู่ รวมเข้ากับ customer_account ca การใช้ latest_transactions t ON t.customer_id = ca.customer_id เมื่อจับคู่แล้วอัปเดต SET balance = balance + Transaction_value เมื่อไม่ตรงกัน จากนั้นใส่ (customer_id, balance) VALUES (t.customer_id, t.transaction_value);
  • อัลกอริทึมสำหรับการเรียงลำดับข้อมูลในหน่วยความจำและบนดิสก์ได้รับการปรับปรุงอย่างมีนัยสำคัญ การทดสอบแสดงความเร็วในการจัดเรียงเพิ่มขึ้นจาก 25% เป็น 400% ทั้งนี้ขึ้นอยู่กับประเภทของข้อมูล
  • ฟังก์ชั่นหน้าต่างที่ใช้ row_number(), rank(), หนาแน่น_rank() และ count() ได้รับการเร่งความเร็ว
  • มีการนำความเป็นไปได้ของการดำเนินการแบบสอบถามแบบขนานด้วยนิพจน์ "SELECT DISTINCT"
  • กลไกในการเชื่อมต่อตารางภายนอก Foreign Data Wrapper (postgres_fdw) ใช้การสนับสนุนสำหรับการคอมมิตแบบอะซิงโครนัส นอกเหนือจากความสามารถที่เพิ่มไว้ก่อนหน้านี้ในการประมวลผลคำขอแบบอะซิงโครนัสไปยังเซิร์ฟเวอร์ภายนอก
  • เพิ่มความสามารถในการใช้อัลกอริธึม LZ4 และ Zstandard (zstd) เพื่อบีบอัดบันทึกธุรกรรม WAL ซึ่งภายใต้ปริมาณงานบางอย่างสามารถปรับปรุงประสิทธิภาพและประหยัดพื้นที่ดิสก์ได้พร้อมกัน เพื่อลดเวลาในการกู้คืนหลังจากเกิดความล้มเหลว จึงได้มีการเพิ่มการรองรับการดึงข้อมูลเพจที่ปรากฏในบันทึก WAL ในเชิงรุก
  • ยูทิลิตี้ pg_basebackup ได้เพิ่มการรองรับการบีบอัดไฟล์สำรองฝั่งเซิร์ฟเวอร์โดยใช้วิธี gzip, LZ4 หรือ zstd คุณสามารถใช้โมดูลของคุณเองในการเก็บถาวรได้ ซึ่งช่วยให้คุณทำได้โดยไม่ต้องรันคำสั่งเชลล์
  • มีการเพิ่มชุดฟังก์ชันใหม่เพื่อประมวลผลสตริงโดยใช้นิพจน์ทั่วไป: regexp_count(), regexp_instr(), regexp_like() และ regexp_substr()
  • เพิ่มความสามารถในการรวมประเภทหลายช่วง (“หลายช่วง”) เข้ากับฟังก์ชัน range_agg() แล้ว
  • เพิ่มโหมด security_inviver ซึ่งช่วยให้คุณสามารถสร้างมุมมองที่ทำงานในฐานะผู้ใช้ที่เรียกมากกว่าผู้สร้างมุมมอง
  • สำหรับการจำลองแบบลอจิคัล มีการรองรับการกรองแถวและการระบุรายการคอลัมน์ ซึ่งช่วยให้ฝั่งผู้ส่งสามารถเลือกชุดย่อยของข้อมูลจากตารางสำหรับการจำลองได้ นอกจากนี้ เวอร์ชันใหม่ยังทำให้การจัดการข้อขัดแย้งง่ายขึ้น เช่น ขณะนี้สามารถข้ามธุรกรรมที่ขัดแย้งกันและปิดใช้งานการสมัครสมาชิกโดยอัตโนมัติเมื่อตรวจพบข้อผิดพลาด การจำลองแบบลอจิคัลอนุญาตให้ใช้การคอมมิตแบบสองเฟส (2PC)
  • มีการเพิ่มรูปแบบบันทึกใหม่ - jsonlog ซึ่งบันทึกข้อมูลในรูปแบบที่มีโครงสร้างโดยใช้รูปแบบ JSON
  • ผู้ดูแลระบบสามารถมอบหมายสิทธิ์ส่วนบุคคลให้กับผู้ใช้เพื่อเปลี่ยนพารามิเตอร์การกำหนดค่าเซิร์ฟเวอร์ PostgreSQL บางอย่างได้
  • ยูทิลิตี้ psql ได้เพิ่มการรองรับสำหรับการค้นหาข้อมูลเกี่ยวกับการตั้งค่า (pg_settings) โดยใช้คำสั่ง “\dconfig”
  • รับประกันการใช้หน่วยความจำที่ใช้ร่วมกันในการสะสมสถิติเกี่ยวกับการทำงานของเซิร์ฟเวอร์ซึ่งทำให้สามารถกำจัดกระบวนการรวบรวมสถิติแยกต่างหากและรีเซ็ตสถานะเป็นดิสก์เป็นระยะ
  • มีการจัดเตรียมความสามารถในการใช้ตำแหน่งที่ตั้ง ICU เริ่มต้น "การจัดเรียง ICU" ก่อนหน้านี้ เฉพาะตำแหน่งที่ตั้ง libc เท่านั้นที่สามารถใช้เป็นตำแหน่งที่ตั้งเริ่มต้นได้
  • มีการเสนอส่วนขยาย pg_walinspect ในตัวซึ่งช่วยให้คุณสามารถตรวจสอบเนื้อหาของไฟล์ที่มีบันทึก WAL โดยใช้คำสั่ง SQL
  • สำหรับสคีมาสาธารณะ ผู้ใช้ทั้งหมด ยกเว้นเจ้าของฐานข้อมูล ถูกเพิกถอนสิทธิ์ในการรันคำสั่ง CREATE
  • การสนับสนุน Python 2 ถูกลบออกใน PL/Python แล้ว โหมดการสำรองข้อมูลพิเศษที่ล้าสมัยได้ถูกลบออกแล้ว

เพิ่มเติม: ตั้งแต่เวลา 19:00 น. ถึง 20:00 น. (MSK) จะมีการสัมมนาผ่านเว็บเพื่อหารือเกี่ยวกับการเปลี่ยนแปลงในเวอร์ชันใหม่กับ Pavel Luzanov (Postgres Professional) สำหรับผู้ที่ไม่สามารถเข้าร่วมการออกอากาศได้ บันทึกรายงานเดือนมิถุนายนของ Pavel “PostgreSQL 15: MERGE และอื่นๆ” ที่ PGConf.Russia ได้เปิดอยู่

ที่มา: opennet.ru

เพิ่มความคิดเห็น