{"id":1276,"date":"2012-07-19T18:23:24","date_gmt":"2012-07-19T17:23:24","guid":{"rendered":"http:\/\/soci.hu\/blog\/?p=1276"},"modified":"2012-07-20T10:38:40","modified_gmt":"2012-07-20T09:38:40","slug":"furcsa-deadlockok","status":"publish","type":"post","link":"https:\/\/soci.hu\/blog\/index.php\/2012\/07\/19\/furcsa-deadlockok\/","title":{"rendered":"Furcsa deadlockok"},"content":{"rendered":"<p>Mostan\u00e1ban valahogy utol\u00e9rnek a code review jelleg\u0171 munk\u00e1k, amiket egy\u00e9bk\u00e9nt nagyon szeretek, mivel ezek \u00e1ltal\u00e1ban intenz\u00edv, agyal\u00f3s nyomoz\u00e1sok szoktak lenni, amit im\u00e1dok.<br \/>\nAz el\u0151z\u0151ben deadlockok jelentek meg egy SQL Server alap\u00fa rendszerben, nagyobb terhel\u00e9s eset\u00e9n. A deadlockokat \u00e1ltal\u00e1ban el\u00e9g egyszer\u0171 megfogni, az SQL Server Profiler Deadlock graph t\u00e1lc\u00e1n k\u00edn\u00e1lja az \u00f6sszeakadt folyamatokat \u00e9s er\u0151forr\u00e1sokat. A legt\u00f6bb deadlock vagy conversion deadlock, amelyek repeatable read izol\u00e1ci\u00f3s szinten v\u00e9grehajtott select-update v\u00e1lt ki, vagy a m\u00e1s sorrendben el\u00e9rt t\u00e1bl\u00e1k miatt el\u0151\u00e1ll\u00f3 deadlock.<br \/>\nEset\u00fcnkben a selectek ki voltak eg\u00e9sz\u00edtve with(updlock)-kal, amely pont a konverzi\u00f3s deadlockot hivatott megakad\u00e1lyozni (nem kell a shared lockot \u00e1tkonvert\u00e1ltni update lockk\u00e1, mivel m\u00e1r a select is update lockot haszn\u00e1l).<br \/>\nNo, de ami most m\u00e1s volt mint szokott, hogy \u00e1ltalam eddig nem l\u00e1tott volt a deadlock graph. Meg\u00f6r\u00f6k\u00edtett\u00fck az ut\u00f3kornak, \u00edme (shift clickkel kell megnyitni, \u00edgy k\u00fcl\u00f6n ablakban ny\u00edlik meg, \u00edgy \u00f6ssze lehet n\u00e9zni a sz\u00f6veggel):<\/p>\n<p><a href=\"http:\/\/soci.hu\/blog\/wp-content\/uploads\/2012\/07\/wierddeadlock2tables.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/soci.hu\/blog\/wp-content\/uploads\/2012\/07\/wierddeadlock2tables.png\" alt=\"\" title=\"2 t\u00e1bl\u00e1s furcsa deadlock\" width=\"499\" height=\"103\" class=\"aligncenter size-full wp-image-1278\" srcset=\"https:\/\/soci.hu\/blog\/wp-content\/uploads\/2012\/07\/wierddeadlock2tables.png 1843w, https:\/\/soci.hu\/blog\/wp-content\/uploads\/2012\/07\/wierddeadlock2tables-600x124.png 600w, https:\/\/soci.hu\/blog\/wp-content\/uploads\/2012\/07\/wierddeadlock2tables-300x62.png 300w\" sizes=\"auto, (max-width: 499px) 100vw, 499px\" \/><\/a><\/p>\n<p>Mi a furcsa benne? K\u00f6z\u00e9pen van a k\u00e9t er\u0151forr\u00e1s, amely eset\u00fcnkben ugyanaz a t\u00e1bla. Ez m\u00e9g ok, de a HoBtId is ugyanaz, azaz ugyanarr\u00f3l a sorr\u00f3l van sz\u00f3. <\/p>\n<p>Update: ez marhas\u00e1g. a HobtID csak azt mondja meg, hogy azonos allok\u00e1ci\u00f3s egys\u00e9g, heap vagy index (btree). De az, hogy ugyanarra a sorra v\u00e1rakoznak igaz, a  waitresource=&#8221;KEY: 6:72057594959101952 (8194443284a0)&#8221; attributumb\u00f3l l\u00e1tszik, de ez nem l\u00e1tszik a grafikus n\u00e9zeten.<\/p>\n<p>M\u00e9g ez is rendben van. N\u00e9zz\u00fck meg, milyen lockok vannak kiosztva! A bal \u00e9s a jobb oldali processz is update lockot tart az er\u0151forr\u00e1sokon, amelyek a kor\u00e1bbiak alapj\u00e1n \u00fagy n\u00e9z ki egy er\u0151forr\u00e1st reprezent\u00e1lnak. Na, itt van a bibi. K\u00e9t update lock nem kompatibilis, pont erre tal\u00e1lt\u00e1k ki \u0151ket, hogy ne szeress\u00e9k egym\u00e1st. Akkor hogy tud kiosztani a szerver m\u00e9gis ilyeneket? Igaz\u00e1b\u00f3l ez a tal\u00e1ny, ut\u00e1na m\u00e1r term\u00e9szetes, nem tudnak fogni m\u00e9g egy update \u00e9s egy exclusive lockot a k\u00f6z\u00f6s sorokra. Mi a t\u00far\u00f3 t\u00f6rt\u00e9nik itt?<\/p>\n<p>Nekem van egy b\u0171nbakom, aki ezt a furcsas\u00e1got csin\u00e1lja, de csak p\u00e1r nap m\u00falva \u00edrom le, amikor m\u00e1r t\u00f6bbet tudok r\u00f3la, hogy a m\u00f3dos\u00edt\u00e1sok ut\u00e1n megjavult-e a rendszer.<\/p>\n<p>Aki l\u00e1tott m\u00e1r ilyet, k\u00e9rem ossza meg vel\u00fcnk.<\/p>\n<p>Z\u00e1r\u00e1sul csemeg\u00e9nek itt van egy nagyobb gr\u00e1focska, amikor t\u00f6bben is \u00f6sszeakadnak:<\/p>\n<p><a href=\"http:\/\/soci.hu\/blog\/wp-content\/uploads\/2012\/07\/webdeadlock.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/soci.hu\/blog\/wp-content\/uploads\/2012\/07\/webdeadlock.png\" alt=\"\" title=\"Deadlock Web\" width=\"500\" height=\"757\" class=\"aligncenter size-full wp-image-1280\" srcset=\"https:\/\/soci.hu\/blog\/wp-content\/uploads\/2012\/07\/webdeadlock.png 931w, https:\/\/soci.hu\/blog\/wp-content\/uploads\/2012\/07\/webdeadlock-600x909.png 600w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mostan\u00e1ban valahogy utol\u00e9rnek a code review jelleg\u0171 munk\u00e1k, amiket egy\u00e9bk\u00e9nt nagyon szeretek, mivel ezek \u00e1ltal\u00e1ban intenz\u00edv, agyal\u00f3s nyomoz\u00e1sok szoktak lenni, amit im\u00e1dok&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25,6,4,30,21,58,77,78],"tags":[],"class_list":["post-1276","post","type-post","status-publish","format-standard","hentry","category-adonet","category-adatbazisok","category-szakmai-elet","category-sql-server","category-sql-server-2005","category-sql-server-2008","category-sql-server-2008-r2","category-sql-server-2012"],"_links":{"self":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1276","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=1276"}],"version-history":[{"count":6,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1276\/revisions"}],"predecessor-version":[{"id":1298,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1276\/revisions\/1298"}],"wp:attachment":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=1276"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=1276"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=1276"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}