mirror of
https://github.com/nextcloud/server.git
synced 2026-04-21 14:23:17 -04:00
Improve performance when converting between DBs
Use a transaction when doing multiple inserts increase the writing speed. Ref: https://stackoverflow.com/a/68495887 Signed-off-by: Carl Schwan <carl@carlschwan.eu>
This commit is contained in:
parent
1bfd001cf6
commit
db6927ee05
1 changed files with 26 additions and 16 deletions
|
|
@ -353,27 +353,37 @@ class ConvertType extends Command implements CompletionAwareInterface {
|
|||
|
||||
$result = $query->execute();
|
||||
|
||||
while ($row = $result->fetch()) {
|
||||
$progress->advance();
|
||||
if (!$parametersCreated) {
|
||||
foreach ($row as $key => $value) {
|
||||
$insertQuery->setValue($key, $insertQuery->createParameter($key));
|
||||
}
|
||||
$parametersCreated = true;
|
||||
}
|
||||
try {
|
||||
$toDB->beginTransaction();
|
||||
|
||||
foreach ($row as $key => $value) {
|
||||
$type = $this->getColumnType($table, $key);
|
||||
if ($type !== false) {
|
||||
$insertQuery->setParameter($key, $value, $type);
|
||||
} else {
|
||||
$insertQuery->setParameter($key, $value);
|
||||
while ($row = $result->fetch()) {
|
||||
$progress->advance();
|
||||
if (!$parametersCreated) {
|
||||
foreach ($row as $key => $value) {
|
||||
$insertQuery->setValue($key, $insertQuery->createParameter($key));
|
||||
}
|
||||
$parametersCreated = true;
|
||||
}
|
||||
|
||||
foreach ($row as $key => $value) {
|
||||
$type = $this->getColumnType($table, $key);
|
||||
if ($type !== false) {
|
||||
$insertQuery->setParameter($key, $value, $type);
|
||||
} else {
|
||||
$insertQuery->setParameter($key, $value);
|
||||
}
|
||||
}
|
||||
$insertQuery->execute();
|
||||
}
|
||||
$insertQuery->execute();
|
||||
$result->closeCursor();
|
||||
|
||||
$toDB->commit();
|
||||
} catch (\Throwable $e) {
|
||||
$toDB->rollBack();
|
||||
throw $e;
|
||||
}
|
||||
$result->closeCursor();
|
||||
}
|
||||
|
||||
$progress->finish();
|
||||
$output->writeln('');
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue