diff --git a/core/scripts/run-tests.sh b/core/scripts/run-tests.sh
index 0ccdc35..b24e598 100755
--- a/core/scripts/run-tests.sh
+++ b/core/scripts/run-tests.sh
@@ -517,11 +517,20 @@ function simpletest_script_execute_batch($test_classes) {
   // Multi-process execution.
   $children = array();
   while (!empty($test_classes) || !empty($children)) {
+    $driver = Database::getConnection('default', 'test-runner')->driver();
     while (count($children) < $args['concurrency']) {
       if (empty($test_classes)) {
         break;
       }
 
+      // Use memory and use asynchronous to improve IO performance in sqlite.
+      if ($driver === 'sqlite') {
+        Database::getConnection('default', 'test-runner')
+          ->query("PRAGMA synchronous = OFF");
+        Database::getConnection('default', 'test-runner')
+          ->query("PRAGMA journal_mode = MEMORY");
+      }
+
       $test_id = Database::getConnection('default', 'test-runner')
         ->insert('simpletest_test_id')->useDefaults(array('test_id'))->execute();
       $test_ids[] = $test_id;
