V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
uti6770werty
V2EX  ›  MySQL

请问 MySQL 上有什么不折腾的办法,把瞬时并发过来的短链接 INSERT,缓一缓放类似”池“里,进行缓处理?主要是服务器受不了。。。

  •  
  •   uti6770werty · 2020-10-14 17:53:21 +08:00 · 3377 次点击
    这是一个创建于 1528 天前的主题,其中的信息可能已经有所发展或是发生改变。

    并非是商业生产环境,只是小环境测试,没钱来换服务器升级,
    一下子很多短链接并发来,都是 INSERT,一下子 MySQL 响应就慢了,看到 Threads_connected 上到了 800,然后就缓不过来一阵子,最后是发出 INSERT 的程序蹦掉了。

    MySQL 是否有不折腾,让这些并发量大的 INSERT 做个 cache,缓着先,跟着适合的节奏慢慢写?

    18 条回复    2020-10-15 21:40:13 +08:00
    xuanbg
        1
    xuanbg  
       2020-10-14 17:58:32 +08:00
    没有,但大家都用消息队列削峰去谷。
    1018ji
        2
    1018ji  
       2020-10-14 18:01:07 +08:00
    INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] 这些参数试试
    yph007595
        3
    yph007595  
       2020-10-14 18:04:27 +08:00
    可否在发出 INSERT 的程序端做一下缓存。
    BBCCBB
        4
    BBCCBB  
       2020-10-14 18:07:18 +08:00
    放消息队列然后批量消费批量 insert.
    XDJI
        5
    XDJI  
       2020-10-14 19:27:39 +08:00   ❤️ 1
    不过你们 tps 多少呀 之前我基准测试了下一台 4v16g 的随机读写 64 线程 tps 能到 2000+
    yuudachiPoi
        6
    yuudachiPoi  
       2020-10-14 19:32:20 +08:00
    消息队列。
    lbp0200
        7
    lbp0200  
       2020-10-14 19:46:57 +08:00 via iPhone
    如果是 PHP 的话,就是 800 个进程,一个进程 10 兆,需要 8G 内存
    fredcc
        8
    fredcc  
       2020-10-14 20:10:30 +08:00
    插入锁表了么,上有序队列成本不低啊
    dorothyREN
        9
    dorothyREN  
       2020-10-14 20:12:23 +08:00
    要不借你个数据库做测试?
    onepunch
        10
    onepunch  
       2020-10-14 20:27:41 +08:00
    你的系统怕不是有慢查询吧
    Jooooooooo
        11
    Jooooooooo  
       2020-10-14 20:29:05 +08:00
    写入的地方慢一点呗
    jones2000
        12
    jones2000  
       2020-10-14 23:56:46 +08:00
    写一个数据库写入的 api, 所有数库写入都调用这个 api 写入, 不要直接连接数据库写入了。
    chenqh
        13
    chenqh  
       2020-10-15 00:27:44 +08:00 via Android
    @lbp0200 php 内存这么低?我现在的 py 进程一个 50m,这还是我去掉 jinja2 cache 的结果
    jorneyr
        14
    jorneyr  
       2020-10-15 09:03:21 +08:00
    加个 Nginx,设置相应 API 的 QPS 限制就好了。
    lbp0200
        15
    lbp0200  
       2020-10-15 10:02:42 +08:00
    @chenqh 当然不可能这么低,而且这不是重点,重点是内存满了就会用虚拟内存,然后电脑的性能就十分感人了。
    zhangysh1995
        16
    zhangysh1995  
       2020-10-15 15:31:16 +08:00
    二楼 +1 票 @1018ji
    haosamax
        17
    haosamax  
       2020-10-15 17:29:45 +08:00
    #4 批量插吧
    gaius
        18
    gaius  
       2020-10-15 21:40:13 +08:00 via Android
    不怕丢数据就内存队列,批量插
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3427 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:29 · PVG 18:29 · LAX 02:29 · JFK 05:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.