per-bucket lock vs table lock vs optimistic concurrency control