• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xbdsky
V2EX  ›  程序员

mysql10 分钟采集一百万条?要如何实现?

  •  
  •   xbdsky ·
    xbdsky · Nov 23, 2018 · 4709 views
    This topic created in 2767 days ago, the information mentioned may be changed or developed.
    现在太慢了
    25 replies    2018-11-29 20:30:08 +08:00
    largecat
        1
    largecat  
       Nov 23, 2018 via Android
    你带宽多大
    KingEngine
        2
    KingEngine  
       Nov 23, 2018
    集群 各种优化 各种**
    xbdsky
        3
    xbdsky  
    OP
       Nov 23, 2018
    服务器配置 2 核 4G 3M 带宽 Windows 2008
    brucedone
        4
    brucedone  
       Nov 23, 2018
    建议还是以 csv 或者其它的文件形式批量导入
    cyhulk
        5
    cyhulk  
       Nov 23, 2018
    1.不要索引
    2.数据引擎使用 MyISAM,不要用 innodb
    3.批量提交,节约带宽
    danielmiao
        6
    danielmiao  
       Nov 23, 2018
    分表,不要建不必要的索引,10 分钟 100W 条,一秒才 1667 条,4C8G 的 mysql 5.5 innoDB 之前测试差不多 1 秒 3000 条
    auxox
        7
    auxox  
       Nov 23, 2018
    曾经在一个配置很一般的容器上做过测试,开多线程,批量插入的话,mysql 的插入速度能达到 5000 条 /S
    find456789
        8
    find456789  
       Nov 23, 2018
    搭车问问,postgresql 10, 我有个表, 其中 5 个字段,设置了唯一 unique (听说设置了唯一,就会自动建立索引)

    如果我把另外 4 个字段的 唯一 unique 取消,只能下一个字段设置 unique,是不是插入性能会更高?

    谢谢
    alex321
        9
    alex321  
       Nov 23, 2018
    redis 或者 es 先扛一扛,然后再进 mysql ?
    4DAX07B8Kle4Dm6T
        10
    4DAX07B8Kle4Dm6T  
       Nov 23, 2018
    用队列
    petelin
        11
    petelin  
       Nov 23, 2018
    @alex321 明显应该用 kafka 抗啊.为什么要用 ES 和 Redis
    opengps
        12
    opengps  
       Nov 23, 2018
    每秒写入 1667。这个数据量,我问下楼主是不是在做某种终端采集数据?
    我做 gps 平台时候,最大的数据库压力就是并发写入巨大,做过类似压测,1667 这个数,是不是那 ssd 的云服务器自建的数据库?
    如果以上推测准确或者接近,那么我给楼主的建议是:
    1,是时候考虑分多个数据库了,及时单机性能还能提高一倍,但也仅仅是一倍,瓶颈还是很低
    2,合并写入。数据库这东西,1k 大小写入 1000 行,跟 1M 大小写入 1 行,相同时间写入总量上是有提升的。试试一次写入 100 条能提高多少 io 上限
    3,数据库优化角度:精简规则,借助聚集索引保证写入数据是“物理顺序”,减少这个表的读出场景,尽量使用单一的查询条件取数拿到其他表再加工。
    alex321
        13
    alex321  
       Nov 23, 2018
    @petelin #11 看设计结构和使用目的吧,现在不清楚 po 主的目的。
    前两天生产环境,渣渣性能机器上,70w 多数据推进 es,5min 多点。es 有各种现成的好工具哈哈,Redis 当缓存呀。

    po 主这个机器性能和带宽都有影响。
    NotNil1
        14
    NotNil1  
       Nov 23, 2018
    换时序数据库?上 MQTT?
    petelin
        15
    petelin  
       Nov 23, 2018
    @alex321 对 ES 没 kafka 熟练, kafka 有一种连接器, 可以配置一下就把数据导入到 MySQL 中...ES 吃内存速度确实很快.
    keakon
        16
    keakon  
       Nov 23, 2018
    我 5 年前的笔记本电脑都能每秒插 1 万条到 innodb,不知道你们给这么多优化建议干啥…

    楼主合并一下需要提交的记录,然后一起插入就行了。
    gtlions
        17
    gtlions  
       Nov 23, 2018 via iPhone
    批量加载;现在虚拟机一般的配置 4Core/8GB 加载 3w 不到一秒钟,这个速度不是单次而是持续在跑的
    ccnccy
        18
    ccnccy  
       Nov 23, 2018 via iPhone
    合并一起不就行,优化一下
    moult
        19
    moult  
       Nov 23, 2018
    关索引、关约束、关 binlog、多个 insert 合并成一个 insert 插入。
    xbdsky
        20
    xbdsky  
    OP
       Nov 24, 2018
    谢谢大家
    br00k
        21
    br00k  
       Nov 24, 2018 via iPhone
    ELK ?
    xipushi
        22
    xipushi  
       Nov 24, 2018 via iPhone
    用 insert values(),(),()可以搞定,不要 update。数据再多,考虑换列数据库。我们用的那个,秒秒钟存几千万。把数据整理归集下,减少存的数据。
    realpg
        23
    realpg  
    PRO
       Nov 24, 2018
    删索引 ARCHIVE 引擎 批量插入 硬盘 IO 要够高
    另外 windows 什么鬼
    wwww961h
        24
    wwww961h  
       Nov 24, 2018 via iPhone
    一秒才 1000 多条,太简单了,没难度,楼上的建议完全够用
    l0wkey
        25
    l0wkey  
       Nov 29, 2018
    时序数据?这种情况
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5533 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 82ms · UTC 03:49 · PVG 11:49 · LAX 20:49 · JFK 23:49
    ♥ Do have faith in what you're doing.