Changes between Version 36 and Version 37 of Transactions


Ignore:
Timestamp:
02/10/26 18:06:00 (3 weeks ago)
Author:
222039
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Transactions

    v36 v37  
    42423) Атомичност на промени (seat change / cancel) \\
    43434) Reschedule без нарушување на капацитет \\
     44
     45{{{!#sql
     46ALTER TABLE booking
     47ADD CONSTRAINT uq_booking_flight_seat UNIQUE (flight_id, seat);
     48
     49ALTER TABLE booking
     50ADD INDEX ix_booking_flight (flight_id);
     51
     52ALTER TABLE flight
     53ADD INDEX ix_flight_airplane (airplane_id);
     54
     55ALTER TABLE airplane
     56ADD INDEX ix_airplane_id_capacity (airplane_id, capacity);
     57}}}
     58
     59UNIQUE (flight_id, seat) e најчист race-condition stopper за кога двајца купуваат исто седиште, ама во реален систем имаме и '''перформанси''' и '''lock behavior'''. Во concurrency сценарија (многу паралелни резервации), сакаме:
     60* критичните проверки да бидат '''брзи''' (да не држат locks предолго),
     61* да избегнеме '''full table scans''' што прават повеќе блокирања и оптоварување
     62
     63Затоа додадовме и индекси на колоните што најчесто се користат во транзакциските операции.
     64