[ https://issues.apache.org/jira/browse/HIVE-22888?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17061621#comment-17061621 ]
Peter Vary commented on HIVE-22888: ----------------------------------- +1 > Rewrite checkLock inner select with JOIN operator > ------------------------------------------------- > > Key: HIVE-22888 > URL: https://issues.apache.org/jira/browse/HIVE-22888 > Project: Hive > Issue Type: Improvement > Components: Locking > Reporter: Denys Kuzmenko > Assignee: Denys Kuzmenko > Priority: Major > Attachments: HIVE-22888.1.patch, HIVE-22888.10.patch, > HIVE-22888.11.patch, HIVE-22888.2.patch, HIVE-22888.3.patch, > HIVE-22888.4.patch, HIVE-22888.5.patch, HIVE-22888.6.patch, > HIVE-22888.8.patch, HIVE-22888.9.patch, acid-lock-perf-test.pdf > > > - Created extra (db, tbl, part) index on HIVE_LOCKS table; > - Replaced inner select under checkLocks using multiple IN statements with > JOIN operator; > generated query looks like : > {code} > SELECT LS.* FROM ( > SELECT HL_LOCK_EXT_ID, HL_DB, HL_TABLE, HL_PARTITION, HL_LOCK_STATE, > HL_LOCK_TYPE FROM HIVE_LOCKS > WHERE HL_LOCK_EXT_ID < 333) LS > INNER JOIN ( > SELECT HL_DB, HL_TABLE, HL_PARTITION, HL_LOCK_TYPE FROM HIVE_LOCKS WHERE > HL_LOCK_EXT_ID = 333) LBC > ON LS.HL_DB = LBC.HL_DB > AND (LS.HL_TABLE IS NULL OR LBC.HL_TABLE IS NULL OR LS.HL_TABLE = > LBC.HL_TABLE > AND (LS.HL_PARTITION IS NULL OR LBC.HL_PARTITION IS NULL OR > LS.HL_PARTITION = LBC.HL_PARTITION)) > WHERE (LBC.HL_TXNID = 0 OR LS.HL_TXNID != LBC.HL_TXNID) > AND (LBC.HL_LOCK_TYPE='e' > AND !(LS.HL_TABLE IS NULL AND LS.HL_LOCK_TYPE='r' AND LBC.HL_TABLE > IS NOT NULL ) > OR LBC.HL_LOCK_TYPE='w' AND LS.HL_LOCK_TYPE IN ('w','e') > OR LBC.HL_LOCK_TYPE='r' AND LS.HL_LOCK_TYPE='e' > AND !(LS.HL_TABLE IS NOT NULL AND LBC.HL_TABLE IS NULL)) > LIMIT 1; > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)