Secara umum, kebuntuan berarti bahwa dua atau lebih entitas memblokir beberapa sumber, dan tidak satupun dari mereka yang dapat menyelesaikannya, karena mereka memblokir sumber secara siklik.
Salah satu contoh:Katakanlah saya memiliki tabel A dan tabel B, saya perlu melakukan beberapa pembaruan di A dan kemudian B dan saya memutuskan untuk mengunci keduanya pada saat penggunaan (ini adalah perilaku yang sangat bodoh, tetapi melayani tujuannya sekarang ). Pada saat yang sama, orang lain melakukan hal yang sama dalam urutan yang berlawanan - mengunci B terlebih dahulu, lalu mengunci A.
Secara kronologis, ini terjadi:
proc1:Kunci A
proc2:Kunci B
proc1:Kunci B - mulai menunggu hingga proc2 merilis B
proc2:Kunci A - mulai menunggu hingga proc1 merilis A
Tak satu pun dari mereka akan pernah selesai. Itu kebuntuan. Dalam praktiknya, hal ini biasanya menghasilkan kesalahan batas waktu karena tidak diinginkan untuk membuat kueri menggantung selamanya, dan sistem yang mendasarinya (misalnya database) akan mematikan kueri yang tidak selesai tepat waktu.
Salah satu contoh nyata dari kebuntuan adalah ketika Anda mengunci kunci rumah di mobil, dan kunci mobil di rumah.