1. (闩)是什么字 闩(闩) 音 shuān 【名】 (指事 。
从门,“一”象门闩形 。本义:门上的横插)同本义(bolt; latch) 闩,门横关也 。
——范成大《桂海虞衡志·杂志》 又如:上闩;门闩 【动】 插上门闩(fasten with a bolt) 。例:闩上门 闩紧 (bar)用门闩闩牢 例:闩紧大门 【计】数据库术语 。
闩(latch)是轻量级的串行化设备,用于协调对共享数据结构、对象和文件的多用户访问 。闩就是一种锁,设计为只保持极短的一段时间(例如,修改一个内存中数据结构所需的时间) 。
闩用于保护某些内存结构,如数据库块缓冲区缓存或共享池中的库缓存 。一般会在内部以一种“愿意等待”(willing to wait)模式请求闩 。
这说明,如果闩不可用,请求会话会睡眠很短的一段时间,并在以后再次尝试这个操作 。还可以采用一种“立即”(immediate)模式请求其他闩,这与SELECT FOR UPDATE NOWAIT的思想很相似,说明这个进程会做其他事情(如获取另一个与之相当的空闲闩),而不只是坐而等待这个闩直到它可用 。
由于许多请求者可能会同时等待一个闩,你会看到一些进程等待的时间比其他进程要长一些 。闩的分配相当随机,这要看运气好坏了 。
闩释放后,紧接着不论哪个会话请求闩都会得到它 。等待闩的会话不会排队,只是一大堆会话在不断地重试 。
Oracle使用诸如“测试和设置”(test and set)以及“比较和交换”(compare and swap)之类的原子指令来处理闩 。由于设置和释放闩的指令是原子性的,尽管可能有多个进程在同时请求它,但操作系统本身可以保证只有一个进程能测试和设置闩 。
指令仅仅是一个指令而已,它执行得可能非常快 。闩只保持很短的时间,而且提供了一种清理机制,万一某个闩持有者在持有闩时异常地“死掉了”,就能执行清理 。
这个清理过程由PMON执行 。队列锁(enqueue)在前面已经讨论过,这也是一种更复杂的串行化设备,例如,在更新数据库表中的行时就会使用队列锁 。
与闩的区别在于,队列锁允许请求者“排队”等待资源 。对于闩请求,请求者会话会立即得到通知是否得到了闩 。
而对于队列锁,请求者会话会阻塞,直至真正得到锁 。
【闩拼音怎么写】
文章插图