求教设计一个图书管理系统的表,大约 3kw 个记录,要不要分 2 个表,数据库是 pg10

2018-09-08 12:12:14 +08:00
 find456789

数据库:pg10

目前猜测数据量 3000w 左右,但极大可能性数据量后续会缓慢增加,但估计数据总数不太可能超过 1 亿

我比较在意查询的性能, 但也怕冗余浪费太多容量

存的数据有点像京东网站的图书

大约有以下字段:

图书 id,图书名字,ISBN,出版社,出版时间,页数,库存,主图,销售量,价格,等等

其中 [图书 id,图书名字,ISBN,出版社,出版时间,页数] 是静态数据,也就是不会变动,固定的

其他字段,都会随着时间推移发生变动

后期也会在页面前台显示出这个书的历史价格报表,历史销量报表,库存报表 等等

也会在后台,显示出这个书的库存,销量 历史 等等 报表数据 给管理人员看


在这种情况下,我想出了 2 个方案:

方案 1: 所有字段放在一张表里, 查询方便,只需要查询一张表, 但是 如果数据量到了 7kw 条,那冗余会浪费很多硬盘容量

优点: 查询方便,只需要查询一张表
缺点:数据冗余,要额外支出数据库容量的费用(具体会多支出多少容量费用,小弟愚钝不知道怎么算)

方案 2:分成 2 张表,1 张存放 静态字段(存长期不变的字段), 另外一张表存频繁变动的字段(如价格,库存,销量,等等)

优点:比较节省数据库容量
缺点: 数据量大了,可能会影响查询性能

在此,求助各位前辈、大神, 这种情况,该如何抉择呢?

1425 次点击
所在节点    问与答
8 条回复
kslr
2018-09-08 12:18:04 +08:00
秉承着机器不值钱
airyland
2018-09-08 12:27:36 +08:00
3000w 数据没必要分表,加索引加缓存用空间换时间。
lockelee
2018-09-08 12:28:12 +08:00
方案 2,价格库存迁移到静态表,销量用销售记录 count 出来,静态表按查询条件加索引,做表分区即可。
f4nyc
2018-09-08 13:13:38 +08:00
3000w,先考虑索引、缓存、查询优化,分表分库最后再考虑吧
zbinlin
2018-09-08 13:28:42 +08:00
方案 2 吧,另一张表还可以再细分,只要做好索引,PG 在连接查询方面性能不是不错的。
zbinlin
2018-09-08 13:29:22 +08:00
#5 s/不是不错 /还是不错 /
rrfeng
2018-09-08 13:38:20 +08:00
不要 count
sunnyadamm
2018-09-08 14:09:28 +08:00
3 千万不算多,做好索引就行了,机器又不是你的,不用考虑那么多

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

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

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

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

© 2021 V2EX