分别说明对于非事务表普通引擎和InnoDB引擎两种情况下,发出一个长时间的查询的同时,可以进行插入或更新吗?如果可以的话,查询会查询到最新的数据吗?(假设查询没结束,但是插入或更新已结束),分别用mysql_store_result和ysql_use_result两种不同的方式来查询,是不是结果不同呢
解决方案 »
- mysql query browser中查看数据表中文乱码
- mysql表的一个字段是其他3个表的外键,insert报1452错误?求解?
- 遇到mysql case when 问题
- 请问mysql客户端占用的端口是多少?
- SQL排序问题
- 数据库附加问题!在线等!
- 超离奇的事件,大家给点意见
- 如何在mysql中保存图片信息?
- f2s.com免费主页的MYSQL连接语句的SERVERNAME是什么?
- mysql里concat和concat_ws参数问题
- 新手求助:win2003下执行MYSQL自动备份时提示无法定位序数
- Cannot add or update a child row: a foreign key constraint fails (`myznt/answer`, CONSTRAINT `answer_ibfk_1` FOREIGN KEY (`qid`
DBMS通常提供了多种数据类型的封锁。一个事务对某个数据对象加锁后究竟拥有什么样的控制是由封锁类型决定的。基本的封锁类型有两种:排他锁(exclusive lock,简记为X锁)和共享锁(share lock简记为S锁)排他锁又称为写锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A 上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。共享锁又称为读锁。若事务T对数据对象A加上S锁,则其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的锁。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
还有,我在SELECT时,是没有起事务的,这时SELECT也会加上共享锁吗?
普通的select(没有加lock in share mode或for update)在MyISAM和InnoDB两种引擎下,都不会锁表或锁行的
对于MyISAM引擎,select语句加lock in share mode或for update是没有意义的,MyISAM必须用lock table来锁表操作
对于MyISAM引擎,update,insert语句会自动锁表普通的select也查询不到查询过程中,另外用户更新或插入的数据
对于MyISAM可以锁表,限制在查询的同时,其它人做修改或插入
对于InnoDB可以起事务锁定行或改变隔离级别,防止在查询的过程中其它人修改或插入不知道理解的对不对
http://blog.chinaunix.net/u/29134/showart_478439.html