+ -
当前位置:首页 → 问答吧 → mysql 更新一条记录不是立刻存进去吗?

mysql 更新一条记录不是立刻存进去吗?

时间:2011-12-01

来源:互联网

我的程序需要频频读取且更新某个字段,奇怪的是某此update set `col`=`col`+1之后,如果紧跟着一秒之内再查询该记录,发现结果并没有加1.
不得不怀疑,mysql是不是不会立刻执行update?或者执行update后并不立即写入硬盘?

作者: netxuning   发布时间: 2011-12-01

这个应该是程序缓存的问题。

作者: yangxiao_jiang   发布时间: 2011-12-01

python:执行完更新之后,需要commit(),再从数据库中select应该就没问题了

作者: jiaweiqq123   发布时间: 2011-12-01

肯定不会立即写入磁盘。 这个受操作系统的IO机制和MYSQL本身的机制决定。

一般 数据库系统层,只有当缓冲区的脏数据到检查点或者没有空闲缓冲区的时候才会向操作系统申请将缓冲中的脏数据写加磁盘扇区并将缓冲区标记为可用。

而操作系统同样使用类似机制以提高IO效率。

作者: ACMAIN_CHM   发布时间: 2011-12-01

引用 3 楼 acmain_chm 的回复:

肯定不会立即写入磁盘。 这个受操作系统的IO机制和MYSQL本身的机制决定。

一般 数据库系统层,只有当缓冲区的脏数据到检查点或者没有空闲缓冲区的时候才会向操作系统申请将缓冲中的脏数据写加磁盘扇区并将缓冲区标记为可用。

而操作系统同样使用类似机制以提高IO效率。


那就意味着,update和select操作即便是串行的,也会导致我上边说的问题吧?

PS:好久不见版主了,顺便问好!我这个兼职二把刀管数据库的依然没有长进!:)

作者: netxuning   发布时间: 2011-12-01

你的问题非常奇怪。 你的查询,MYSQL应该会直接到缓冲区中去取。 如果在缓冲区中有所需数据,则MYSQL不会进行磁盘IO操作,而是直接根据缓冲区内的数据进行操作。 你的问题好像是事务隔离相关的问题。 你的UPDATE操作是否提交? MYSQL事务隔离级别设置是什么?

作者: ACMAIN_CHM   发布时间: 2011-12-01

局域网局域网局域网局域网

作者: a4742715   发布时间: 2011-12-01

相关阅读 更多