首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Coding
V2EX  ›  程序员

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

  •  
  •   xbdsky · 2018-11-23 14:11:05 +08:00 · 2847 次点击
    这是一个创建于 384 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在太慢了
    25 回复  |  直到 2018-11-29 20:30:08 +08:00
        1
    largecat   2018-11-23 14:15:04 +08:00 via Android
    你带宽多大
        2
    KingEngine   2018-11-23 14:18:26 +08:00
    集群 各种优化 各种**
        3
    xbdsky   2018-11-23 14:19:05 +08:00
    服务器配置 2 核 4G 3M 带宽 Windows 2008
        4
    brucedone   2018-11-23 14:27:02 +08:00
    建议还是以 csv 或者其它的文件形式批量导入
        5
    cyhulk   2018-11-23 14:32:14 +08:00
    1.不要索引
    2.数据引擎使用 MyISAM,不要用 innodb
    3.批量提交,节约带宽
        6
    danielmiao   2018-11-23 14:42:29 +08:00
    分表,不要建不必要的索引,10 分钟 100W 条,一秒才 1667 条,4C8G 的 mysql 5.5 innoDB 之前测试差不多 1 秒 3000 条
        7
    auxox   2018-11-23 15:05:01 +08:00
    曾经在一个配置很一般的容器上做过测试,开多线程,批量插入的话,mysql 的插入速度能达到 5000 条 /S
        8
    find456789   2018-11-23 15:29:39 +08:00
    搭车问问,postgresql 10, 我有个表, 其中 5 个字段,设置了唯一 unique (听说设置了唯一,就会自动建立索引)

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

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

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

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