
正文
php数据库行锁 数据库的行锁
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
php中mysql加锁问题
有表锁,行锁,页锁
页级:引擎 BDB。
表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行
行级:引擎 INNODB , 单独的一行记录加锁
1) 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
2) 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
3) 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
一般不在PHP中使用锁操作,因为如果锁了库,如果遇到错误没有及时的解锁,就会导致不能访问数据的情况。
可以使用MYSQL的事务,就是定义事务开始,然后有几个语句要执行,然后根据情况,如果有一个语句没有执行成功,可以回滚(取消这几个语句的执行),从而达到几个语句都执行成功或者都不执行的效果,在强事务型的应用中一般使用这个方式
你可以去后盾人平台看看,里面的东西不错
相关问答
Q1: PHP MYSQL中 表锁和行锁 一般什么情况下使用 另外具体怎么写
手动加锁php数据库行锁:
表级锁
lock tables tablename read;//共享锁
lock tables tablename write;//排它锁
unlock tables;//解锁
php直接query就行php数据库行锁了。
除了MyIsamphp数据库行锁,谁还会无聊到显式加锁?
InnoDB直接跑事务默认会触发隐式锁,不需要自己lock和unlock。
Q2: 开发php网站,mysql做数据库一定要用锁吗?
一般情况下php数据库行锁,MYSQL在更新操作会自动加表锁。不需要显式加锁。除非是数据要求严格php数据库行锁的逻辑写顺序。
执行查询语句(SELECT)前php数据库行锁,会自动给涉及的所有表加读锁php数据库行锁,在执行更新操作 (UPDATE、DELETE、INSERT等)前,会自动给涉及的表加写锁,这个过程并不需要用户干预,因此,用户一般不需要直接用LOCK TABLE命令给MyISAM表显式加锁。
Q3: thinkphp事务上锁后整个数据库都上锁吗
事务php数据库行锁的锁机制应该与thinkphp无关php数据库行锁,主要看php数据库行锁你采用什么数据库。
关于php数据库行锁和数据库的行锁的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






