如何在php中执行Mysql 锁定

如何在php中执行Mysql 锁定,第1张

有表锁,行锁,页锁

页级:引擎 BDB。

表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行

行级:引擎 INNODB , 单独的一行记录加锁

1) 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。

2) 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

3) 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。

一般不在PHP中使用锁 *** 作,因为如果锁了库,如果遇到错误没有及时的解锁,就会导致不能访问数据的情况。

可以使用MYSQL的事务,就是定义事务开始,然后有几个语句要执行,然后根据情况,如果有一个语句没有执行成功,可以回滚(取消这几个语句的执行),从而达到几个语句都执行成功或者都不执行的效果,在强事务型的应用中一般使用这个方式

MYSQL中的锁:

语法 :

LOCK TABLE 表名1 READ|WRITE, 表名2 READ|WRITE .................. 【锁表】

UNLOCK TABLES 【释放表】

Read:读锁|共享锁 : 所有的客户端只能读这个表不能写这个表

Write:写锁|排它锁: 所有当前锁定客户端可以 *** 作这个表,其他客户端只能阻塞

注意:在锁表的过程中只能 *** 作被锁定的表,如果要 *** 作其他表,必须把所有要 *** 作的表都锁定起来!

PHP中的文件锁 (锁的是文件,不是表)

文件锁的文件与表有什么关系?:一点关系也没有,与令牌相似,谁拿到谁 *** 作。所以表根本没锁。

测试时,有个文件就行,叫什么名无所谓


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

原文地址: http://outofmemory.cn/zaji/7165477.html

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

发表评论

登录后才能评论

评论列表(0条)

保存