表MySQL锁表实现安全性提升(mysql锁住)
MySQL中一般通过悲观锁一般专门用来保证数据的安全性。Mysql实现表锁的方法有多种,最常见的就是表锁,它使用的较为简单,在使用SELECT语句时,可以使用 for update子句,来锁定表,另一种方法是使用lock table语句。这两种方式都可以做到锁定表,来实现数据安全性的提升。
首先,可以使用SELECT语句来实现表锁。通常情况下,我们可以使用SELECT语句以及for update语句来访问数据,被查询出来的行将被锁定,并且无法被其它事务所修改(也不能被本事务再次读取),此操作将在本次事务提交后,自动释放,即行锁会自动释放。
例:
SELECT * FROM T_User FOR UPDATE;
接着也可以使用 LOCK TABEL 语句来实现表锁,可根据实际情况选择对应的锁类型:read/write/exclusive 三种方式。
READ 锁:阻塞其它事物想对此表进行写操作,允许其它事务对此表进行读操作。
WRITE 锁:阻塞其它事物想对此表进行读/写操作,即写锁更用来进行数据写入操作,将数据锁定,其它事务不可读取也不可修改。
EXCLUSIVE 锁:阻塞其它事务对此表的除查询外的操作。主要是用于维护,如备份,结构变更等。
例:
LOCK TABLES T_User WRITE;
其实为了提高MySQL的安全性,可以采用分段锁等更加复杂的方式,但起码能用表锁可保证数据的完整性和安全性。