数据批量插入的性能测试问题

2021-12-18 15:11:04 +08:00
 rogergood
想请教一下大家,就是比如说我想测试一下批量插入某个 csv 文件到某个数据库的耗时,那么通常情况下这个耗时指的是加载 csv 文件的时间和插入到数据库的总时间,还是仅仅是插入到数据库的时间?

我的感觉是理想情况下是先把数据都先加载到内存中,然后从内存读取数据插入数据库,并且仅记录插入到数据库的时间作为插入的耗时(这样是排除硬盘读取对数据插入的影响)。
但这个问题主要疑惑的地方是,当 csv 文件很大比如说超过内存大小时,我的理解是会用 buffer read 的方式一边读取数据一边插入数据,那么这样 csv 数据读取和写入数据库是混在一起的,那么最终的记录的时间似乎是同时包含 csv 的读取和数据库的写入的。我不太清楚在 csv 数据很大的情况下这个插入的耗时如何记录比较合理。
881 次点击
所在节点    问与答
2 条回复
canbingzt
2021-12-19 09:20:26 +08:00
磁盘 io 比网络 io 和数据库耗时要小很多
rogergood
2021-12-20 22:15:53 +08:00
感谢!有个疑问就是当磁盘 io 的占比变得较大时,比如说测试的是一个 in-memory 的数据库或者 in-memory 的索引结构,这种情况下该怎么考虑? 还是说这种情况下就不能使用这种从磁盘中加载数据的方式测试?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/822992

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX