Is there a free, high-performance, SQL queriable, .NET in-memory RDBMS? [closed]
Similar questions:
- Good scalable fault-tolerant in-memory database with LINQ support for .NET
- Alternative to the TimesTen in memory database
- Virtual Database in Memory
- SQLite Performance Benchmark -- why is :memory: so slow...only 1.5X as fast as disk?
Is there a free, high-performance, SQL queriable, .NET in memory RDBMS? I've done some research in the past 10 hours, but didn't find one.
I've just tried SQLite in memory mode, but it's performance is not good. The following test took 4130 ms, only 2x faster than SQL Server.
As Kibbee suggested, I used a profiler to investigate the performance, and found SQLite's in memory mode is actually pretty performant, the bottleneck was NHibernate. Here is a benchmark of SQLite 3.6.3 (posted on 20-Oct-2008).
Your problem seems to be not one of architecture but one of capacity. Altough RDBMS are highly optimized applications, they still require significant resources and most RDBMS that see heavy or complex usage will generally need to hit the disks. This brings us to cache, which is what many large applications use to increase response time by caching certain query results and serving those, instead of re-running the query every time. Software like Memcached (on linux) can be used to reduce the need to run queries.
Finally, if caching is not an option, you can simply provide more resources to the application. Like @marc_s said, significantly increasing memory (and cpu capacity, since by increasing memory you move the bottleneck to the CPU) is a good strategy to use.
If you want performance, skip the SQL and RDBMS parts. A simple datastructure in ram with a change log will easily outperform a database. You might need some better collections than the standard provided ones though, as they don't scale well.
精彩评论