mysql 分表能带来哪些显著的,可见的提升?

302 天前
 SJH0402
前提:
1 、未分库
2 、表 A 年数据量 1000w ,表 B 年数据量 5000w
3 、原业务中的 sql 涉及到 left join 查询,总是超时

两个表都使用 create_time 字段按月份分表 12 个,
在分表后,left join 的查询效率没有丝毫提升,
单表查询效率略微下降 (0.02 秒 > 0.05 秒)?

分表工具使用的是 mycat 以及 sharding-proxy (都有尝试)。

因为是第一次尝试 mysql 分表,所以很疑惑,分表带来的究竟是哪方面的提升?
还是说我的分表字段或者 sql 有问题
4035 次点击
所在节点    MySQL
33 条回复
GeekGao
302 天前
是使用基于日期的 RANGE 分片吗?
bazingaterry
302 天前
述职 ppt 的内容肯定能有可见的提升……
leonme
302 天前
这么大数据量,还 join ?
laminux29
302 天前
什么年代了,还分库分表,给自己添麻烦,直接高主频满血 CPU + DDR5 高主频内存 + PCIE-5 NVME SSD 。

特别是 PCIE-5 NVME SSD ,多线程 4k 随机读写速度,直接拉满 6GB/s 。贵司什么业务还能超过这个性能?

自从 SSD 与 Redis 普及后,各种 BBS 、交流群中,以前经常讨论的数据库性能问题,已经很少出现了。
gerefoxing
302 天前
分表就算了吧,给自己和以后找麻烦,单表查询,其他关联信息单独查询+缓存,还有一些可以字段冗余。统计做统计表,定时时时更新
luoyou1014
302 天前
先用 mysql 自带的分区功能,可以达到分表的效果,但完全不用改动业务
zhaozs1
302 天前
# 新增分区 类似下面这样的分区,然后用分区查询看看 优化目标是缩小数据量
echo "alter table t_car_gps reorganize partition p230 into ( PARTITION p$pend_date2 VALUES LESS THAN ('$pend_date'), partition p230 VALUES LESS THAN (MAXVALUE));"
dog82
302 天前
大表 filter 数据量超过 5%,索引就会失效
数据库架构设计时要考虑到将来的使用场景
MoYi123
302 天前
@SJH0402 你要是能直接把查询优化好, 有人会不听你的方案吗?
kuituosi
302 天前
分库分表并不是银弹,还是需要考虑需求。尤其是分表的作用更加有限
分表的实质是减少数据规模,改善索引 io 效率,但是如果全表扫描的话还不如不分
分库的实质是采用多节点的计算和 io 资源分摊,来提高查询性能
oltp 的一个特点就是查询的结果集不大,否则你用任何优化方法效果都不理想
tikazyq
301 天前
上 OLAP 或者 PowerBI 吧
kanepan19
292 天前
分库分表 是解决写入不问题,不是解决查询问题。
yuyang1992test
277 天前
一般数据量大才分表吧

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

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

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

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

© 2021 V2EX