请多多包涵,因为我对词汇毫无希望,而且我自己的搜索也无济于事。
我在这里了解到,如果我以我想要的方式更新( sGROUP_CONCAT
也存储在用户定义的变量中),我将锁定整个表。
我相当确定最好的方法是UPDATE
在 a 中逐行排列CURSOR
,从最高的 PK id 开始,然后递减,因为我确信发生死锁、冲突或其他任何事情的可能性会更低。 (告诉你我的词汇不好)如果我从最近的记录开始。
为 d 的列UPDATE
没有索引。
我刚刚在这里发现默认情况下aTRIGGER
是 a TRANSACTION
,所以我将创建一个 proc 并从 php.ini 调用。
事务隔离级别为REPEATABLE-READ
.
我更关心这些重叠UPDATE
的 s 会导致死锁而没有发生任何事情,而不是它们需要时间来完成。
所有表 InnoDB。
所有SELECT
s 和s在 PK id 上UPDATE
都是d,除了表中的which s 所有 id 都是d。没有加入。没有混乱。别大惊小怪。 WHERE
CURSOR
SELECT
SELECT
UPDATE
也就是说,最后是问题:
- 会只有一次,
DECLARE
还是也会循环(我更喜欢它只一次)?SELECT
SELECT
SELECT
DECLARE
' ' 的锁会SELECT
在 proc 期间保留吗(我希望它尽快释放)?- 查询完成后是否会立即释放每个行的锁
UPDATE
,还是会在整个过程中保留(我希望在单个UPDATE
查询完成后释放行锁)? - 用户变量的
SELECT
s 是否也会在设置后发布(您猜对了:我更喜欢那些也尽快发布)? - 是否有可能使用行锁仍然
SELECT
是UPDATE
d 行(再次,如果可以的话,我更喜欢)?
提前谢谢了!
为什么UPDATE
都开INSERT
在我的网站(在我的个人资料中),我允许用户访问所有提交的链接。这在顺序的基础上很好,我只是引用 id。
但是,我还将它们在 3 种投票类型的自定义算法的组合百分位上进行排名,对 3 种进行同等加权。
问题是在我的算法中,每张选票都会影响所有其他选票。由于我的算法的性质,没有办法解决这个问题。
一经请求
我用 PHP 尝试了这条路线。不去。计较太多了。我不太关心用户立即获得准确数据,因为页面会自动更新用户的排名,而用户并不聪明,但我不能让用户永远等待,因为我允许快速动态分页。
在视图中计算是更大的灾难。