首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在不中断其他进程的情况下运行更新查询

如何在不中断其他进程的情况下运行更新查询
EN

Database Administration用户
提问于 2015-08-12 06:55:51
回答 2查看 227关注 0票数 0

我想更新一个表,我想要做的是当其他进程想要使用这个表时,它将暂停我的更新查询,当其他进程完成时,它将继续update.Is --有什么方法可以这样做吗?

顺便说一下,我正在使用MySQL5.5。

EN

回答 2

Database Administration用户

发布于 2015-08-12 07:19:18

无论如何,这就是InnoDB的工作方式。看看MVCC (多版本并发控制,也就是记录版本控制或记录隐藏)机制,今天大多数数据库都使用这种机制。

如果您正在进行长时间的更新,并且有人希望读取记录,那么进行读取的人将看到的是数据库,就像更新开始之前的情况一样。然后,当长更新提交时,所有后续查询都将看到系统更新后。这样,InnoDB的事务就是,但是更重要的是,作者不会阻止读者,反之亦然。

有关MySQL细节的更多信息,请参见手册在这里 -如果您有更多具体问题,请返回给我们。如果您真的对这个主题感兴趣,那么我建议您阅读手册的这一章,其中详细介绍了InnoDB存储引擎的体系结构。

MyISAM引擎只使用锁定机制,但不应该再使用它了(如果比尔·卡温这么说,它必须是真的!)

票数 1
EN

Database Administration用户

发布于 2015-08-12 07:19:27

您是否需要它在单个事务中运行(并且使用InnoDB)?从措辞上看,我希望表是MyISAM,所有更新都锁定整个表。InnoDB没有这个问题,因为更新和选择可以并行运行。检查是否可以将表更改为InnoDB -它提供了以下内容和

如果您需要/必须使用MyISAM,您可以将更新“拆分”到许多小的更新中,这些更新完成得足够快,然后一个一个地运行,同时其他进程也可以完成一些任务。但这些读者会看到该表处于“部分更新”状态。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/110756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档