mysqlmvcc-csdn 小咪咪 2023-09-25 10:14 122阅读 0赞 ### 既然MySQL中InnoDB使用MVCC,为什么REPEATABLE-READ不能消除幻读 ### 第一个问题: 新版本的mysql通过mvcc解决了幻读的问题,所以你没有看到的幻读现象 第二个问题: B事务是没有办法看到A事务所做的改变,除非你的B事务的级别低于repeatable-read ![mysqlmvcc-csdn\_mysqlmvcc-csdn][mysqlmvcc-csdn_mysqlmvcc-csdn] ### mysql mvcc 加锁是加在哪个版本 ### 1)删除版本号大于当前事务版本号,就是说删除操作是在当前事务启动之后做的。 2)创建版本号小于或者等于当前事务版本号,就是说记录创建是在事务中(等于的情况)或者事务启动之前。 这样就保证了各个事务互不影响。从这里也可以体会到一种提高系统性能的思路,就是: 通过版本号来减少锁的争用。 另外,只有read-committed和repeatable-read两种事务隔离级别才能使用mVcc read-uncommited由于是读到未提交的,所以不存在版本的问题 而serializable则会对所有读取的行加锁。 ### 请教mysql报错,提示Out of memory-CSDN论坛 ### Out of memory 意思是 内存不够了 看看你的服务器,是不是内存太少了,要不就是你选择配置的mysql服务器设置的内存太高了内存不够了? 看看my.ini配置文件中这几个参数 tmp\_table\_size= max\_heap\_table\_size= max\_allowed\_packet= 是不是太大了。 或者你用了很多临时表,但是没释放? 你的mysql主要用的是myisam,还是innodb啊,如果是innodb: innodb\_buffer\_pool\_size=8m 这个就太小了,建议设置为1g。 ![mysqlmvcc-csdn\_mysqlmvcc-csdn\_02][mysqlmvcc-csdn_mysqlmvcc-csdn_02] ### mysql中的next key与mvcc有何不同?各自的应用体现在哪 ### 理想的MVCC是可以解决幻读的,但是innodb真正实现起来的并不是理想中的MVCC。 innodb真正解决幻读的还是靠的是next key lock,因为innodb的写操作其实排他锁操作,所以用实际实现的MVCC解决读并发问题。你好! mysql,需要分号结束CREATE TABLE a\_test (aa int NULL ,bb varchar(20) NULL );oracle,不需要分号结束CREATE TABLE a\_test (aa int NULL ,bb varchar(20) NULL ) 仅代表个人观点,不喜勿喷,谢谢。 [mysqlmvcc-csdn_mysqlmvcc-csdn]: https://img-blog.csdnimg.cn/img_convert/3a4e008e779917e95edcc63628554099.png [mysqlmvcc-csdn_mysqlmvcc-csdn_02]: https://img0.baidu.com/it/u=944944085,1082104288&fm=26&fmt=auto
还没有评论,来说两句吧...