[ https://issues.apache.org/jira/browse/HIVE-20890?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Denys Kuzmenko updated HIVE-20890: ---------------------------------- Description: HIVE-19369 proposes adding a EXCL_WRITE lock which does not wait for any SHARED_READ locks for read operations - in the presence of that lock, the insert overwrite no longer takes an exclusive lock. The only exclusive operation will be a schema change or drop table, which should take an exclusive lock on the entire table directly. {code} explain locks select * from tpcds_bin_partitioned_orc_1000.store_sales where ss_sold_date_sk=2452626 +----------------------------------------------------+ | Explain | +----------------------------------------------------+ | LOCK INFORMATION: | | tpcds_bin_partitioned_orc_1000.store_sales -> SHARED_READ | | tpcds_bin_partitioned_orc_1000.store_sales.ss_sold_date_sk=2452626 -> SHARED_READ | +----------------------------------------------------+ {code} So the per-partition SHARED_READ locks are no longer necessary, if the lock builder already includes the table-wide SHARED_READ locks. The removal of entire partitions is the only part which needs to be taken care of within this semantics as row-removal instead of directory removal (i.e "drop partition" -> "truncate partition" and have the truncation trigger a whole directory cleaner, so that the partition disappears when there are 0 rows left). was: HIVE-19369 proposes adding a EXCL_WRITE lock which does not wait for any SHARED_READ locks for insert operations - in the presence of that lock, the insert overwrite no longer takes an exclusive lock. The only exclusive operation will be a schema change or drop table, which should take an exclusive lock on the entire table directly. {code} explain locks select * from tpcds_bin_partitioned_orc_1000.store_sales where ss_sold_date_sk=2452626 +----------------------------------------------------+ | Explain | +----------------------------------------------------+ | LOCK INFORMATION: | | tpcds_bin_partitioned_orc_1000.store_sales -> SHARED_READ | | tpcds_bin_partitioned_orc_1000.store_sales.ss_sold_date_sk=2452626 -> SHARED_READ | +----------------------------------------------------+ {code} So the per-partition SHARED_READ locks are no longer necessary, if the lock builder already includes the table-wide SHARED_READ locks. The removal of entire partitions is the only part which needs to be taken care of within this semantics as row-removal instead of directory removal (i.e "drop partition" -> "truncate partition" and have the truncation trigger a whole directory cleaner, so that the partition disappears when there are 0 rows left). > ACID: Allow whole table ReadLocks to skip all partition locks > ------------------------------------------------------------- > > Key: HIVE-20890 > URL: https://issues.apache.org/jira/browse/HIVE-20890 > Project: Hive > Issue Type: Improvement > Components: Transactions > Reporter: Gopal Vijayaraghavan > Assignee: Zoltan Chovan > Priority: Major > > HIVE-19369 proposes adding a EXCL_WRITE lock which does not wait for any > SHARED_READ locks for read operations - in the presence of that lock, the > insert overwrite no longer takes an exclusive lock. > The only exclusive operation will be a schema change or drop table, which > should take an exclusive lock on the entire table directly. > {code} > explain locks select * from tpcds_bin_partitioned_orc_1000.store_sales where > ss_sold_date_sk=2452626 > +----------------------------------------------------+ > | Explain | > +----------------------------------------------------+ > | LOCK INFORMATION: | > | tpcds_bin_partitioned_orc_1000.store_sales -> SHARED_READ | > | tpcds_bin_partitioned_orc_1000.store_sales.ss_sold_date_sk=2452626 -> > SHARED_READ | > +----------------------------------------------------+ > {code} > So the per-partition SHARED_READ locks are no longer necessary, if the lock > builder already includes the table-wide SHARED_READ locks. > The removal of entire partitions is the only part which needs to be taken > care of within this semantics as row-removal instead of directory removal > (i.e "drop partition" -> "truncate partition" and have the truncation trigger > a whole directory cleaner, so that the partition disappears when there are 0 > rows left). -- This message was sent by Atlassian Jira (v8.3.4#803005)