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