แอปที่เรากำลังสร้างอาจเรียกใช้คิวรีแทรกขนาดใหญ่ได้ มีข้อ จำกัด หรือไม่ที่แบบสอบถาม postgres ของฉันสามารถมีอักขระได้จำนวนเท่าใด
แอปที่เรากำลังสร้างอาจเรียกใช้คิวรีแทรกขนาดใหญ่ได้ มีข้อ จำกัด หรือไม่ที่แบบสอบถาม postgres ของฉันสามารถมีอักขระได้จำนวนเท่าใด
คำตอบ:
สำหรับเวอร์ชัน PostgreSQL ปัจจุบัน (มากถึง 9.5) แบ็กเอนด์จะได้รับแบบสอบถามในStringinfo
บัฟเฟอร์ซึ่ง จำกัดMaxAllocSize
ไว้ที่:
#define MaxAllocSize ((Size) 0x3fffffff) /* 1 gigabyte - 1 */
(ดูhttp://doxygen.postgresql.org/memutils_8h.html )
ดังนั้นการสืบค้นจึง จำกัดขนาด 1 กิกะไบต์ (2 ^ 30) ในขนาดลบ 1 ไบต์สำหรับการยกเลิก null null
หากลูกค้าพยายามส่งข้อความค้นหาที่มีขนาดใหญ่ขึ้นข้อผิดพลาดที่มีลักษณะเช่นนี้จะกลับมา:
ข้อผิดพลาด: หน่วยความจำ
ไม่เพียงพอรายละเอียด: ไม่สามารถขยายบัฟเฟอร์สตริงที่มี 0 ไบต์ต่อN ได้อีกไบต์
ที่N
มีขนาดของแบบสอบถาม
โปรดทราบว่าแบบสอบถามด้านล่าง1GB
อาจต้องใช้หน่วยความจำจำนวนมากในการแยกวิเคราะห์วางแผนหรือดำเนินการนอกเหนือจาก1GB
บัฟเฟอร์นั้น
หากคุณต้องการส่งชุดตัวอักษรจำนวนมากไปยังคิวรีให้พิจารณาทางเลือกในการสร้างตารางชั่วคราวCOPY
แถวเข้าไปและมีคิวรีหลักอ้างอิงถึงตารางชั่วคราวนั้น