I voted "Depends". If the operation is typically fast, then I would go completely pessimistic. If the operation is known to take some time, I would probably go partially pessimistic. I don't think I've ever gone optimistic. I suppose there may be some scenario where that would be warranted, such as when using a distributed database that has eventual consistency.