nkn*_*knj 24 database concurrency multithreading locking transactions
我对读写锁定有点不确定,只需要有人检查这些关于读/写锁的事实是否正确.
这是一般的数据库.
读锁:
写锁:
谢谢你的澄清.我无法在互联网上找到这些陈述的直接断言.
Gen*_*Wan 15
读锁:
多个线程可以同时获取多个读锁。
真的。多个读锁可以同时存在。(读锁还有一个名字:共享锁)
当线程对行/表具有读锁时,没有线程可以更新/插入/删除该表中的数据。(即使尝试写入数据的线程不需要写锁。)
真的。写事务应该等待读锁完成读取。
一个行/表不能同时有读锁和写锁。
真的。如果在读锁之前有写锁,写锁会阻塞其他事务对同一张表的读或写。如果在写锁之前有读锁,读锁会阻塞写事务,直到读事务完成。
写锁:
当一个行/表有写锁时,如果在其中实现了读锁,则其他线程无法读取该行/表,但如果没有实现读锁,则其他线程可以读取(即简单的 Select 查询)
对不起,我不明白这个说法。 但是当一个表有写锁(Exclusive Lock)时,它就不能被另一个事务读取或写入。
在数据库管理理论中,锁定用于实现多个数据库用户之间的隔离。这是缩写ACID(原子性,一致性,隔离性,耐久性)中的“ I”。TX(事务)将锁定应用于数据,这可能会阻止其他TX在TX的生命周期内访问相同的数据。
简单锁定:可以请求两种主要类型的锁定:
多重锁定: 两相锁定(2PL)是一种并发控制方法,可确保串行化。