Strict 2-phased locking: enforcing serializable and recoverable schedules