In order to achieve a good compromise between data integrity and performance suitable for the business needs, it is essential to select the appropriate transaction isolation level. A developer needs to thoroughly understand the possible problems by selecting an inappropriate isolation level. Fortunately, SQL Server offers all possible isolation levels with both, optimistic and pessimistic locking. Memory-optimized tables do not use locking but introduce their own set of possible issues. With locking hints, it is possible to control the locking on a lower granularity than with the session-level options. The course explains the possible problems and shows how the problems are solved with different transaction isolation levels.