diff --git a/report/img/transaction2_1.png b/report/img/transaction2_1.png new file mode 100644 index 0000000..593e0ff Binary files /dev/null and b/report/img/transaction2_1.png differ diff --git a/report/img/transaction2_2.png b/report/img/transaction2_2.png new file mode 100644 index 0000000..809434a Binary files /dev/null and b/report/img/transaction2_2.png differ diff --git a/report/img/transaction2_3.png b/report/img/transaction2_3.png new file mode 100644 index 0000000..4514b9f Binary files /dev/null and b/report/img/transaction2_3.png differ diff --git a/report/report.tex b/report/report.tex index 8d46860..27f363b 100644 --- a/report/report.tex +++ b/report/report.tex @@ -750,4 +750,71 @@ $$; \end{table} +В таблице~\ref{tbl:unrepeatable_read} представлены транзакции, на примере которых демонстрируется наличие артефакта <<Неповторяемое чтение>>. + +\begin{table}[h!] + \centering + % \addtocounter{table}{-1} + \caption{Транзакции для демонстрации наличия артефакта <<Неповторяемое чтение>>.} + \label{tbl:unrepeatable_read} + \footnotesize + \begin{tabularx}{\textwidth}{|c|X|X|} + \hline + t & Транзакция 1 & Транзакция 2 \\ + \hline + + \multirow{3}{*}{} & \multicolumn{2}{c|}{ + \specialcell{ + В первой транзакции происходит чтение записи из таблицы \texttt{judge}. После чего эта же \\ запись обновляется во второй транзакции, изменения фиксируются и вторая транзакция \\ успешно завершается. Затем первая транзакция повторно считывает эту запись и получает \\обновлённые данные, а не исходные, из-за наличия артефакта <<Неповторяемое чтение>>. + } + }\\ + \cline{2-3} + + & \multicolumn{2}{c|}{Тут что-то ещё. }\\ + \cline{2-3} + + & \specialcell{Запуск транзакции 1 \\ \texttt{begin;}} & \specialcell{Запуск транзакции 2 \\ \texttt{begin;}}\\ + \hline + + $t_1$ & + \specialcell{ + Получение имени судьи с \texttt{id\_judge = 201}\\ \\ + \texttt{select id\_judge, name from judge}\\ + \texttt{where id\_judge = 201;}\\ + } + \includegraphics[width=1\linewidth]{img/transaction2_1.png} + & + \\ + \hline + + $t_2$ & + & + \specialcell{ + Изменение имени судьи с \texttt{id\_judge = 201} \\ + и фиксация транзакции\\ \\ + \texttt{update judge set name = 'Софа'}\\ + \texttt{where id\_judge = 201;}\\ + \texttt{commit;}\\ + } + \includegraphics[width=1\linewidth]{img/transaction2_2.png} + \\ + \hline + + $t_3$ & + \specialcell{ + Получение имени судьи с \texttt{id\_judge = 201}\\ + и фиксация транзакции \\ \\ + \texttt{select id\_judge, name from judge}\\ + \texttt{where id\_judge = 201;}\\ + \texttt{commit;}\\ + } + \includegraphics[width=1\linewidth]{img/transaction2_3.png} + & + \\ + \hline + \end{tabularx} +\end{table} + + + \end{document} \ No newline at end of file