V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
rogergood
V2EX  ›  问与答

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

  •  
  •   rogergood · 2021-12-18 15:11:04 +08:00 · 1024 次点击
    这是一个创建于 1067 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想请教一下大家,就是比如说我想测试一下批量插入某个 csv 文件到某个数据库的耗时,那么通常情况下这个耗时指的是加载 csv 文件的时间和插入到数据库的总时间,还是仅仅是插入到数据库的时间?

    我的感觉是理想情况下是先把数据都先加载到内存中,然后从内存读取数据插入数据库,并且仅记录插入到数据库的时间作为插入的耗时(这样是排除硬盘读取对数据插入的影响)。
    但这个问题主要疑惑的地方是,当 csv 文件很大比如说超过内存大小时,我的理解是会用 buffer read 的方式一边读取数据一边插入数据,那么这样 csv 数据读取和写入数据库是混在一起的,那么最终的记录的时间似乎是同时包含 csv 的读取和数据库的写入的。我不太清楚在 csv 数据很大的情况下这个插入的耗时如何记录比较合理。
    2 条回复    2021-12-20 22:15:53 +08:00
    canbingzt
        1
    canbingzt  
       2021-12-19 09:20:26 +08:00 via iPhone   ❤️ 1
    磁盘 io 比网络 io 和数据库耗时要小很多
    rogergood
        2
    rogergood  
    OP
       2021-12-20 22:15:53 +08:00
    感谢!有个疑问就是当磁盘 io 的占比变得较大时,比如说测试的是一个 in-memory 的数据库或者 in-memory 的索引结构,这种情况下该怎么考虑? 还是说这种情况下就不能使用这种从磁盘中加载数据的方式测试?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1432 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:27 · PVG 01:27 · LAX 09:27 · JFK 12:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.