请教大家一个数据库涉及问题...

2018-04-18 08:32:11 +08:00
 dbpe
众所周知..数据库设计有三大范式.

我看书之后发现...

数据量大了..表多了..join 查询效率的就低了..开始设计添加冗余字段...

那么有木有大佬告诉下咱...大概多少量级就可以考虑了?

百万级?千万级?
4506 次点击
所在节点    程序员
24 条回复
yulitian888
2018-04-18 08:35:35 +08:00
遇到性能慢了感觉到必须优化了再考虑
百万千万级的,如果是有索引的查询,根本不慢
johnny23
2018-04-18 08:41:41 +08:00
坐等大佬分析
tomczhen
2018-04-18 08:44:03 +08:00
OLAP 和 OLTP 要求不一样,反范式是必要的“妥协”。
lol173
2018-04-18 08:44:16 +08:00
数据进入某一个状态后应该使用冗余了保存的,例如已经下单的商品、商品的价格等等,索引要用上,数据大了水平分表也应该用上,统计数据做阶段性统计数据表,略略略就这么多了
shakoon
2018-04-18 09:04:08 +08:00
量级和服务器性能有关,破机器百万级就很慢了,好机器上亿条也能秒级处理。另外我觉得首先是考虑表分区啊,建什么冗余字段
projectzoo
2018-04-18 09:09:10 +08:00
百万千万现在一般机器都很好吧
自己实测一下不就好咯?
x7395759
2018-04-18 09:38:10 +08:00
冗余字段的设计是有道理的,或许有时候水平分库就是错误的区分
whypool
2018-04-18 09:46:19 +08:00
同问
不用冗余字段,查询需要 join 多个表,有些数据生成了修改的可能性很小,如果弄到一个表去,一个 select 就出数据了

所以,是严格按照范式设计表么?
Hozzz
2018-04-18 10:42:39 +08:00
看预期值了,你要是一条 sql 进去,10 秒出来能接受,那就没必要考虑这些;要是 1 秒都不能接受,那就可以考虑怎么优化了。
dbpe
2018-04-18 13:52:44 +08:00
@lol173 那我大概明白,那些结构的表需要冗余字段,而那些不需要了...

PS:emmm..感觉性能制胜论很多啊...压榨机器的性能不应该是程序员的浪漫么?
dbpe
2018-04-18 13:53:26 +08:00
上面表述不清楚,应该是机器性能制胜论
Cbdy
2018-04-18 14:20:11 +08:00
范式只是一种设计模式,有优点也有缺点,反范式也有优点和缺点,设计的时候要权衡一下
hcymk2
2018-04-18 14:32:42 +08:00
冗余字段其实有另外的一个问题, 你得保证你的冗余字段值的正确。
weizhen199
2018-04-18 14:33:02 +08:00
冗余和索引有点类似的。
牺牲删改时间换查询时间
这东西说实话挺经验的,和模电一样毛估估
csl1995
2018-04-18 16:42:25 +08:00
索引优化、缓存技术、搜索引擎、优化 sql、硬件之后依然有性能瓶颈时再进行
akira
2018-04-18 16:48:57 +08:00
上班第一天,先把范式设计忘掉
dbpe
2018-04-18 16:58:52 +08:00
@akira 哈哈..这倒是..一张表..三个字段是相通的...分别指向不同的表(貌似还没有外键约束..全靠人肉约束)
dbpe
2018-04-18 16:59:18 +08:00
@hcymk2 emmm 不能用外键进行约束么?
dbpe
2018-04-18 17:01:18 +08:00
@weizhen199 还有一点..用空间换时间...
Miy4mori
2018-04-18 18:22:25 +08:00
维护冗余字段的代价有点

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

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

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

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

© 2021 V2EX