Hive锁和事务

### Hive事务的种类 在 Hive 中,事务主要分为两种基本类型:**共享(Shared Lock, S )** **排他(Exclusive Lock, X )**。这两种类型的用于控制对数据库、表以及分区的操作权限。 #### 1. 共享(S ) 共享允许多个客户端同时读取同一资源而不互相干扰。这种适用于只读操作场景。 - 当读取非分区表时,会为该表申请一个 S [^5]。 - 如果是一个分区表,则会对整个表及其相关分区分别加 S 。 - 在事务性表中,`INSERT` 操作也会获取共享,这是因为事务性表底层依赖 MVCC 架构来提供强读一致性[^2]。 #### 2. 排他(X ) 排他用于保护数据免受并发写入或其他修改的影响。持有 X 的进程可以独占访问资源并对其进行更改。任何其他试图对该资源施加 S 或 X 的过程都将被阻塞直到当前释放。 - 对于非分区表,除了读取外的所有操作都会尝试获取 X [^5]。 - 若目标是分区表,在涉及特定分区内更新的情况下仅需针对相应部分设置 X 即可;但如果变更影响到了全部子集或者结构本身则可能还需要额外附加一层更高层次级别的定策略——即可能是整张表格级别上的全局范围内的完全封状态(Superceded by Table Level 'X' Mode)[^5]。 #### 特殊情况下的行为调整 当配置参数 `hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DummyTxnManager` 被启用,并且设置了支持并发(`hive.support.concurrency=true`) ,此时系统进入一种特殊运行模式—既不存在正式意义上的ACID特性保障却又保留基础同步机制的存在形式之下运作着[^1]: 在这种状态下尽管无法享受到完整的事务功能带来的好处诸如回滚能力之类的高级选项变得不可用了,不过依旧可以通过自定义指定合适的lock manager 来实现一定程度上的协调工作流程安排以满足某些简单需求场合的要求而已罢了。 另外值得注意的一点在于,默认情况下如果启用了严格定模式 (`hive.txn.strict.locking.mode=true`) ,那么即便是在处理那些标记属性未设为 transactional 的常规型态的数据集合单元时候也能确保遵循预期的行为表现规律趋势走向方向发展变化过程轨迹路线图谱展示出来给大家看呢! ```python # 示例代码片段演示如何查看当前 session 下已持有的 locks 列表信息: from pyhive import hive conn = hive.Connection(host='localhost', port=10000, username='your_username') cursor = conn.cursor() cursor.execute('SHOW LOCKS your_database.your_table EXTENDED;') print(cursor.fetchall()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值