平台 :windows 10,笔记本,i7、12G内存,
软件版本:mySQL 5.7、postgreql 10.0、mongodDB 3.6.2
程序:Java,Netbeans,20个线程同时插入
1) MongoDB
a)单条插入
磁盘8-10M,
300秒插入7883957条,每秒2.2万条
b)批量插入,每次插入1000条
CPU 100%
磁盘 18M到40M,中值在30M左右
100秒插入31782000条,每秒32万条
需要注意一点,批量插入时,由于_id重复问题,增加了UUID字段,所以在生成速度上有影响,否则应该会更快。
2)MySQL
a )单条插入
CPU 80%左右
磁盘 15M左右
300秒插入3623906条,每秒1.2万条
b)批量插入,每次插入1000条
CPU 100%
磁盘 100M
100秒 24615000条,每秒24万条
3)PostgreSQL
a) 单条插入
CPU 100%
磁盘 50M,比较稳定,下降时候不多
300秒,插入5890466,每秒接近2万条
b)批量插入
CPU 100%
磁盘:70M,波动很大
100秒,插入16512000条,每秒16万条
4)结论
软件 | MySQL | PostgreSQL | MongoDB |
版本 | 5.7 | 10.0 | 3.6.2 |
单条插入 | 1.2万 | 2万 | 2.2万 |
批量 | 24万 | 16万 | 32万 |
单条插入:MongoDB>PostgreSQL>MySQL,其中Postgresql令人惊讶,速度比MongoDB稍差,接近MySQL的两倍。
批量插入(每次1000条):MongoDB>MySQL>PostgreSQL,MySQL表现优异,PostgreSQL表现较差,其中MongoDB为了避免_Id重复问题,增加了UUID,影响了速度,如果不使用UUID,速度应该还会提高。
5)建议
综合考虑,PostgreSQL的性能较令人满意,但系统周边生态较差,相关开发人员也难以寻找,MongDB不负众望,插入速度较快,但相对PostgreSQL优势并不明显。
MySQL比较平庸,但暂时还是优选。