\begin{frame} \frametitle{Strict 2 Phase Locking Protocol} \begin{goal}{Strict 2 Phase Locking} Like in 2 PL, each transaction must get, \begin{itemize} \item an \emph{S-lock} on an object \emph{before reading} it, and \item an \emph{X-lock} on an object \emph{before writing} it. \end{itemize} \bigskip \emph{But moreover:} \begin{itemize} \item A transaction \alert{releases all locks only when the transaction is completed} (i.e. when performing commit/rollback). \end{itemize} \end{goal} \smallskip \begin{tcenter} \begin{tikzpicture}[nodes={black,scale=.8}] \draw [thick,->] (0,0) -- node [at end,above] {time} (5cm,0); \draw [thick,->] (0,0) -- node [at end,left] {\#of locks held} (0,1.5cm); \draw [red,very thick] (0,0) -- node [sloped,above] {lock phase} (2.5cm,1.5cm) -- (4cm,1.5cm) -- (4cm,0cm); \end{tikzpicture} \end{tcenter} \pause \begin{block}{} This protocol is \emph{cascadeless}, avoids cascading aborts. \end{block} But there still are deadlocks! \end{frame}