首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

数据库mysql锁表有关问题

2012-03-26 
数据库mysql锁表问题在数据库可以同时锁几个表吗,就是说要么同时锁住3个表,要么当其中有一个表在其他线程

数据库mysql锁表问题
在数据库可以同时锁几个表吗,就是说要么同时锁住3个表,要么当其中有一个表在其他线程中锁住时,剩下的两个表都不锁!有点类似win32中,WaitForMultipleObjects(2, myChopsticks, TRUE, INFINITE);myChopsticks为两个mutex

[解决办法]

引用虽然写的是写锁t1,t3,读锁t2,当是我在多线程程序中测试,全用写锁,如共有表t1,t2,t3,刚开始,第一个线程锁住t1,t2,过了三秒,第二个线程要锁住t1,t2,t3,在第六秒第三个线程锁住t3,在第十秒时解锁第一个线程锁住的t1,t2,然后第12秒解释线程2的三个表锁
要是一个LOCK TABLE t1 WRITE, t2 WRITE,t3 WRITE;语句是等待三个都能锁住才执行的话,由于t1,t2已经在第一个线程中被锁住了,第六秒处理的锁住t3应该能即时生效吧,而实际操作结果表明,线程3的锁表会得等到线程的锁表结束后才能执行,也就是结果是线程2,在第10秒时执行,线程3得等到线程2解锁释放后,才能执行锁表t3

热点排行