Re: Unify drop-by-OID functions

Поиск
Список
Период
Сортировка
От Ranier Vilela
Тема Re: Unify drop-by-OID functions
Дата
Msg-id CAEudQAoDdd+T0H9bfk6JCiDZFk+KPVN=bZ4ZuC9Nx=9=whZb8A@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Unify drop-by-OID functions  (Robert Haas <robertmhaas@gmail.com>)
Ответы Re: Unify drop-by-OID functions  (Robert Haas <robertmhaas@gmail.com>)
Список pgsql-hackers
Em ter., 5 de mai. de 2020 às 13:06, Robert Haas <robertmhaas@gmail.com> escreveu:
On Fri, May 1, 2020 at 5:32 PM Ranier Vilela <ranier.vf@gmail.com> wrote:
> I can suggest improvements?
>
> 1. In case Object is cached, delay open_table until the last moment, for the row to be blocked as little as possible and close the table as quickly as possible.
> 2. In case Object is cached and the tuple is invalid, do not open table.
> 3. Otherwise, is it possible to call systable_endscan, after table_close?
>
> I think that lock resources, for as little time as possible, it is an advantage..

Only if it's correct, which (3) definitely wouldn't be, and I'm
doubtful about (1) as well.
Ok, so the question. If (3) is not safe, obvious we shouldn't use, and must call table_close, after systable_endscan.
Now (1) and (2), I would have no hesitation in using it.
I work with ERP, and throughout the time, the later, lock resources and release them soon, the better, for the performance of the system as a whole.
Even if it doesn't make much difference locally, using this process, throughout the system, efficiency is noticeable.
Apparently, it is more code, but it is less resources used and for less time.
And (2), if it is a case, frequently, no table would be blocked in this function.

Simple examples.

Exemple 1:
FILE * f;
f = fopen("data.txt", "r");
if (f != NULL) {
    char buf[512];
    size_t result;
    result = fread(&buf, sizeof(char), 512, f);
    fclose(f); // we no longer need the resource, release.
    if (result != 0) {
        process(buf);
        printf("buf=%s\n", buf);
    }
}

Exemple 2:
FILE * f;
f = fopen("data.txt", "r");
if (f != NULL) {
    char buf[512];
    size_t result;
    result = fread(&buf, sizeof(char), 512, f);
    if (result != 0) {
        process(buf);
        printf("buf=%s\n", buf);
    }
    fclose(f); // resource blocked until the end.
}

regards,
Ranier Vilela

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: PG 13 release notes, first draft
Следующее
От: Robert Haas
Дата:
Сообщение: Re: Unify drop-by-OID functions