到目前为止,我们有一个带有 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/