gpt4 book ai didi

php - 多数据库迁移提高性能

转载 作者:行者123 更新时间:2023-11-30 00:36:37 24 4
gpt4 key购买 nike

我有一个应用程序,每个用户都有自己的数据库,每个数据库都有相同的架构。

我有一个以这种方式执行迁移的脚本:

  1. 显示数据库
  2. 迭代数据库
  3. 执行sql语句

当存在需要大量时间(3 秒或更多秒)的复杂查询时,这可能需要很长时间

有没有一种方法可以让我从一个脚本同时运行每个数据库的 sql 语句?这样做是否危险/资源过于密集?

我想这样做的原因是为了尽可能防止停机。

现在这是我的脚本:

<?php
ini_set('display_errors', 1);
set_time_limit(0);
$sql = file_get_contents('../update.sql');
$sql_queries = explode(";", $sql);
$exclude_dbs = array('horde','phppoint_forums','phppoint_site','roundcube', 'pos', 'bntennis_site', 'mysql', 'information_schema', 'performance_schema');

$conn = mysqli_connect("localhost", "root", "PASSWORD");
$show_db_query = mysqli_query($conn, 'SHOW databases');
$databases = array();
while ($row = mysqli_fetch_assoc($show_db_query))
{
if (!in_array($row['Database'], $exclude_dbs))
{
$databases[] = $row['Database'];
}
}

foreach($databases as $database)
{
mysqli_select_db($conn, $database);
echo "Running queries on $database\n***********************************\n";
foreach($sql_queries as $query)
{
if (!empty($query))
{
echo "$query;";
if (!mysqli_query($conn, $query))
{
echo "\n\nERROR: ".mysqli_error($conn)."\n\n";
}
}
}
echo "\n\n";
}
?>

最佳答案

我不知道数据库是否能承受该负载,但基本上我会 fork 该进程或将其生成到后台,具体取决于语言。

对于 php,您可以为每个数据库 fork 进程,基本上并行运行迁移。

关于php - 多数据库迁移提高性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22118740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com