ปล่อย PostgreSQL 17

หลังจากหนึ่งปีของการพัฒนา PostgreSQL 17 DBMS สาขาใหม่ที่เสถียรก็ได้รับการเผยแพร่แล้ว การอัปเดตสำหรับสาขาใหม่จะเปิดตัวในอีกห้าปีจนถึงเดือนพฤศจิกายน 2029 PostgreSQL 12.x ซึ่งเป็นสาขาที่เก่าแก่ที่สุดที่รองรับ จะสิ้นสุดในวันที่ 14 พฤศจิกายน

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

  • เมื่อดำเนินการ VACUUM (การรวบรวมขยะ การทำความสะอาด และการบรรจุพื้นที่จัดเก็บดิสก์) โครงสร้างข้อมูลใหม่จะถูกนำมาใช้ซึ่งใช้หน่วยความจำน้อยลงถึง 20 เท่า การเปลี่ยนไปใช้โครงสร้างใหม่ทำให้การดำเนินการ VACUUM ทำงานเร็วขึ้น และลดการใช้ทรัพยากรที่ใช้ร่วมกัน
  • เพิ่มประสิทธิภาพ I/O อย่างต่อเนื่อง การปรับปรุงโค้ดสำหรับการจัดการบันทึกการเขียนแบบ Lazy WAL ได้เพิ่มปริมาณงานการเขียนได้ถึงสองเท่าบนระบบที่มีการสืบค้นพร้อมกันจำนวนมาก มีการเสนออินเทอร์เฟซ I/O สตรีมมิ่งใหม่เพื่อเพิ่มความเร็วของการค้นหาข้อมูลตามลำดับในตาราง และเร่งความเร็วในการอัปเดตสถิติสำหรับผู้วางแผนแบบสอบถามหลังจากดำเนินการวิเคราะห์
  • ปรับปรุงประสิทธิภาพสำหรับการสอบถาม IN เมื่อใช้ดัชนี B-tree ความเป็นไปได้ของการสร้างดัชนี BRIN (Block Range Index) แบบขนานได้ถูกนำมาใช้แล้ว เครื่องมือวางแผนคิวรีได้ปรับการตรวจสอบ "NOT NULL" ให้เหมาะสม และเร่งการประมวลผลของ Common Table Expressions (CTE) ที่กำหนดโดยใช้คำสั่ง SQL "WITH" การใช้คำสั่งเวกเตอร์โปรเซสเซอร์ (SIMD) มีไว้เพื่อเร่งความเร็วการคำนวณบางอย่าง เช่น คำสั่ง AVX-512 ใช้เพื่อเร่งความเร็วฟังก์ชัน bit_count
  • มีการรองรับคุณสมบัติใหม่ๆ สำหรับการทำงานกับรูปแบบ JSON ที่กำหนดในมาตรฐาน SQL/JSON แล้ว เพิ่มฟังก์ชัน JSON-TABLE เพื่อแปลงข้อมูล JSON เป็นตาราง PostgreSQL ปกติ รวมถึงตัวดำเนินการ jsonpath ใหม่เพื่อแปลงข้อมูล JSON เป็นประเภทข้อมูล PostgreSQL ดั้งเดิม มีการเสนอฟังก์ชันใหม่สำหรับการสร้างข้อมูล (JSON, JSON_SCALAR และ JSON_SERIALIZE) และการสืบค้น (JSON_EXISTS, JSON_QUERY และ JSON_VALUE) ในรูปแบบ JSON
  • ความสามารถของคำสั่ง SQL “ผสาน” ได้รับการขยาย ทำให้คุณสามารถสร้างนิพจน์ SQL แบบมีเงื่อนไขที่รวมการดำเนินการ INSERT, UPDATE และ DELETE ไว้ในนิพจน์เดียว เพิ่มการรองรับนิพจน์ RETURNING ซึ่งช่วยให้คุณสามารถคำนวณและส่งคืนค่าตามแถวที่เพิ่ม อัปเดต หรือลบออก มีการดำเนินการสนับสนุนการอัปเดตมุมมองแล้ว
  • ความสามารถในการโหลดและส่งออกข้อมูลในโหมดแบตช์ได้รับการขยายแล้ว ในคำสั่ง COPY ความเร็วในการส่งออกสตริงขนาดใหญ่เพิ่มขึ้นสูงสุดสองเท่า การคัดลอกได้รับการปรับปรุงเมื่อการเข้ารหัสต้นทางและเป้าหมายตรงกัน และเพิ่มตัวเลือก ON_ERROR ซึ่งช่วยให้คุณสามารถนำเข้าต่อไปได้หลังจากเกิดข้อผิดพลาดเมื่อแทรกข้อมูล .
  • สำหรับตารางที่แบ่งพาร์ติชัน ได้มีการเพิ่มความสามารถในการใช้คอลัมน์ที่มีตัวระบุที่ไม่ซ้ำกันและการสนับสนุนสำหรับเทคนิคการปรับให้เหมาะสมแบบสอบถาม "การยกเว้นข้อจำกัด"
  • กลไกในการเชื่อมต่อตารางภายนอก Foreign Data Wrapper (postgres_fdw) ใช้ความสามารถในการถ่ายโอนแบบสอบถามย่อย "EXISTS" และ "IN" ไปยังเซิร์ฟเวอร์ภายนอก
  • มีการนำเอ็นจิ้นที่ไม่ขึ้นกับแพลตฟอร์มในตัวมาใช้เพื่อประมวลผลคุณสมบัติของโลแคล "การจัดเรียง" ซึ่งใช้ในการตั้งกฎการเรียงลำดับและวิธีการจับคู่โดยคำนึงถึงความหมายของอักขระ (ตัวอย่างเช่น เมื่อเรียงลำดับค่าดิจิทัล การมีอยู่ของ เครื่องหมายลบและจุดหน้าตัวเลขและการสะกดประเภทต่าง ๆ จะถูกนำมาพิจารณา แต่เมื่อทำการเปรียบเทียบจะไม่คำนึงถึงตัวพิมพ์และการมีอยู่ของเครื่องหมายเน้นเสียง) เอ็นจิ้นใหม่รับประกันการทำงานที่เหมือนกันเมื่อเรียงลำดับผลลัพธ์การค้นหา ไม่ว่า PostgreSQL จะทำงานบนแพลตฟอร์มใดก็ตาม
  • กลไกการจำลองแบบลอจิคัล ซึ่งอนุญาตให้มีการเปลี่ยนแปลงฐานข้อมูลในระหว่างการเพิ่ม ลบ หรืออัปเดตบันทึกที่จะแปลไปยังเซิร์ฟเวอร์อื่น ช่วยให้กระบวนการอัปเดต DBMS ง่ายขึ้น ก่อนหน้านี้ เมื่อย้ายไปยังรีลีสหลักใหม่ คุณต้องลบสล็อตการจำลองแบบลอจิคัลและซิงโครไนซ์ข้อมูลใหม่ ตอนนี้คุณสามารถทำได้โดยไม่ต้องลบสล็อต สำหรับการกำหนดค่าที่ทนต่อข้อผิดพลาด ได้มีการนำความสามารถในการควบคุมการสลับไปใช้เซิร์ฟเวอร์สำรอง (เฟลโอเวอร์) สำหรับการจำลองแบบลอจิคัลแล้ว มีการเพิ่มยูทิลิตี pg_createsubscriber ใหม่เพื่อแปลงฟิสิคัลเรพลิกาเป็นโลจิคัลเรพลิกาใหม่
  • เพิ่มตัวเลือก "sslnegotiation" ใหม่เพื่อเจรจาการเชื่อมต่อ TLS ที่ปลอดภัยโดยตรงโดยใช้ส่วนขยาย ALPN TLS
  • บทบาทที่กำหนดไว้ล่วงหน้า pg_maintain ได้รับการปรับใช้ โดยให้สิทธิ์แก่ผู้ใช้ในการดำเนินการที่เกี่ยวข้องกับการบำรุงรักษา DBMS
  • เพิ่มการรองรับการสำรองข้อมูลส่วนเพิ่มลงในยูทิลิตี้ pg_basebackup ซึ่งใช้เพื่อสร้างการสำรองฐานข้อมูล ในการสร้างการสำรองข้อมูลทั้งหมดใหม่จากชุดสำเนาที่เพิ่มขึ้น มีการเสนอยูทิลิตีใหม่ pg_combinebacku เพิ่มตัวเลือก “--ตัวกรอง” ลงในยูทิลิตี้ pg_dump เพื่อเลือกอ็อบเจ็กต์ที่จะรวมไว้ในดัมพ์
  • เมื่อวิเคราะห์การสืบค้นโดยใช้คำสั่ง SQL “อธิบาย” เวลาที่ใช้ในการอ่านและเขียนบล็อกในเครื่องระหว่าง I/O จะปรากฏขึ้น คำสั่ง EXPLAIN ยังเพิ่มตัวเลือกใหม่สองตัวเลือก ได้แก่ MEMORY และ SERIALIZE ซึ่งช่วยให้คุณสามารถกำหนดจำนวนหน่วยความจำที่ใช้และเวลาที่ใช้ในการแปลงข้อมูลสำหรับการส่งผ่านเครือข่าย
  • แสดงให้เห็นความคืบหน้าของการดำเนินการ VACUUM พร้อมดัชนี
  • มุมมองระบบ pg_wait_events ได้ถูกเพิ่มแล้ว ซึ่งเมื่อรวมกับมุมมอง pg_stat_activity ช่วยให้คุณสามารถเจาะลึกลงไปว่าเหตุใดเซสชันที่ใช้งานอยู่ในสถานะรอ

ที่มา: opennet.ru

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