While databases and transactions help with a broad range of concurrency issues (but not all - there are cases where you wouldn't want to use them), they are not a pancea that solves all of your problems. It would be nice if the world was that simple, but it isn't.

Incidentally what would you call "heavy load"? For instance what rate of transactions would that be? 10s per hour? 100s per hour? 1000s per hour, please give us a ballpark.

Thanks,
Ben