gpt4 book ai didi

php - MYSQL TRANSACTION替代方案?

转载 作者:可可西里 更新时间:2023-11-01 08:15:46 25 4
gpt4 key购买 nike

我正在尝试使用 PHP/MYSQL 为我的网站创建一个简单的搜索。我的所有页面数据都在 mytable 中,我正在按以下顺序处理数千行:

 1. Query for 1 row with a particular id in `mytable` with column `status=0`
2. Using that id do something in `other` table(s)
3. When done, update `mytable` with`status=1`

已编辑

在第 2 步中,我处理来自第 1 步的所有数据,例如

  • 标记每个单词并处理数据
  • 获取所有链接和过程数据
  • 获取所有图像和过程数据等。

为了加快这个过程,我考虑运行多个脚本,以便我可以更快地处理所有行,但后来我开始了解并发问题。我看了Mysql TRANSACTION,这个过程是TRANSACTION的经典例子。

对于记录,所有表都是 INNODB,因此我可以使用 TRANSACTION/LOCK。如果我使用 TRANSACTION 那么问题是每个脚本都会等待一个完整的行过程(第 2 步需要更长的时间),然后该过程所花费的时间与一次处理 1 行的时间相同!

有人可以建议,我怎样才能继续使用 TRANSACTIONLOCK 或其他一些表结构的其他替代方法,以便我可以处理 mytable 中的每个 ROW 通过多次运行相同的 PHP 脚本来更快/同时运行?

我已经尝试过 SOLRLUCENESPHINX 很抱歉,但是对我来说这些都太技术化了,抱歉对于我的这个限制:( .

最佳答案

您可以将 transaction_isolation 级别设置为 READ UNCOMMITTED 以最小化锁定。在 php 脚本中将其设置为 session 级别。

InnoDB 默认有 REPEATABLE READ 隔离级别。

SELECT @@GLOBAL.tx_isolation, @@tx_isolation;
SET SESSION tx_isolation='READ-UNCOMMITTED';

要了解有关隔离级别的更多信息,请查看 http://dev.mysql.com/doc/refman/5.5/en/set-transaction.html

关于php - MYSQL TRANSACTION替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28912144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com