hive-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Peter Vary (Jira)" <j...@apache.org>
Subject [jira] [Commented] (HIVE-22888) Rewrite checkLock inner select with JOIN operator
Date Wed, 18 Mar 2020 11:00:00 GMT

    [ 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)

Mime
View raw message