《HBase权威指南》一3.4 行锁
本节书摘来异步社区《HBase权威指南》一书中的第3章,第3.4节,作者: 【美】Lars George 译者: 代志远 , 刘佳 , 蒋杰 责编: 杨海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。 3.4 行锁 像put()、delete()、checkAndPut()这样的修改操作是独立执行的,这意味着在一个串行方式的执行中,对于每一行必须保证行级别的操作是原子性的。region服务器提供了一个行锁(row lock)的特性,这个特性保证了只有一个客户端能获取一行数据相应的锁,同时对该行进行修改。在实践中,大部分客户端应用程序都没有提供显式的锁,而是使用这个机制来保障每个操作的独立性。 文字用户应该尽可能地避免使用行锁。就像在RDBMS中,两个客户端很可能在拥有对方要请求的锁时,又同时请求对方已拥有的锁,这样便形成了一个死锁。 锁超时之前,两个被阻塞的客户端会占用一个服务器端的处理线程(handler),而这个线程是一种十分稀缺的资源。如果在一个频繁操作的行上发生了这种情况,那么很多其他的客户端会占用掉其所有的处理线程,阻塞所有其他客户端访问这台服务器,导致这个regi...