Php 如果我能锁上几张桌子,会不会很糟糕?

Php 如果我能锁上几张桌子,会不会很糟糕?,php,mysql,Php,Mysql,让我们创建Page.php query1 query2 query3 有没有办法锁定几个表,因此,如果一个用户访问Page.php,第二个用户稍后打开此页面,第二个用户将需要等待第一个用户的所有查询执行 更重要的是,如果在同一个页面上同时有几百个用户,会不会让一个网站慢很多 谢谢。您可以使用行级锁定来阻止其他用户的连接 BEGIN TRAN UPDATE table1 set locked = 1; //table locks are only taken out when data

让我们创建Page.php

 query1
 query2
 query3
有没有办法锁定几个表,因此,如果一个用户访问Page.php,第二个用户稍后打开此页面,第二个用户将需要等待第一个用户的所有查询执行

更重要的是,如果在同一个页面上同时有几百个用户,会不会让一个网站慢很多


谢谢。

您可以使用行级锁定来阻止其他用户的连接

BEGIN TRAN

UPDATE table1 set locked = 1;  //table locks are only taken out when data is written, you could possibly also use lock hints.
UPDATE table2 set locked = 1;
UPDATE table3 set locked = 1;

//Tables are locked, do whatever you need here, other users hitting the page will block at the first update statement until this connection hits the commit or rollback

update table1 set locked = 0;
update table2 set locked = 0;
update table3 set locked = 0;

COMMIT
请注意,select语句不会导致对行或表的锁定,尽管您可以使用锁定提示使其锁定行。最好的方法是通过将行中的值设置为自身或添加另一列来触摸该行

数据库性能良好,因为它们支持并发性。任何时候,当您导致并发的行为连续发生时,您都将招致性能惩罚。在某些情况下,这可能是好的,这实际上取决于你用它做什么

我更喜欢SQL Server,但它是非常通用的DBMS概念,有关更多信息,我将研究:

事务隔离级别

锁定提示

行/表锁定机制

有没有办法锁上几张桌子

您可以使用,但这会降低页面速度

更重要的是,它是否会减慢速度 网站非常多,如果有的话 同时在同一页面上有数百个用户 同一时间

如果你那样做的话,你的页面会变慢

:

您还可以避免将表锁定在中 在某些情况下,可以使用用户级别 咨询锁功能和 释放锁()。这些锁已保存 在服务器中的哈希表中 实施 和pthread_mutex_unlock()用于高 速度见第11.14节, “杂项职能”

我仍然认为,就像其他人告诉你的那样,你应该用它来代替



附言:你想实现什么?我打赌有更好的方法来实现这一点。甚至可能没有锁/事务。

为什么要为一个简单的查询锁定表?@wallyk:这不能同时发生。不要锁定。使用事务。这似乎是个坏主意,你想实现什么?我认为它可能同时发生。