mysql中的锁定

mysql支持很多不同的表类型,对于不同的类型,锁定机制也是不同的。因此,理解不同级的锁定是使用mydql的非事务表实现伪事物环境的基本条件。

(1)表锁定:一个特殊类型的访问,整个表被客户锁定。根据锁定的类型,其他客户不能向表中插入记录,甚至从中读取数据也会收到限制。

(2)页锁定:mysql将锁定表中的某些行(称做页)。被锁定的行只对锁定最初的线程是可行的。如果另外一个线程想要向这些行写数据,它必须等到锁被释放。不过,其它页的行仍然可以使用。

(3)行锁定:行级的锁定比表级锁定或者页级锁定对锁定过程提供了更精细的控制。在这种情况下,只有线程使用的行是被锁定的。表中的其他行对于其他线程都是可用的。在多用户的环境中,页层的锁定降低了线程间的冲突,可以使多个用户同时从一个相同的表读取数据甚至写数据。不过,必需平衡这种灵活性,实际上它还有这三层锁定的最高性能的开销。

    MYISAM表类型只支持表级锁定,当涉及到大量的读操作而不是写操作时,它提供了比行级和页级锁定更好的性能。BDB表的类型支持页级锁定,InnoDB表类型在事务中自动执行行级锁定。

你可能感兴趣的:(mysql中的锁定)