diff --git a/core/lib/Drupal/Core/Lock/DatabaseLockBackend.php b/core/lib/Drupal/Core/Lock/DatabaseLockBackend.php
index 2024272..89d06a5 100644
--- a/core/lib/Drupal/Core/Lock/DatabaseLockBackend.php
+++ b/core/lib/Drupal/Core/Lock/DatabaseLockBackend.php
@@ -33,6 +33,7 @@ class DatabaseLockBackend extends LockBackendAbstract {
   public function __construct(Connection $database) {
     // __destruct() is causing problems with garbage collections, register a
     // shutdown function instead.
+    parent::__construct();
     drupal_register_shutdown_function(array($this, 'releaseAll'));
     $this->database = $database;
   }
diff --git a/core/lib/Drupal/Core/Lock/LockBackendAbstract.php b/core/lib/Drupal/Core/Lock/LockBackendAbstract.php
index 1b9e194..5e54e31 100644
--- a/core/lib/Drupal/Core/Lock/LockBackendAbstract.php
+++ b/core/lib/Drupal/Core/Lock/LockBackendAbstract.php
@@ -29,6 +29,19 @@
   protected $locks = array();
 
   /**
+   * Constructs a new lock backend.
+   */
+  public function __construct() {
+    // It is vital that an appropriate precision level is set so that reliable
+    // comparisons of timestamps can be made.
+
+    // Ensure a precision value of at least 14.
+    if (ini_get('precision') < 14) {
+      ini_set('precision', 14);
+    }
+  }
+
+  /*
    * Implements Drupal\Core\Lock\LockBackedInterface::wait().
    */
   public function wait($name, $delay = 30) {
diff --git a/core/tests/Drupal/Tests/Core/Lock/LockBackendAbstractTest.php b/core/tests/Drupal/Tests/Core/Lock/LockBackendAbstractTest.php
index 23ff1e3..2a424ed 100644
--- a/core/tests/Drupal/Tests/Core/Lock/LockBackendAbstractTest.php
+++ b/core/tests/Drupal/Tests/Core/Lock/LockBackendAbstractTest.php
@@ -23,10 +23,20 @@ class LockBackendAbstractTest extends UnitTestCase {
   protected $lock;
 
   protected function setUp() {
+    // Set precision below required 14 to verify increase later on.
+    // @see \Drupal\Core\Lock\LockBackendAbstract::__construct().
+    ini_set('precision', 12);
     $this->lock = $this->getMockForAbstractClass('Drupal\Core\Lock\LockBackendAbstract');
   }
 
   /**
+   * Tests the minimum precision.
+   */
+  public function testMinimumPrecision() {
+    $this->assertTrue(ini_get('precision') >= 14);
+  }
+
+  /**
    * Tests the wait() method when lockMayBeAvailable() returns TRUE.
    */
   public function testWaitFalse() {
