gpt4 book ai didi

php - 如果我可以锁定几张 table ,那会不会很糟糕?

转载 作者:行者123 更新时间:2023-11-29 05:41:30 25 4
gpt4 key购买 nike

让我们创建 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 概念,我会研究更多信息:

事务隔离级别 http://dev.mysql.com/doc/refman/5.0/en/set-transaction.html

锁定提示 http://www.xaprb.com/blog/2006/08/05/how-to-give-locking-hints-in-mysql/

行/表锁定机制 http://dev.mysql.com/doc/refman/5.5/en/internal-locking.html

关于php - 如果我可以锁定几张 table ,那会不会很糟糕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6460575/

25 4 0
文章推荐: android - Python 失去 Mysql 服务器连接
文章推荐: php - CURL 和 JSON 问题
文章推荐: php - MYSQL DATE range 日期格式查询
文章推荐: Java 泛型 - 为什么 = new 不允许?