diff --git a/core/modules/locale/src/PoDatabaseWriter.php b/core/modules/locale/src/PoDatabaseWriter.php
index 7e7340cf1070ffa81f198a0f8c56b9b68f6c15f5..436d710d7bad49bd2f5f16a09c66c183875d5d26 100644
--- a/core/modules/locale/src/PoDatabaseWriter.php
+++ b/core/modules/locale/src/PoDatabaseWriter.php
@@ -198,10 +198,15 @@ public function writeItem(PoItem $item) {
    * {@inheritdoc}
    */
   public function writeItems(PoReaderInterface $reader, $count = -1) {
+    // Processing multiple writes in a transaction is quicker than committing
+    // each individual write.
+    $transaction = \Drupal::database()->startTransaction();
     $forever = $count == -1;
     while (($count-- > 0 || $forever) && ($item = $reader->readItem())) {
       $this->writeItem($item);
     }
+    // Commit the transaction.
+    unset($transaction);
   }
 
   /**