mysql 单表即将上 2 千万数据 存授权的 性能跟不上了 怎么优化 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
fengya68
V2EX    程序员

mysql 单表即将上 2 千万数据 存授权的 性能跟不上了 怎么优化

  •  
  •   fengya68 2020-05-08 18:23:30 +08:00 6320 次点击
    这是一个创建于 1983 天前的主题,其中的信息可能已经有所发展或是发生改变。

    存商品授权的 每个门店对应每个商品的授权 现在有 8000 多商品 7000 多家门店 目前已经有 1800 多万条数据了 要怎么破 即将到性能瓶颈了

    43 条回复    2020-05-10 14:20:44 +08:00
    zoharSoul
        1
    zoharSoul  
       2020-05-08 18:26:18 +08:00
    加钱呗
    阿里云 rds 4c8g 的我试过单表 2 亿多数据,
    单表查询没啥压力
    cominghome
        2
    cominghome  
       2020-05-08 19:49:44 +08:00
    @zoharSoul 4c8g 能搞 2 亿行?这么猛的吗?还是说字段少?
    Nitromethane
        3
    Nitromethane  
       2020-05-08 20:03:13 +08:00
    数据同步到 ES 一份,读请求走 ES ;
    peyppicp
        4
    peyppicp  
       2020-05-08 20:08:40 +08:00
    按照门店 id 分库分表,水平拆分到 101 个库里,表变为逻辑表,单表 18w 数据
    wqhui
        5
    wqhui  
       2020-05-08 20:19:54 +08:00
    分表呗,读频繁的话就做主从读写分离或者用缓存
    opengps
        6
    opengps  
       2020-05-08 20:39:56 +08:00 via Android
    表分区,分表,分库,集群
    就这么个优化路线
    sagaxu
        7
    sagaxu  
       2020-05-08 20:41:40 +08:00 via Android
    才 2000 万就慢,分表没用
    CStarter
        8
    CStarter  
       2020-05-08 23:36:48 +08:00
    @peyppicp 101 个库?
    vinsa
        9
    vinsa  
       2020-05-09 01:16:05 +08:00
    才 2KW 数据怕啥,分个区就好了,还能上个 10 倍,主键查询瞬回。
    sonxzjw
        10
    sonxzjw  
       2020-05-09 08:15:55 +08:00
    简单,分表分库
    yc8332
        11
    yc8332  
       2020-05-09 08:48:19 +08:00
    这种东西存下来后面不都是走缓存的吗
    pmispig
        12
    pmispig  
       2020-05-09 09:12:09 +08:00
    上 ssd,上好的 ssd,换 cpu 换主频高的 cpu
    fareware
        13
    fareware  
       2020-05-09 09:34:08 +08:00
    2kw 慢不是硬件或者设计问题吗?
    mymike
        14
    mymike  
       2020-05-09 09:56:25 +08:00
    根本没必要分库分表 ES,硬件性能与配置可能需要调整下,其实单机上亿没有丝毫问题
    fengya68
        15
    fengya68  
    OP
       2020-05-09 10:12:44 +08:00
    @zoharSoul 有道理 现在表结构是 MyIsam 有必要转 InnoDb 吗
    fengya68
        16
    fengya68  
    OP
       2020-05-09 10:14:19 +08:00
    @mymike 商城类就怕延迟高,现在有时候就会卡一下 看来优化还有很长的一段路
    zoharSoul
        17
    zoharSoul  
       2020-05-09 10:14:47 +08:00
    @fengya68
    看你查询逻辑了.
    一般来说可以转
    zoharSoul
        18
    zoharSoul  
       2020-05-09 10:16:35 +08:00   1
    @cominghome 字段比较少就 10 多个吧.
    合理的索引 + 相对简单的查询..
    现在 mysql 的性能超乎你的想象...

    别听那些讲面试的瞎几把扯淡,几百万就分库分表很多时候是纯粹给自己加戏.
    encro
        19
    encro  
       2020-05-09 10:19:16 +08:00
    所有的 mysql 慢问题的三个常规操作:
    1,慢日志;
    2,慢日志分析工具;
    3,explain ;
    kiddult
        20
    kiddult  
       2020-05-09 10:21:59 +08:00
    @fengya68 卡一下多半和 mysql 没啥关系,查一下慢日志,100%有人查询没走索引瞎操作了
    xuanbg
        21
    xuanbg  
       2020-05-09 10:22:43 +08:00
    难道每个门店都是专有的商品?看着也不像啊,1700 门店才 8000 种。应该是大部分商品所有门店都有,小部分商品某些门店专有吧?

    如果这样的话,可以给权限分级别啊。譬如分为:公共、分组、门店这么几个级别。公共的就是所有门店都能访问;分组的就是要有组权限的才能访问,组权限就是给门店分组,按分组授权;门店的就是指定门店才能访问,和你现在的做法一个样。这样你的权限关系表就能缩减几百倍的数据。我估计有个几万行就足够了。
    novaa
        22
    novaa  
       2020-05-09 10:30:05 +08:00
    常规操作索引优化 长远考虑还是的话水平分吧
    encro
        23
    encro  
       2020-05-09 10:44:32 +08:00   1
    @xuanbg

    分权不如直接店铺对商品快。因为还有排序等附加信息吧。

    这里面其实是主表要做好,主表只能是关联表。。

    select p.name from shop_product sp, product p where sp.shop_id=xxx and sp.product_id=p.id limit 100;

    如果 sp 的 shop_id 建立了索引,那么几千万数据,还是毫秒级的。

    什么?还在用 MyIsam ?难道非常享受断电之后 repair 的过程?
    encro
        24
    encro  
       2020-05-09 10:49:48 +08:00
    @zoharSoul

    阿里云上数据库,最低配置一年 2 千那种,最大的表存着 2 亿,感觉还可以拼一拼。
    Michaelssss
        25
    Michaelssss  
       2020-05-09 11:11:21 +08:00
    单表也就 2GB 左右大小把。。都 0202 年了,MySQL 已经不是你想的那种弱鸡了
    realpg
        26
    realpg  
    PRO
       2020-05-09 11:16:53 +08:00
    垃圾服务器,单表 4200 万无性能压力啊
    还是执行有问题
    realpg
        27
    realpg  
    PRO
       2020-05-09 11:18:48 +08:00
    @cominghome #2
    查询都简单化,很容易 handle
    你天天全是复杂到吓死人的查询,恨不得八个表 full join 那肯定不行

    主要还是表结构 查询设计
    gemini767
        28
    gemini767  
       2020-05-09 11:42:22 +08:00
    @zoharSoul 百万数据分库分表确实加戏,但是上亿数据单表查询也是牛了。。个人经验千万数据业务稍微复杂,rt 抖动的就非常大了,生产风险很大。
    ylsc633
        29
    ylsc633  
       2020-05-09 12:09:20 +08:00
    2kw 就瓶颈了......

    肯定是你索引建的不对或者 sql 写的有问题!
    collery
        30
    collery  
       2020-05-09 13:49:05 +08:00
    不仅要看行数,还得看数据量大小了
    xcstream
        31
    xcstream  
       2020-05-09 13:55:46 +08:00
    查询方式有问题吧 可以先查 id 再 id 查数据
    Evilk
        32
    Evilk  
       2020-05-09 15:07:15 +08:00
    @Michaelssss 是的,我们最近才升级了 MySQL8.0,而且现在硬件性能已经很好了
    Erroad
        33
    Erroad  
       2020-05-09 15:12:08 +08:00
    2kw 慢不是单表的原因了
    fengya68
        34
    fengya68  
    OP
       2020-05-09 17:18:57 +08:00
    @xuanbg 每个门店 对应每个商品价格都不同 所以大区 区域 站点 门店 都是一个授权的过程
    kiddingU
        35
    kiddingU  
       2020-05-09 17:28:38 +08:00
    1 、分表分库
    2 、优化查询
    3 、查询可以走 ES
    gaocheng
        36
    gaocheng  
       2020-05-09 17:39:57 +08:00
    没有什么事情是钱解决不了的,如果还是解决不了就是钱没花到位无论是请人还是买设备买服务
    ccnccy
        37
    ccnccy  
       2020-05-09 18:05:13 +08:00 via iPhone
    没索引吧,有的话,应该不会太慢。
    fengya68
        38
    fengya68  
    OP
       2020-05-09 18:55:24 +08:00
    慢日志高于 0.1 秒的没有,并发一上来 还是会导致卡顿的,还是得好好排查下其他问题
    fengya68
        39
    fengya68  
    OP
       2020-05-09 19:11:35 +08:00
    @realpg 阿里云通用服务器 8 核 16g cpu 没满过 就是偶然会卡一下 阿里云的服务器还是可以的 慢日志也没有 设置 0.1 秒
    shenjixiang
        40
    shenjixiang  
       2020-05-09 20:14:58 +08:00
    数据量大了最好优化下 mysql 的默认配置,可以按门店 id 做做表分区
    zhuweiyou
        41
    zhuweiyou  
       2020-05-09 21:52:56 +08:00
    应该是没索引
    qbmiller
        42
    qbmiller  
       2020-05-10 08:40:27 +08:00 via iPhone
    @zoharSoul 没毛病,阿里后台可能大数据性质的 MySQL
    yukiloh
        43
    yukiloh  
       2020-05-10 14:20:44 +08:00 via Android
    去年看到别人评价数据库说两千万是瓶颈
    现在直接两个亿,这么给力的吗…
    关于     帮助文档     自助推广系统     博客     API   FAQ     Solana     5563 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 08:06 PVG 16:06 LAX 01:06 JFK 04:06
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86