Mysql 是用分区表,还是直接分表?

2023-09-08 08:32:49 +08:00
 sunmoon1983

我们现在有个 Oracle 的数据库,有一张实验数据相关的表字段不多

大约 3000W 的数据吧 打算迁移到 Mysql8 中,我在想这张表是直接分区呢还是分表好一些?

5511 次点击
所在节点    MySQL
54 条回复
sunmoon1983
2023-09-08 10:17:29 +08:00
@poembre 我靠,这么牛逼的吗?
sunmoon1983
2023-09-08 10:17:41 +08:00
@easylee 我靠,这么牛逼的吗?
sunmoon1983
2023-09-08 10:18:06 +08:00
@wh469012917 牛逼!!!
fkdog
2023-09-08 10:21:11 +08:00
查询优化好,单表一亿数据也没问题。
yejian
2023-09-08 11:40:35 +08:00
昨天刚遇到一个问题,mysql 16 核 64G ;单表 4 亿多条数据,sql 查询有索引,但是几千的并发访问就导致 mysql cpu 飙升。
makelove
2023-09-08 11:46:42 +08:00
不走索引 100w 都慢,用好索引以现在 nvme 的速度几亿不是问题
me1onsoda
2023-09-08 11:47:12 +08:00
3000 千万。。"单表超过 3000w 性能迅速下降"这是十年前老 dba 念的口诀。。
然而时至今日,已经不适用了,那时候 hhd 是主流
hahamy
2023-09-08 12:43:27 +08:00
@morri 用了几次,确实牛,今年升级了个版本,默认支持读写一致性
缺点就是贵,真贵,好贵
kuituosi
2023-09-08 13:03:25 +08:00
分区表的缺点是除非你们对 sql 进行详细审查,否则跨表扫描就是灾难。普通研发团队还是老老实实的分表或者分布式数据库吧
sunmoon1983
2023-09-08 13:11:35 +08:00
@kuituosi 为什么还要审查 sql ?我记住用 ORM 的时候必须加上在分区里面查询的标记不就行了吗?
seth19960929
2023-09-08 13:45:03 +08:00
看你的场景, 比如有些按日期分, 基本不会存在跨日期查询, 或者不用历史的日期, 基本用当天的. 这种就分表. 反之分区
nothingistrue
2023-09-08 13:51:12 +08:00
Mysql 你分不了区的,这货要求分区键必须在所有唯一索引之中,意味着你必须要改主键,还是改成复合主键。
git00ll
2023-09-08 13:56:48 +08:00
3000w ,单表就够了
b2byco
2023-09-08 14:21:19 +08:00
postgresql 有个问题 hash 分区,没法在关联或者子查询中,动态使用分区键进行分区剪枝,显式的在 sql 中指定分区键可以。14 就有这个问题。
sadfQED2
2023-09-08 14:23:43 +08:00
@512357301 ck 是计算引擎,不是给你当数据库用的
sadfQED2
2023-09-08 14:26:33 +08:00
单表 10 亿路过,还是 20 多个字段的宽表。堆硬件上去就行了。目前写 QPS 100+,读 QPS 大几千。MySQL 没你想的那么烂
ltfree
2023-09-08 15:22:37 +08:00
分表
GuardX
2023-09-08 15:30:08 +08:00
分表也行,分区表看你业务场景了
tisswb
2023-09-08 15:50:58 +08:00
我的经验是没遇到瓶颈不要乱动 遇到瓶颈能不动就不动
supernovas
2023-09-08 16:47:34 +08:00
不用分区,也不用分表。PostgreSQL 100 亿的表。

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

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

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

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

© 2021 V2EX