Граф ожидания (или граф ожидания транзакций) — инструмент, используемый при разработке СУБД и многопоточных систем и используемый, в частности, для определения ситуации взаимной блокировки (deadlock). Фактически, граф ожидания транзакций представляет собой ориентированный двудольный граф, содержащий вершины двух типов: вершины типа , соответствующие транзакциям или выполняющимся потокам. Они образуют первую долю графа. вершины типа , соответствующие ресурсам и объектам, которые могут быть захвачены транзакциями. Они образуют вторую долю графа.
Дуги графа ожидания также имеют двоякий смысл: дуги , идущие из вершины-транзакции в вершину-ресурс , обозначают, что данный ресурс уже захвачен транзакцией дуги , идущие из вершины-ресурса в вершину-транзакцию обозначают, что транзакция ожидает, пока ресурс будет освобождён.
Ресурс, который не имеет ни одной входящей дуги, является свободным. Если вершина-транзакция имеет некоторое ненулевое количество входящих дуг, то соответствующий процесс (собственно транзакция) находится в состоянии ожидания, то есть приостановлен и не может выполняться в текущий момент времени. Если между двумя транзакциями существует путь , то транзакция должна быть выполнена (завершена) раньше, чем начнётся выполнение , поскольку последняя требует освобождения некоторых ресурсов, захваченных транзакцией .
Из последнего свойства очевидным образом следует, что ситуации взаимной блокировки соответствует цикл на графе ожидания.