Changes between Version 3 and Version 4 of DBA_performansi


Ignore:
Timestamp:
06/11/25 00:49:26 (3 days ago)
Author:
216049
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DBA_performansi

    v3 v4  
    2525[[Image(part_2.png)]]
    2626[[Image(part_3.png)]]
     27
     28= PostgreSQL Индекси
     29
     30Индекси во PostgreSQL се структури на податоци што се користат за забрзување на пребарувањето во табелите. Индексите и овозможуваат на базата брзо да ги лоцира потребните редици наместо да прави sequential scan. Со користење на индекси драстично се намалува времето за select, update и delete, но поради дополнителните записи потребни за индексот се зголемува времето за insert. Индексите зафаќаат додатен простор на дискот, што некогаш може да биде и поголем од самата табела. Затоа треба внимателно да се одбере кога и каков индекс може да се користи за дадена табела.
     31
     32== B-tree Индекси
     33
     34B-tree (Balanced Tree) индексите се засновани на структура на балансирано дрво каде што секој јазол содржи повеќе клучеви сортирани по редослед. Оваа структура автоматски се балансира, што значи дека патот од коренот до секој лист има иста должина. Кога се пребарува вредност, алгоритмот започнува од коренот и се движи надолу по дрвото, споредувајќи ги вредностите и избирајќи го следниот јазол. Ова дава логаритамска сложеност O(log n) за пребарување, вметнување и бришење. B-tree индексите автоматски се креираат за primary key и unique ограничувањата и се идеални за споредби со еднаквост и опсег (>, <, BETWEEN), како и за операции на сортирање.
     35
     36== GIN Индекси
     37
     38GIN (Generalized Inverted Index) функционира слично како инвертиран речник во книга - наместо да пребарува низ секој документ, тој создава мапа од секоја вредност кон сите записи што ја содржат. За JSONB колона што содржи `{"tags": ["red", "blue"]}`, GIN ќе создаде записи каде што "red" и "blue" покажуваат кон тој ред. Кога се пребарува за документи што содржат "red", индексот директно знае кои редови да ги врати. Оваа структура е исклучително ефикасна за операции contains (@>, <@) и full-text search, но поради начинот на којшто ги чува податоците зафаќа голем простор во мерморија. GIN е идеален JSONB колони и full-text search пребарување каде што драстично ги подобрува перформансите.
     39
     40== GiST Индекси
     41
     42GiST (Generalized Search Tree) е структура со која може да се градат различни типови на индекси врз основа на концептот на "kлучеви-предикати". Наместо да чува точни вредности како B-tree, GiST чува информации за тоа какви податоци се содржани во секој поддел од дрвото. GiST е погоден за просторни пребарувања, nearest-neighbor пребарувања, операции со опсези на датуми и full-text search пребарување. Иако генерално е побавен од специјализираните индекси, GiST е многу помал од GIN и поефикасен за updates.
     43
     44== Заклучок
     45
     46Избирањето на соодветен тип индекс зависи од природата на податоците и типот на пребарувања што се извршуваат. B-tree е добар за стандардни релациони операции (order by, where), GIN за брзо пребарување во сложени структури (JSONB), и GiST за флексибилни и просторни операции. Секој има свои компромиси помеѓу перформанси, големина и сложеност на одржување.