so:trans_szeregowalnosc

## Szeregowalność

Plan, w którym każda transakcja jest wykonywana niepodzielnie, nazywa się planem szeregowym (ang. serial schedule). Każdy plan szeregowy składa się z ciągu instrukcji należących do różnych transakcji, przy czym instrukcje jednej transakcji występują w nim obok siebie. Wobec tego dla zbioru n transakcji istnieje n! różnych, poprawnych planów szeregowych. Poprawność każdego planu szeregowego wynika stąd, że jest on równoważny niepodzielnemu wykonaniu poszczególnych składowych transakcji w pewnym dowolnym porządku.

Jeżeli zezwolimy na przeplatanie się instrukcji wchodzących w skład dwu transakcji, to wynikowy plan przestaje być szeregowy. Nieszeregowy plan niekoniecznie musi pociągać za sobą błąd w ostatecznym wyniku wykonania (tzn. że jest on równoważny planowi szeregowemu). Aby się przekonać, czy tak jest, musimy zdefiniować pojęcie operacji konfliktowych (ang. conflicting operations).

Rozważmy plan P, w którym występują po sobie dwie operacje Oi i Oj należące odpowiednio do transakcji Ti i Tj. Powiemy, że operacje Oi i Oj pozostają w konflikcie, jeżeli mają dostęp do tych samych obiektów danych i co najmniej jedna z nich jest operacją pisania.

Jeśli dany plan P można przekształcić w plan szeregowy P’ za pomocą ciągu zamian bezkonfliktowych operacji, to mówimy, że plan P jest szeregowalny z uwzględnieniem konfliktów (ang. conflict serializable).