I am working on a multithreading .NET 4 application which acquires data continuously and writes them into a SQL database (MySQL or SQL Server - not yet sure).

Everytime when a `INSERT` is executed, at leat one prior `SELECT` is necessary in order so synchronize with the databaes. This means the applications gets a block which contains new and old data and then has to check which data sets are new and which are already in the database.

This means a lot of `SELECTS` which result everytime in more or less the same data.

Would it be a good idea to have a copy of the last x entries per table within the application?
This way the synchronization could be done on the copy instead of the database.

Pro: 

* Faster

Contra:

* Uses a lot of memory
* Risk of becomming unsynchronized with the database

What do you think? What is the best practice for such a use case?
Any other pros and cons?