MySQL锁表是什么意思?有什么用?什么情况下用?好处?缺点?

MySQL锁表是什么意思?有什么用?什么情况下用?好处?缺点?,第1张

白话解说如下:

简单说,就是lock table,不让别人动

锁分共享锁和排它锁。

共享锁时,别人能读,不能改变量表数据

排它锁时,别人既不能读,也不能改表数据

根据以上特点,应该就知道何时使用锁了。不想让别人变更数据,对自己产生影响,就加锁。一定要在不用之后,进行锁释放,不然,应用系统会一直因为读取数据而报错。

好处就是,保证数据的原子性,完整性,一致性。 只有加锁者释放了锁,别人才能改变数据。

缺点就是,增加了系统开销,有可能产生锁等待,造成数据库运行异常。这都是不正常的使用锁带来的问题。

过去挺久的了,不知道你现在理解了没有。我也是在想这个问题,找了很多资料都说的不清不楚的,最后我自己在 general 日志中找到答案啦。

还是回答一下吧,说不定能帮到别人

lock-all-tables 使用的是 FLUSH TABLES READ LOCK 全局读锁,锁定所有 database 下的所有表

lock-tables 使用的是 LOCK TABLES tb1 READ,tb2 READ 锁定一个 database 下的所有表,处理完再锁另一个 database 的所有表

简单地说,锁是为了保证数据的一致性,锁不止存在于oracle,其他数据库一样有,只不过机制上可能大相径庭。

至于什么样的 *** 作会锁表,其实锁的种类很多,你所说的锁表大概说的是行级锁——也就是事务锁吧。比如一个update语句,被update的行上会有锁——能阻塞其他事务对这些行进行修改的锁,虽然这时候这张表上也有表级锁,但这个表级锁并不影响其他事务对表中的其他行进行修改,只是会阻碍对这张表的DDL *** 作。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10003244.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存