ปล่อย PostgreSQL 14

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

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

  • เพิ่มการสนับสนุนสำหรับการเข้าถึงข้อมูล JSON โดยใช้นิพจน์แบบอาร์เรย์: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * จากการทดสอบ WHERE รายละเอียด ['attributes']['size'] = '"medium"';

    มีการใช้ไวยากรณ์ที่คล้ายกันสำหรับข้อมูลคีย์/ค่าที่จัดทำโดยประเภท hstore ไวยากรณ์นี้เริ่มนำมาใช้โดยใช้กรอบงานสากล ซึ่งในอนาคตอาจนำไปใช้กับประเภทอื่นได้ ตัวอย่างสำหรับประเภท hstore: INSERT INTO mytable VALUES ('a=>b, c=>d'); เลือก h['a'] จาก mytable; อัปเดต mytable SET h['c'] = 'ใหม่';

  • กลุ่มประเภทสำหรับการกำหนดช่วงได้รับการขยายด้วยประเภท "หลายช่วง" ใหม่ ซึ่งช่วยให้คุณสามารถระบุรายการเรียงลำดับของช่วงของค่าที่ไม่ทับซ้อนกันได้ นอกจากประเภทช่วงแต่ละประเภทที่มีอยู่แล้ว ยังมีการเสนอประเภทหลายช่วงของตัวเองด้วย เช่น ประเภท “int4range” สอดคล้องกับ “int4multirange” และประเภท “daterange” สอดคล้องกับ “datemultirange” การใช้ประเภทใหม่ช่วยลดความยุ่งยากในการออกแบบแบบสอบถามที่จัดการลำดับช่วงที่ซับซ้อน เลือก '{[3,7), [8,9)}'::int4multirange; เลือก nummultirange (ตัวเลข (1.0, 14.0), ตัวเลข (20.0, 25.0));
  • มีการเพิ่มประสิทธิภาพเพื่อปรับปรุงประสิทธิภาพของระบบโหลดสูงที่ประมวลผลการเชื่อมต่อจำนวนมาก ในการทดสอบบางอย่างจะพบว่าประสิทธิภาพเพิ่มขึ้นสองเท่า
  • ประสิทธิภาพของดัชนี B-tree ได้รับการปรับปรุง และปัญหาเกี่ยวกับการเติบโตของดัชนีเมื่อมีการอัปเดตตารางบ่อยครั้งได้รับการแก้ไขแล้ว
  • เพิ่มการรองรับสำหรับโหมดการส่งคำขอไปป์ไลน์ฝั่งไคลเอ็นต์ (ใช้งานที่ระดับ libpq) ซึ่งช่วยให้คุณเร่งความเร็วสถานการณ์ฐานข้อมูลที่เกี่ยวข้องกับการดำเนินการเขียนขนาดเล็กจำนวนมาก (INSERT/UPDATE/DELETE) ได้อย่างมาก โดยการส่ง คำขอครั้งต่อไปโดยไม่ต้องรอผลจากครั้งก่อน โหมดนี้ยังช่วยเพิ่มความเร็วในการเชื่อมต่อกับการเชื่อมต่อที่มีความล่าช้าในการจัดส่งแพ็กเก็ตที่ยาวนาน
  • ความสามารถที่เพิ่มขึ้นสำหรับการกำหนดค่าแบบกระจายที่เกี่ยวข้องกับเซิร์ฟเวอร์ PostgreSQL หลายเครื่อง ในการใช้งานการจำลองแบบลอจิคัล ขณะนี้มีความเป็นไปได้ที่จะส่งธุรกรรมในโหมดสตรีมมิ่งที่อยู่ในกระบวนการดำเนินการ ซึ่งสามารถปรับปรุงประสิทธิภาพของการจำลองแบบของธุรกรรมขนาดใหญ่ได้อย่างมาก นอกจากนี้ การถอดรหัสข้อมูลที่ได้รับระหว่างการจำลองแบบลอจิคัลยังได้รับการปรับปรุงให้เหมาะสมอีกด้วย
  • กลไกในการเชื่อมต่อตารางภายนอก Foreign Data Wrapper (postgres_fdw) ได้เพิ่มการรองรับสำหรับการประมวลผลแบบสอบถามแบบขนาน ซึ่งปัจจุบันใช้ได้เฉพาะเมื่อเชื่อมต่อกับเซิร์ฟเวอร์ PostgreSQL อื่น ๆ เท่านั้น postgres_fdw ยังเพิ่มการรองรับสำหรับการเพิ่มข้อมูลลงในตารางภายนอกในโหมดแบตช์และความสามารถในการนำเข้าตารางที่แบ่งพาร์ติชันโดยการระบุคำสั่ง "นำเข้า SCHEMA ต่างประเทศ"
  • มีการเพิ่มประสิทธิภาพในการใช้งานการดำเนินการ VACUUM (การรวบรวมขยะและการบรรจุหีบห่อของพื้นที่จัดเก็บดิสก์) มีการเพิ่มโหมดการล้างข้อมูลฉุกเฉินที่ข้ามการดำเนินการล้างข้อมูลที่ไม่จำเป็นหากมีการสร้างเงื่อนไขการสรุปรหัสธุรกรรม ลดค่าใช้จ่ายเมื่อประมวลผลดัชนีในรูปแบบ B-Tree การดำเนินการ “วิเคราะห์” ซึ่งรวบรวมสถิติเกี่ยวกับการทำงานของฐานข้อมูลได้รับการเร่งให้เร็วขึ้นอย่างมาก
  • เพิ่มความสามารถในการกำหนดค่าวิธีการบีบอัดที่ใช้ในระบบ TOAST ซึ่งมีหน้าที่จัดเก็บข้อมูลขนาดใหญ่ เช่น บล็อกข้อความหรือข้อมูลทางเรขาคณิต นอกเหนือจากวิธีการบีบอัด pglz แล้ว TOAST ยังสามารถใช้อัลกอริธึม LZ4 ได้อีกด้วย
  • มีการขยายเครื่องมือในการติดตามการทำงานของ DBMS เพิ่มมุมมองเพื่อติดตามความคืบหน้าของคำสั่ง COPY (pg_stat_progress_copy) สถิติเกี่ยวกับสล็อตการจำลอง (pg_stat_replication_slots) และกิจกรรมที่เกี่ยวข้องกับบันทึกธุรกรรม WAL (pg_stat_wal) มีการเพิ่มฟังก์ชัน compute_query_id ซึ่งช่วยให้ระบบย่อยต่างๆ เช่น pg_stat_activity และ EXPLAIN VERBOSE ติดตามคำขอโดยการกำหนดตัวระบุเฉพาะสำหรับแต่ละคำขอ
  • เพิ่มการเพิ่มประสิทธิภาพให้กับเครื่องมือวางแผนแบบสอบถามเพื่อปรับปรุงการประมวลผลแบบสอบถามแบบขนาน และปรับปรุงประสิทธิภาพของการดำเนินการสแกนบันทึกตามลำดับพร้อมกัน การดำเนินการแบบสอบถามแบบขนานใน PL/pgSQL โดยใช้คำสั่ง “RETURN QUERY” และการดำเนินการแบบสอบถามแบบขนานใน “ รีเฟรชมุมมองที่เป็นรูปธรรม” เพื่อปรับปรุงประสิทธิภาพของการผสานแบบซ้อนแบบวน (เข้าร่วม) จึงได้มีการนำการสนับสนุนแคชเพิ่มเติมมาใช้
  • ขณะนี้คุณสามารถใช้สถิติขั้นสูงเพื่อเพิ่มประสิทธิภาพนิพจน์ได้ และการเรียงลำดับแบบเพิ่มหน่วยสามารถใช้เพื่อเพิ่มประสิทธิภาพฟังก์ชันหน้าต่างได้
  • ขั้นตอนการจัดเก็บที่ช่วยให้คุณสามารถจัดการธุรกรรมในบล็อกของรหัสได้ในขณะนี้สนับสนุนการกำหนดข้อมูลที่ส่งคืนโดยใช้พารามิเตอร์ "OUT"
  • เพิ่มฟังก์ชัน date_bin เพื่อปัดเศษค่าประทับเวลาตามช่วงเวลาที่ระบุ SELECT date_bin('15 นาที', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • เพิ่มนิพจน์ SEARCH และ CYCLE ที่กำหนดไว้ในมาตรฐาน SQL เพื่อให้ง่ายต่อการสั่งซื้อและระบุรอบใน Common Table Expressions (CTE) แบบเรียกซ้ำ ด้วย RECURSIVE search_tree(id, link, data) AS ( SELECT t.id, t.link, t.data จาก tree t UNION เลือกทั้งหมด t.id, t.link, t.data จาก tree t, search_tree st WHERE t id = st.link ) ค้นหาความลึกก่อนโดย id SET ordercol SELECT * จาก search_tree ORDER BY ordercol;
  • ในยูทิลิตี้ psql การเติมคำสั่งอัตโนมัติด้วยแท็บได้รับการปรับปรุง เพิ่มความสามารถในการแสดงอาร์กิวเมนต์ของฟังก์ชันในคำสั่ง “\df” และสถิติที่แสดงได้ขยายไปยังคำสั่ง “\dX”
  • สามารถกำหนดสิทธิ์แบบอ่านอย่างเดียวหรือเขียนอย่างเดียวให้กับผู้ใช้ได้ สามารถตั้งค่าสิทธิ์บนตาราง มุมมอง และสคีมาแต่ละรายการได้โดยใช้บทบาทที่กำหนดไว้ล่วงหน้า pg_read_all_data และ pg_write_all_data ให้สิทธิ์ pg_read_all_data แก่ผู้ใช้ 1;
  • การติดตั้งใหม่จะใช้ค่าเริ่มต้นในการตรวจสอบรหัสผ่านโดยใช้ SCRAM-SHA-256 แทน md5 (พารามิเตอร์ "password_encryption" เมื่อสร้าง postgresql.conf ถูกตั้งค่าเป็น 'scram-sha-256')

ที่มา: opennet.ru

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