C#下多线程下几种免费数据库的性能比较的结论
待测试的免费数据库有SQLite、Access、MySQL、MongoDB:
由于大部分应用都是在多线程下进行的,要进行线程同步、代码加锁之类的处理。在说多线程之前,先说在单线程前提下的测试结果,那就是Access的存取数据效率要低很多,其它三种的都比较快,相互之间差不多。下面是多线程下的结论:
1、SQLite和Access:两种是常见的文件型数据库,所以放在一起比较。结论是,
1)二者的数据存取效率差不多,根据线程数的不同,会有-2%-10%的差距,SQLite稍微好一些;
2)Access的资源占用(CPU和内存)比SQLite要明显高很多,根据线程数和测试程序的不同,会有80%-190%的差距。
2、MySQL:这种数据库是有服务器的。结论是,
1)MySQL的数据存取效率要比上文提到的SQLite和Access要明显高,根据线程数和要插入的数据数目的不同,会有12%-1000%的差距;
2)不算服务器的资源占用的话,MySQL的资源占用和SQLite差不多,根据线程数和测试程序的不同,会有-10%-15%的差距。
3、MongoDB:这种数据库也是有服务器的,不过是非关系型的数据库,使用时需要自根据设计的表的不同定义相应的数据结构类来辅助操作。结论是,
1)MongoDB的数据存取效率高的令人惊讶,有MySQL的1-100倍(具体数据忘了记了,吓住我了),多线程的存取效率可以与多线程下的SQLite的效率媲美。
2)MongoDB的资源占用要高很多,相同前提下,其它数据库cpu有1%-60%的变化范围,最终稳定在3%-20%的范围,而MongoDB会占满CPU。
All Comments are Welcome.