{"id":40434,"date":"2021-02-09T16:07:18","date_gmt":"2021-02-09T07:07:18","guid":{"rendered":"https:\/\/jirak.net\/wp\/innodb-data-locking-part-3-deadlocks\/"},"modified":"2021-02-09T16:34:09","modified_gmt":"2021-02-09T07:34:09","slug":"innodb-data-locking-part-3-deadlocks","status":"publish","type":"post","link":"https:\/\/jirak.net\/wp\/innodb-data-locking-part-3-deadlocks\/","title":{"rendered":"InnoDB Data Locking \u2013 Part 3 \u201cDeadlocks\u201d"},"content":{"rendered":"<p>InnoDB Data Locking \u2013 Part 3 \u201cDeadlocks\u201d<\/p>\n<p>In this\u00a0 <a href=\"https:\/\/mysqlserverteam.com\/innodb-data-locking-part-1-introduction\/\">blog series<\/a>, I\u2019m describing how InnoDB locks data (tables and rows) in order to provide illusion to clients that their queries are executed one after another, and how this was improved in recent releases.<br \/>\nIn <a href=\"https:\/\/mysqlserverteam.com\/innodb-data-locking-part-1-introduction\/\">InnoDB Data Locking \u2013 Part 1 \u201cIntroduction\u201d<\/a> I&#8217;ve introduced basic concepts required to understand current post:<\/p>\n<ul>\n<li>databases, tables, rows (like files on a shared drive, spreadsheets inside a file, and rows inside a spreadsheet)<\/li>\n<li>serializability of transactions (ability to explain states observed over time with a convincing story about relative order of parallel operations)<\/li>\n<li>timeouts (for misbehaving lock owners, and to resolve deadlocks)<\/li>\n<li>reader-writer lock (shared\/exclusive access rights)<\/li>\n<li>starvation (permanent inflow of readers starving a writer waiting for its turn)<\/li>\n<li>queueing (FIFO, or priority)<\/li>\n<li>read views (read-only snapshots which allow stale reads concurrent to new writes)<\/li>\n<li>granularity of a lock (access right to everything vs.<\/li>\n<\/ul>\n<p>&hellip;<\/p>\n<div class=\"simplesocialbuttons simplesocial-sm-round simplesocialbuttons_inline simplesocialbuttons-align-left post-14627 post  simplesocialbuttons-inline-no-animation\">\n<button class=\"simplesocial-fb-share\" data-href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https:\/\/mysqlserverteam.com\/innodb-data-locking-part-3-deadlocks\/\"><span class=\"simplesocialtxt\">Facebook <\/span> <\/button><br \/>\n<button class=\"simplesocial-twt-share\" data-href=\"https:\/\/twitter.com\/share?text=InnoDB+Data+Locking+%E2%80%93+Part+3+%E2%80%9CDeadlocks%E2%80%9D&amp;url=https:\/\/mysqlserverteam.com\/innodb-data-locking-part-3-deadlocks\/\"><span class=\"simplesocialtxt\">Twitter<\/span> <\/button><br \/>\n<button class=\"simplesocial-linkedin-share\" data-href=\"https:\/\/www.linkedin.com\/cws\/share?url=https:\/\/mysqlserverteam.com\/innodb-data-locking-part-3-deadlocks\/\"><span class=\"simplesocialtxt\">LinkedIn<\/span><\/button>\n<\/div>\n<p>Source: <a href=\"https:\/\/mysqlserverteam.com\/innodb-data-locking-part-3-deadlocks\/\" target=\"_blank\" rel=\"noopener\">InnoDB Data Locking \u2013 Part 3 \u201cDeadlocks\u201d<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>InnoDB Data Locking \u2013 Part 3 \u201cDeadlocks\u201d In this\u00a0 blog series, I\u2019m describing how InnoDB locks data (tables and rows) in order to provide illusion to clients that their queries are executed one after another, and how this was improved in recent releases. In InnoDB Data Locking \u2013 Part 1 \u201cIntroduction\u201d I&#8217;ve introduced basic concepts required to understand current post: databases, tables, rows (like files on a shared drive, spreadsheets inside a file, and rows inside a spreadsheet) serializability of transactions (ability to explain states observed over time with a convincing story about relative order of parallel operations) timeouts (for misbehaving lock owners, and to resolve deadlocks) reader-writer lock (shared\/exclusive access rights) starvation (permanent inflow of readers starving a writer waiting for its turn) queueing (FIFO, or priority) read views (read-only snapshots which allow stale reads concurrent to new writes) <a class=\"mh-excerpt-more\" href=\"https:\/\/jirak.net\/wp\/innodb-data-locking-part-3-deadlocks\/\" title=\"InnoDB Data Locking \u2013 Part 3 \u201cDeadlocks\u201d\">[ more&#8230; ]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[169],"tags":[498],"class_list":["post-40434","post","type-post","status-publish","format-standard","hentry","category-news","tag-mysql"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts\/40434","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/comments?post=40434"}],"version-history":[{"count":1,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts\/40434\/revisions"}],"predecessor-version":[{"id":40435,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts\/40434\/revisions\/40435"}],"wp:attachment":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/media?parent=40434"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/categories?post=40434"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/tags?post=40434"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}