php - 在同一查询中访问不同服务器上的两个不同数据库

标签 php mysql server

到目前为止,我们有一个带有 2 个数据库的服务器和一个可以访问其中任何一个数据库的 mysql 用户。例如

`select * from magento.maintable, erp.maintable`

现在我们的 erp 非常慢,我们想将数据库分离到另一台服务器上,但是我们有数百(几乎一千)个 SQL 查询,可以在同一个查询中访问两个数据库,例如

`insert into magento.table 
select * from erp.maintable`

或者 从 erp.maintable 内连接 magento.table 选择 *... 以及越来越多

如何在不更改这些查询的情况下使一切正常工作?但数据库位于不同的服务器上

为了访问数据库,我为每个数据库创建了一个类,并通过一个对象进行查询、插入、更新和删除,如下所示

`    public function exec($query, $result_array = true)
{
    $this->data->connect();
    $result = $this->data->query($query, $result_array);
    $this->data->disconnect();
    return $result;
}`

欢迎所有帮助,重点是找到一种最佳方法来做到这一点,而不必手动更改其他程序员所做的 1000 个 sql 查询

最佳答案

要在一个查询中访问多个数据库服务器,您必须使用 FEDERATED数据库引擎或使用replication将 ERP 数据从另一台服务器复制到原始服务器。

使用 FEDERATED 引擎可能会导致额外的性能问题,并且复制需要进行一些设置工作。

如果新服务器的唯一原因是 ERP 的性能,您可能想了解 ERP 速度慢的原因并尝试解决该问题(优化、将两个数据库移至新服务器等)。当两个数据库位于同一服务器上时,查询优化器能够组合并有效利用索引。

关于php - 在同一查询中访问不同服务器上的两个不同数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64367283/

相关文章:

php - 选择表中与相关表及其字段用户名和密码相匹配的行

php - 使用 SimpleXML 对 XML 的 SOAP 响应

mysql - 将 Azure SQL 转换为 MySQL

php - 错误 : [PDOException] SQLSTATE[HY000] [2002] No such file or directory

php - 过滤日期order_date在其日期范围sql问题

MySQL GROUP BY 和限制连接

mysql - 使用 mysql_config_editor

mysql - 8. 0.11 - 安装程序错误 - 身份验证方法

regex - 如何在 Nginx 服务器上执行不区分大小写的正则表达式?

c - 套接字编程: sending and receiving different data to different clients in C