白话解说如下:
简单说,就是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 *** 作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)