中小应用关系型数据库设计基本思路

发布于 2014-08-31 | 更新于 2020-09-20

中小应用关系型数据库设计基本思路,个人见解,欢迎指正。

对于数据增长不大的A表,可以设计成一个表

A表

id(int)

content(varchar 5000)

audit_time(datetime)

user_id(int)

1

外面下雨了

2014-08-31 00:10:12

1324

2

这是一个不错的主意

2014-08-31 00:12:12

2014

抽取大字段到另一个表中

对于数据增长比较大的A表,抽取出比较大的content字段,单独放入另一张B表中,从A表中移除该content字段;

B表,把content字段抽取到这个表中,减小A表的大小:

id(int)

a_id(int)

content(varchar 5000)

1

1

外面下雨了

2

2

这是一个不错的主意

对主表进行分表

如果不用根据这张A表进行复杂的排序查询,只需要使用ID进行查询,则可以直接把这张A表进行分表;

对A表分表之后,如果需要进行audit_time字段的排序查询,则可以把该audit_time字段抽取到另外的C表中,使用A该表的主键进行关联,这样按照audit_time字段排序查询的时候,直接从C表查找到a_id,然后根据a_id从A表获取完整的记录;

C表,这个时候对A表进行分表,把所有的A表记录都存放到C表中:

id(int)

a_id(int)

audit_time(datetime)

1

1

2014-08-31 00:10:12

2

2

2014-08-31 00:12:12

给主表建立一些字段的关联表,对关联表进行分表,并使用分表进行查询,加快查询速度

如果A表不适合分表,但是有些需求需要查找user_id字段值为1324的所有记录,则可以把user_id字段放入另一个D表中,对这张D表进行分表(可以对user_id 取模进行分表,如user_id为12,则12%10 = 2 则可以把该记录存入D表的第三张分表中),这样也可以加快根据user_id字段查找记录时的速度了。

D表,直接从D表查找符合user_id值的记录:

id

a_id

user_id

1

1

1324

2

2

2014

另外,可以适当的在分表中增加冗余字段,减少表之间的关联查询,从而提高性能。

以上是几种常见的场景,具体的分表策略还得根据实际的业务逻辑进行设计。

另外,为了减少数据库的压力,必要的时候,添加对象缓存和页面缓存,对于改动或增加比较频繁的数据,则可以考虑使用如redis之类的内存数据库

本文作者: arthinking

本文链接: https://www.itzhai.commid-app-rdbms-design-idea.html

版权声明: 版权归作者所有,未经许可不得转载,侵权必究!联系作者请加公众号。

×
IT宅

关注公众号及时获取网站内容更新。