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

2020-05-08 18:23:30 +08:00
 fengya68

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

5845 次点击
所在节点    程序员
43 条回复
xuanbg
2020-05-09 10:22:43 +08:00
难道每个门店都是专有的商品?看着也不像啊,1700 门店才 8000 种。应该是大部分商品所有门店都有,小部分商品某些门店专有吧?

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

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

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

肯定是你索引建的不对或者 sql 写的有问题!
collery
2020-05-09 13:49:05 +08:00
不仅要看行数,还得看数据量大小了
xcstream
2020-05-09 13:55:46 +08:00
查询方式有问题吧 可以先查 id 再 id 查数据
Evilk
2020-05-09 15:07:15 +08:00
@Michaelssss 是的,我们最近才升级了 MySQL8.0,而且现在硬件性能已经很好了
Erroad
2020-05-09 15:12:08 +08:00
2kw 慢不是单表的原因了
fengya68
2020-05-09 17:18:57 +08:00
@xuanbg 每个门店 对应每个商品价格都不同 所以大区 区域 站点 门店 都是一个授权的过程
kiddingU
2020-05-09 17:28:38 +08:00
1 、分表分库
2 、优化查询
3 、查询可以走 ES
gaocheng
2020-05-09 17:39:57 +08:00
没有什么事情是钱解决不了的,如果还是解决不了就是钱没花到位无论是请人还是买设备买服务
ccnccy
2020-05-09 18:05:13 +08:00
没索引吧,有的话,应该不会太慢。
fengya68
2020-05-09 18:55:24 +08:00
慢日志高于 0.1 秒的没有,并发一上来 还是会导致卡顿的,还是得好好排查下其他问题
fengya68
2020-05-09 19:11:35 +08:00
@realpg 阿里云通用服务器 8 核 16g cpu 没满过 就是偶然会卡一下 阿里云的服务器还是可以的 慢日志也没有 设置 0.1 秒
shenjixiang
2020-05-09 20:14:58 +08:00
数据量大了最好优化下 mysql 的默认配置,可以按门店 id 做做表分区

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/669743

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX