如何设计表数据库表一般设计原则:约束:千万级数据表设计

怎样设计表

数据库表通常设计原则:

约束:

千万级数据表设计

1)设计表时要注意:

2)索引

3)数据类型

4)合适索引列

5)分表分库

把一个数据库分成多个,建议做个读写分离就行了,真正的做分库也会带来大量的开发成本,得不偿失!不推荐使用。

分库分表注意事项

设计表的时侯须要确定此表根据哪些样的规则进行分库分表。比如,当有新用户时,程序得确定将此用户信息添加到那个表中;同理小型数据库设计,当登陆的时侯我们得通过用户的帐号找到数据库中对应的记录,所有的那些都须要根据某一规则进行。

路由,通过分库分表规则找到对应的表和库的过程,例如根据hash算法或则索引区间界定。

1.分库分表维度的问题

如果用户订购了商品,需要将交易记录保存取来,倘若根据用户的经度分表,则每位用户的交易记录都保存在同一表中,所以很快很便捷的查找到某用户的订购情况,而且某商品被订购的情况则很有可能分布在多张表中,查找上去比较麻烦。反之,根据商品维度分表小型数据库设计,可以很便捷的查找到此商品的订购情况,但要查找到买人的交易记录比较麻烦。

所以常见的解决方法有:

a.通过扫表的方法解决,此方式基本不可能,效率太低了。

b.记录两份数据,一份根据用户经度分表,一份根据商品维度分表。

c.通过搜索引擎解决,但若果实时性要求很高,又得关系到实时搜索。

2.联合查询的问题

联合查询基本不可能,由于关联的表有可能不在同一数据库中。

3.避开跨库事务

防止在一个事务中更改db0中的表的时侯同时更改db1中的表,一个是操作上去更复杂,效率也会有一定影响。

4.尽量把同一组数据放在同一DB服务器上

比如将买家a的商品和交易信息都放在db0中,当db1挂了的时侯,买家a相关的东西可以正常使用。也就是说防止数据库中的数据依赖另一数据库中的数据。

参考资料:

MySQL规范(数据库表设计规范)

MYSQL数据库数据分拆之分库分表总结-云+社区-腾讯云

© 版权声明
THE END
喜欢就支持一下吧
点赞69赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容