Changes between Version 44 and Version 45 of AdvancedTopics


Ignore:
Timestamp:
05/22/26 01:42:43 (5 days ago)
Author:
231189
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedTopics

    v44 v45  
    110110
    111111== 3. Ticket табела – партиционирање по ticket_id ==
     112Табелата Ticket претставува една од трансакциски најоптоварените табели во системот, бидејќи во неа се зачувува секој купен билет за секое поединечно патување, вклучувајќи детали за седиштето, вагонот, цената и релевантните дестинации.
     113
     114=== Причини за партиционирање
     115
     116- **Екстремно висок волумен на податоци** Со симулација на над 10 милиони записи, оваа табела е критична за перформансите. Класично пребарување низ единечна табела од ваков размер предизвикува креирање на огромни индекси кои не можат да се соберат во RAM меморијата.
     117
     118- **Природа на пребарувањата (Клуч за партиционирање)** За разлика од патувањата кои логички се пребаруваат по датум, билетите во реалниот систем најчесто се пребаруваат поединечно преку нивниот уникатен ID (`ticket_id`) при валидација на станица или при проверка од кондуктер. Поради ова, HASH партиционирањето е најефикасниот избор.
     119
     120- **Паметна и рамномерна распределба** Преку HASH партиционирање со користење на клучот `ticket_id`, податоците математички се делат на еднакви делови. Наместо една масивна табела, системот користи 16 помали партиции каде што податоците се идеално распределени.
     121
     122- **Како помага партиционирањето** Кога системот извршува прашање за конкретен `ticket_id`, PostgreSQL врши брзо хаширање на бараниот ID и веднаш детерминира во која точно партиција се наоѓа билетот. Базата целосно ги игнорира останатите 15 партиции, со што драстично се крати времето на пребарување и се одржуваат мали и брзи индекси.
     123
     124=== Kод со објаснување
     125