数据库:pg10
目前猜测数据量 3000w 左右,但极大可能性数据量后续会缓慢增加,但估计数据总数不太可能超过 1 亿
我比较在意查询的性能, 但也怕冗余浪费太多容量
存的数据有点像京东网站的图书
大约有以下字段:
图书 id,图书名字,ISBN,出版社,出版时间,页数,库存,主图,销售量,价格,等等
其中 [图书 id,图书名字,ISBN,出版社,出版时间,页数] 是静态数据,也就是不会变动,固定的
其他字段,都会随着时间推移发生变动
后期也会在页面前台显示出这个书的历史价格报表,历史销量报表,库存报表 等等
也会在后台,显示出这个书的库存,销量 历史 等等 报表数据 给管理人员看
在这种情况下,我想出了 2 个方案:
方案 1: 所有字段放在一张表里, 查询方便,只需要查询一张表, 但是 如果数据量到了 7kw 条,那冗余会浪费很多硬盘容量
优点: 查询方便,只需要查询一张表
缺点:数据冗余,要额外支出数据库容量的费用(具体会多支出多少容量费用,小弟愚钝不知道怎么算)
方案 2:分成 2 张表,1 张存放 静态字段(存长期不变的字段), 另外一张表存频繁变动的字段(如价格,库存,销量,等等)
优点:比较节省数据库容量
缺点: 数据量大了,可能会影响查询性能
在此,求助各位前辈、大神, 这种情况,该如何抉择呢?
1
kslr 2018-09-08 12:18:04 +08:00 1
秉承着机器不值钱
|
2
airyland 2018-09-08 12:27:36 +08:00 1
3000w 数据没必要分表,加索引加缓存用空间换时间。
|
3
lockelee 2018-09-08 12:28:12 +08:00 via iPhone 1
方案 2,价格库存迁移到静态表,销量用销售记录 count 出来,静态表按查询条件加索引,做表分区即可。
|
4
f4nyc 2018-09-08 13:13:38 +08:00 via iPhone 1
3000w,先考虑索引、缓存、查询优化,分表分库最后再考虑吧
|
5
zbinlin 2018-09-08 13:28:42 +08:00 1
方案 2 吧,另一张表还可以再细分,只要做好索引,PG 在连接查询方面性能不是不错的。
|
6
zbinlin 2018-09-08 13:29:22 +08:00
#5 s/不是不错 /还是不错 /
|
7
rrfeng 2018-09-08 13:38:20 +08:00 1
不要 count
|
8
sunnyadamm 2018-09-08 14:09:28 +08:00 1
3 千万不算多,做好索引就行了,机器又不是你的,不用考虑那么多
|