Petru Paler wrote:
>
> On Thu, Oct 19, 2000 at 07:37:15AM +0300, Vasiliu Constantin wrote:
> > pe 3 relatii de 10000,20000,40000 tuple, indexate pe k1,k2,k3 mi-a supt
> > toata memoria (128M/k6-2/500) plus 30M din swap si a pornit greu
>
> S-ar putea (aproape sigur :) sa ma insel, dar am impresia ca rezultatul e
> produsul cartezian al tuplelor care indeplinesc cele doua conditii. Adica daca
> ai 1000 de tuple pt. care r1.k1=r2.k2 si inca 1000 pentru r1.k1=r3.k3 atunci
> rezultatul o sa aiba 1000*1000 de randuri.
Relativ. k1,k2 si k3 au valori comune (r1 este un catalog de produse, r2
de preturi cu mai multe preturi pentru un produs, r3 de manopera cu mai
multe operatii pentru un produs. In final (in Ingres) se aduna cam 60000
tuple.
In Ingres rezultatul iese imediat ce se realizeaza primele conexiuni.
Problema era ca in Postgres se executa interogarea care probabil consuma
memorie cit ii trebuie pentru a construi o relatie temporara ca rezultat
al selectiei si abia apoi se livreaza rezultatul.
Ma intrebam daca nu exista o metoda de a evita acest consum excesiv de
memorie, chiar in conditiile unei baze de date cu relatii mari.
Pe de alta parte, Ingres-ul 8.x a fost dezvoltat pe sisteme PDP-11/VAX,
iar la PDP memoria maxima alocata unui task era de 64K. Portarea sub
Linux s-a facut de pe acele surse si probabil ca s-a mostenit un alt mod
intern de lucru.
De fapt, mai trebuia pus "distinct" ca sa elimine tuplele duplicate,
ceea ce in Ingres se facea automat.
Ma intereseaza aspectele acestea pentru ca trebuie sa fac niste
scripturi care sa converteasca pachete de interogari din Ingres in
Postgres (pentru conversie de structuri si date am facut deja), ca sa nu
scriu de mina j'de mii de linii de program.
--
----
Constantin Vasiliu
[EMAIL PROTECTED]
----
---
Send e-mail to '[EMAIL PROTECTED]' with 'unsubscribe rlug' to
unsubscribe from this list.