\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}