Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 使用一个数据库的两个不同服务器_Database - Fatal编程技术网

Database 使用一个数据库的两个不同服务器

Database 使用一个数据库的两个不同服务器,database,Database,在数据库服务器上有一个数据库供前端(web)服务器使用,但又有第三个服务器在该数据库中执行更新是正常的吗 我希望前端服务器向DB表发送查询,以检查操作是否“完成” 但是,只有当第三台服务器向该表发送UPDATE并更新状态时,该操作才会“完成” UPDATE table SET status = 'done' WHERE id is = '...'; 因此,两个不同的服务器(前端和后端)将需要与数据库通信。。这有潜在的问题吗?有“更清洁”的解决方案吗?这样做很常见。您需要考虑的是事务的隔离级别。

在数据库服务器上有一个数据库供前端(web)服务器使用,但又有第三个服务器在该数据库中执行
更新
是正常的吗

我希望前端服务器向DB表发送查询,以检查操作是否“完成”

但是,只有当第三台服务器向该表发送
UPDATE
并更新状态时,该操作才会“完成”

UPDATE table SET status = 'done' WHERE id is = '...';

因此,两个不同的服务器(前端和后端)将需要与数据库通信。。这有潜在的问题吗?有“更清洁”的解决方案吗?

这样做很常见。您需要考虑的是事务的隔离级别。 只要它是“读提交”或更高版本,这些简单的查询就是安全的


如果需要执行更复杂和多个查询,则应考虑可重复读取或可序列化级别。

不,这很常见,我发现:
假设您在默认的可重复读取隔离级别下运行。当您发出一致读取(即普通的SELECT语句)时,InnoDB为您的事务提供一个时间点,您的查询根据该时间点查看数据库。如果另一个事务删除了一行并在分配了时间点后提交,则不会将该行视为已删除。插入和更新的处理方式类似。
我认为可重复读取很好,因为当select语句仍将状态视为“未完成”时,它将在几秒钟内发出另一个状态。
UPDATE table SET status = 'done' WHERE id is = '...';