- PostgreSQL 16 ปรับปรุงด้านความขนานของคิวรี การโหลดข้อมูลปริมาณมาก และการทำ logical replication อย่างเห็นได้ชัด ส่งผลให้ประสิทธิภาพดีขึ้น
- เพิ่มไวยากรณ์ SQL/JSON มากขึ้น สถิติการมอนิเตอร์ชุดใหม่สำหรับเวิร์กโหลด และเพิ่มความยืดหยุ่นในการกำหนดกฎการควบคุมการเข้าถึง
การปรับปรุงประสิทธิภาพ
- ตัววางแผนคิวรีสามารถทำให้ FULL และ RIGHT join ทำงานแบบขนานได้แล้ว และสร้างแผนที่เหมาะสมยิ่งขึ้นสำหรับคิวรีที่ใช้ DISTINCT หรือ ORDER BY ใช้ incremental sort กับคิวรี
SELECT DISTINCT และปรับแต่ง window function
- ปรับปรุงการโหลดข้อมูลแบบ bulk ด้วย COPY ทั้งในงานเดี่ยวและงานพร้อมกัน โดยในบางกรณีประสิทธิภาพเพิ่มขึ้นได้สูงสุด 300%
- เพิ่มการเร่งความเร็วด้วย CPU โดยใช้ SIMD บนสถาปัตยกรรม x86 และ ARM เพื่อเพิ่มประสิทธิภาพในการประมวลผลสตริง ASCII และ JSON รวมถึงการค้นหาอาร์เรย์และ subtransaction
Logical replication
- ตอนนี้สามารถทำ logical replication จากอินสแตนซ์ standby ได้แล้ว ทำให้มีทางเลือกใหม่ในการกระจายงาน
- ใช้ standby ที่ไม่ยุ่งแทน primary ที่มีภาระงานสูงเพื่อจำลองการเปลี่ยนแปลงไปยัง downstream
- ประสิทธิภาพของ logical replication ยังได้รับการปรับปรุงด้วย
- subscriber สามารถใช้ parallel worker เพื่อประมวลผลธุรกรรมขนาดใหญ่ได้
- สำหรับตารางที่ไม่มี primary key สามารถใช้ดัชนี B-tree เพื่อค้นหาแถวแทนการสแกนตามลำดับได้
- ในบางเงื่อนไขสามารถใช้รูปแบบไบนารีเพื่อเร่งความเร็วในการซิงก์ตารางครั้งแรกได้
ประสบการณ์นักพัฒนา
- เพิ่มไวยากรณ์จากมาตรฐาน SQL/JSON มากขึ้น รวมถึง constructor และ predicate เช่น JSON_ARRAY(), JSON_ARRAYAGG(), IS JSON
- สามารถใช้ขีดล่างในตัวเลขหลักพันได้ (5_432_000)
- ใน psql มีการเพิ่ม
\bind เพื่อให้เขียนคิวรีที่มีพารามิเตอร์และแทนที่ด้วยตัวแปรได้
- ปรับปรุงการรองรับการจัดเรียงข้อความ
การมอนิเตอร์
- เพิ่ม
pg_stat_io ที่ให้เมตริกสำหรับวิเคราะห์รูปแบบการเข้าถึง I/O ได้อย่างละเอียด
- เพิ่มฟิลด์ timestamp ในมุมมอง
pg_stat_all_tables เพื่อบันทึกเวลาที่ตารางหรือดัชนีถูกสแกนครั้งล่าสุด
- ทำให้
auto_explain อ่านง่ายขึ้นด้วยการบันทึกค่าที่ส่งให้กับคำสั่งแบบ parameterized
การควบคุมการเข้าถึงและความปลอดภัย
- เพิ่มตัวเลือกที่ละเอียดมากขึ้นสำหรับการควบคุมการเข้าถึง
- ปรับปรุงความสามารถด้านความปลอดภัยอื่น ๆ รวมถึงการจัดการไฟล์ pg_hba.conf และ pg_ident.conf และการเพิ่มพารามิเตอร์การเชื่อมต่อฝั่งไคลเอนต์ที่เน้นความปลอดภัยหลายรายการ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
\bindซึ่งได้รับความนิยมเพราะทำให้สามารถรันคำสั่งคิวรีแบบใส่พารามิเตอร์ได้เช่นเดียวกับที่แอปพลิเคชันทำdebug_io_direct