Biz inşa app oldukça büyük bir ekleme sorguları yürütebilir. Postgres sorgumda yalnızca belirli sayıda karakter bulunabileceği sınırı var mı?
Biz inşa app oldukça büyük bir ekleme sorguları yürütebilir. Postgres sorgumda yalnızca belirli sayıda karakter bulunabileceği sınırı var mı?
Yanıtlar:
Mevcut PostgreSQL sürümü için (9.5'e kadar), sorgular arka uç tarafından Stringinfosınırlandırılmış ve aralarında MaxAllocSizetanımlanmış olan bir arabellekte alınır :
#define MaxAllocSize ((Size) 0x3fffffff) /* 1 gigabyte - 1 */
(bkz. http://doxygen.postgresql.org/memutils_8h.html )
Bu nedenle, bir sorgu 1 gigabayt (2 ^ 30) boyutunda, sonlandırıcı bir boş bayt için eksi 1 bayt ile sınırlıdır .
Bir müşteri daha büyük bir sorgu göndermeye çalışırsa, bunun gibi görünen bir hata geri gelebilir:
HATA: bellek
yetersiz DETAIL: 0 bayt içeren dize arabelleğini N bayt daha genişletemezsiniz .
burada Nterimi boyutudur.
Hemen altındaki bir sorgunun 1GB, bu 1GBtamponlamaya ek olarak ayrıştırılması, planlanması veya yürütülmesi için büyük miktarda hafıza gerektirebileceğini unutmayın .
Büyük bir dizi hazır bilgiyi bir sorgunun içine itmeniz gerekirse, geçici bir tablo oluşturmanın alternatifini düşünün, içine sıralayın COPYve ana sorgunun bu geçici tabloya başvurmasını sağlayın.