lock table 效率下降的很大啊!
解决方案 »
- 近日,我在论坛上发表了“低薪诚聘PHP程序员(广州)”,招了不少攻击。说实话,我不知道你们能够拿多少,如果没有过万的话,请不要指责。
- php连接MSSQL(有难度)
- 类在实例化时就调用了内部的判断函数.是怎么回事
- smartymo模办中能否直接调用PHP中的函数?
- 疑问:如何搭建app后台
- print echo什么区别?
- 求教php如何创建一个带键名的空数组,后期再赋值
- 我们在建数据库时,设计表的字段为不为空的作用是什么?
- 一个数据分页的问题
- 在php不同页面传递参数后,既不报错也不实现页面跳转,求解惑
- 数组问题!!!!!!!!!!!!!!!!!!!!
- 请大家给我把文件上传帮我讲一下或推荐几片文章或原代码?我面!!
进程A->检查X->不存在X->创建X->读取数据->处理数据->存入数据->删除X
进程B->检查X->存在X->等待->不存在X->创建X->读取数据->处理数据->存入数据->删除X
这样可以不用lock table,其他无关进程仍然可以运作。
如果php提供了在内存里lock的方法就好了,不知道有没有.
一般情况下,select操作是不会锁表的,而update 和 delete 考虑到数据的一致性,数据库系统就会进行lock操作,如果长时间没有解锁操作,如
update 后没有及时commit,这条记录就一直处在lock状态,想对这条记录再进行其他操作,就会进行等待状态,一直都没响应。跟据我个人的经验,一般对表的insert ,update ,delete 操作,一般不要放在PHP程序中进行,而放在数据库服务器进行,实现方法是用PHP调用存储过程,一是运行效率高,二是可以对部分的数据库操作流程封包,简化程序,三是由于在数据库服务器运行存储过程,及时使用commit,一般不会出现由于锁而无响应状态
一家之言,可能部分数据库有适用
用存储过程就是把读取数据,处理数据,写入数据的这个流程封包
用PHP调用一次就可,一定程度上可以简化PHP程序存储过程支持参数的传入,传出,不过不支持数据集
呵呵,本來我也想說存儲過程的,看看他的意思好像不能用。
呵呵,本來我也想說存儲過程的,看看他的意思好像不能用。
数据的加工可以在前台和PHP进行,加工完后,如更新,添加等对数据库的操作就可由存储过程来做对了还有个办法,就是采用多层结构的数据库系统,
对事务的管理,由中间层来进行,PHP只负责传数据,与数据库操作无关
我已转用Jsp