我们现在有个 Oracle 的数据库,有一张实验数据相关的表字段不多
大约 3000W 的数据吧 打算迁移到 Mysql8 中,我在想这张表是直接分区呢还是分表好一些?
我们现在有个 Oracle 的数据库,有一张实验数据相关的表字段不多
大约 3000W 的数据吧 打算迁移到 Mysql8 中,我在想这张表是直接分区呢还是分表好一些?
|
dw2693734dSep 8, 2023
1
迁移到 Postgres 吧, Postgres 语法和 Oracal 差不多。shard 分表也比 mysql 方便许多。
|
|
jwjSep 8, 2023
2
用分区表,查询方便,但需要每条查询都带上分区的条件,不然还是会扫描全表。用分表,查询多个分表时,比较麻烦。个人理解,不确保其准确性。
|
|
xomixSep 8, 2023
3
随口推一下 TiDB ,基本可以平替,你也不用考虑数据量和性能问题
|
|
gfswoquasfasdSep 8, 2023
4
分表啊。mysql 分区表 我劝你别用
|
|
5
@xomix TiDB 成本有点高,暂时不考虑
|
|
6
@gfswoquasfasd 因为什么呀?有坑,能给说说吗?
|
|
JKeitaSep 8, 2023
7
分表吧
|
|
8
@dw2693734d Postgres 我们这边的开发人员用的不多,积累不太够呀^_^
|
|
changdySep 8, 2023
9
mysql 的分区表比较拉跨 ,对比 postgresql.
不过我也忘记那些点 mysql 的比较拉跨了. 网上分表的 case 也比较少. |
|
8355Sep 8, 2023
10
3000 万就查不动了嘛。。。
|
|
512357301Sep 8, 2023 via Android
11
用 clickhouse ,它可以自动同步 MySQL 的数据的,写 MySQL ,读 ck
|
|
xmitmanSep 8, 2023
12
3000 万没啥压力吧
|
|
infanteSep 8, 2023
13
推荐 postgresql
|
|
14
3000w 数据,MySQL8 单机低配也许都能查的起飞。
|
|
16
mysql 单表 8 亿 路过。3kw 这才哪跟哪
|
|
wh469012917Sep 8, 2023
17
等 3 亿后再考虑这个问题吧,好好优化 SQL ,比什么都强
|
|
wh469012917Sep 8, 2023
18
@easylee 写好 SQL 用好索引,3 亿都不在话下,Mysql 没那么垃圾
|
|
keppelfeiSep 8, 2023
19
3000w 才算起步吧
|
|
morriSep 8, 2023
20
直接上阿里的 polardb 云数据库, 单表就好了,单表存储是 PB 级别的。
PolarDB 还支持水平扩展,可以看需求动态添加实例。 性能监控,备份什么都有的。 chatGPT-3.5 回复 “PolarDB 是一种高性能、高可用性的云原生关系型数据库服务,可以有效地处理大规模数据,并提供了弹性伸缩和自动备份等功能,使其适用于各种类型的应用和场景。” |
|
21
@poembre 我靠,这么牛逼的吗?
|
|
22
@easylee 我靠,这么牛逼的吗?
|
|
23
@wh469012917 牛逼!!!
|
|
fkdogSep 8, 2023
24
查询优化好,单表一亿数据也没问题。
|
|
yejianSep 8, 2023
25
昨天刚遇到一个问题,mysql 16 核 64G ;单表 4 亿多条数据,sql 查询有索引,但是几千的并发访问就导致 mysql cpu 飙升。
|
|
26
不走索引 100w 都慢,用好索引以现在 nvme 的速度几亿不是问题
|
|
me1onsodaSep 8, 2023
27
3000 千万。。"单表超过 3000w 性能迅速下降"这是十年前老 dba 念的口诀。。
然而时至今日,已经不适用了,那时候 hhd 是主流 |
|
kuituosiSep 8, 2023 via Android
29
分区表的缺点是除非你们对 sql 进行详细审查,否则跨表扫描就是灾难。普通研发团队还是老老实实的分表或者分布式数据库吧
|
|
30
@kuituosi 为什么还要审查 sql ?我记住用 ORM 的时候必须加上在分区里面查询的标记不就行了吗?
|
|
SethShiSep 8, 2023
31
看你的场景, 比如有些按日期分, 基本不会存在跨日期查询, 或者不用历史的日期, 基本用当天的. 这种就分表. 反之分区
|
|
nothingistrueSep 8, 2023
32
Mysql 你分不了区的,这货要求分区键必须在所有唯一索引之中,意味着你必须要改主键,还是改成复合主键。
|
|
git00llSep 8, 2023
33
3000w ,单表就够了
|
|
b2bycoSep 8, 2023
34
postgresql 有个问题 hash 分区,没法在关联或者子查询中,动态使用分区键进行分区剪枝,显式的在 sql 中指定分区键可以。14 就有这个问题。
|
|
sadfQED2Sep 8, 2023
36
单表 10 亿路过,还是 20 多个字段的宽表。堆硬件上去就行了。目前写 QPS 100+,读 QPS 大几千。MySQL 没你想的那么烂
|
|
ltfreeSep 8, 2023
37
分表
|
|
GuardXSep 8, 2023
38
分表也行,分区表看你业务场景了
|
|
tisswbSep 8, 2023
39
我的经验是没遇到瓶颈不要乱动 遇到瓶颈能不动就不动
|
|
supernovasSep 8, 2023
40
不用分区,也不用分表。PostgreSQL 100 亿的表。
|
|
kuituosiSep 8, 2023
41
@sunmoon1983 不是每个人每次都能记住这个地方有分区表因素,是人就会犯错不犯错的是神仙
|
|
masterclockSep 8, 2023
42
当开始考虑 MySQL 怎么怎么的时候,直接换 TiDB
|
|
mywowoSep 8, 2023
43
站一波 PG
|
|
CruzzSep 8, 2023
44
才 3000w ,单表我最多写过 1.2 个亿,除了导入时间长,读取没有任何问题,只要不出事只管用。
|
|
caionSep 8, 2023
45
Mysql8 分区只支持 InnoDB 引擎。分区键必须是主键的一部分,分区键值被更新时,mysql 会移动数据到新的分区,造成较大性能成本。分区表不支持并行查询(垃圾),没法充分利用多核 cpu
|
|
adoalSep 8, 2023
47
当你还没开始用 MySQL 就考虑 MySQL 够不够用、要不要用 trick 的时候,不如用 PG 。
当你要从 Oracle 迁出,但目标系统还尚未投入成本建的时候,干脆用 PG 。 |
|
adoalSep 8, 2023
48
至于 PG“我们这边的开发人员用的不多,积累不太够呀”……我觉得你会来开贴问这个问题,基本上 MySQL 也没啥高级技能积累。
|
|
crazyweedsSep 8, 2023
49
PG 吧,我之前也觉得 MySQL 很好,但我现在觉得 PG 更好。
|
|
changweiSep 9, 2023
50
不知道你 3000W 行的表空间用多大,不到 5GB 的话可以试试看 TiDB Serverless ,0 成本启动,免费使用 5GB 存储容量,开箱即用
|
|
keenkillerSep 9, 2023 via Android
51
3000 万单表足矣
|
|
vitoliuSep 9, 2023
52
推荐使用 drds/polardb
比 Oracle 便宜太多了。 迁到别的数据库,后续都有学习成本和运维成本。 |
|
53
@adoal 我们是基本上 MySQL 也没啥高级技能积累,但是毕竟 MySQL 相对于 PG 来说,用的多一些呀
|
|
adoalSep 10, 2023
54
@sunmoon1983 好吧,尊重你的情结
|