数据库表设计的一些技巧


需求分析
根据产品原型图,进行数据库的设计

  • 表结构的设计
  • 字段类型设计
  • 索引设计
  • 数据库引擎的选择(MyISAM,InnoDB)

1. 表结构的设计

表结构在什么情况下需要分库分表呢?
数据量太大的问题我们需要对表进行分表

1.用户请求量太大

对于用户请求量太大的时候,频繁的访问数据库必将导致响应的速度变慢,这时候就可以分散请求到多个服务器上(多个数据库上)。其中实质是一样的访问数据库,只不过在访问数据库的时候会经过一个中间网关,由中间网关来确定访问哪个数据库

2.单个库太大

单个数据库的处理能力有限,单个数据库的存储空间有限,I/O瓶颈等问题需要进行分库操作

3.表单太大

一张表中的表单太大,在查询的时候会导致速度变慢,这时候就可以对表单进行分表;索引膨胀,查询超时等都可以使用分表的方式解决问题

1.1 分表分库的方式

一般的分表分库的方式有两种:垂直拆分 水平拆分

分表分库的问题需要按照实际的需求来分析,一般按照库分表的顺序应该是先垂直分,后水平分的方式

1.1.1 垂直拆分
垂直分表

直白的讲就是太多列了,从中间划一刀下去。
一般是表中的字段较多,将不常用的, 数据较大,长度较长(比如text类型字段)的拆分到“扩展表“。 一般是针对那种几百列的大表,也避免查询时,数据量太大造成的“跨页”问题。

垂直分库

垂直分库可以按照不同业务进行分库,例如:商城类的数据库可以按照User,Order…按照不同的业务逻辑来分库,拆分到多个服务器后也有利于针对不同的业务对数据库进行不同的管理

数据库的连接资源比较宝贵且单机处理能力也有限,在高并发场景下,垂直分库一定程度上能够突破IO、连接数及单机硬件资源的瓶颈。

1.1.2 水平拆分
水平分表

水平分表直白的讲就是表太长了,从中间水平划一刀过去。

水平分表有个问题,就是分表以后还是在同一个数据库当中,这样还是没有办法搞定I/O瓶颈以及磁盘空间不足的问题,所以不常用,用的多的还是水平分表分库

水平分表分库

将单张表的数据切分到多个服务器上去,每个服务器具有相应的库与表,只是表中数据集合不同

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值