To ensure data integrity in certain situations you will need to use locks. However, overuse of locks or improper implementation can severely hinder the performance of your application.