美文网首页
数据库中的分表技术

数据库中的分表技术

作者: 易点梅 | 来源:发表于2019-10-16 09:24 被阅读0次

1、水平分表

物理方式分表设计

自己手动创建多个数据表出来

开发者需要考虑分表算法:数据往哪个表写,从哪个表读

QQ的登录表。假设QQ的用户有10亿,如果只有一张表,每个用户登录的时候数据库都要从这10亿中查找,会很慢很慢。如果将这一张表分成100份,每张表有1000万条,就小了很多,比如qq0,qq1,qq2......qq99表。

用户登录的时候,可以将用户的id%100,那么会得到0-99的数,查询表的时候,将表名qq跟取模的数连接起来,就构建了表名。比如123456789用户,取模后是89,那么就到qq89这个表中去查询,查询的时间将会大大缩短。

分表后的问题一:假如说,注册时,如何知道该用户存储到那张表中?

答:可以借助一下redis或者新创建一张临时表(临时表只有一个user_id字段,具体看场景)等方式,假如这里我们用redis

$user_id = $redis->incr('user_id');

//假如我们要分四张表来存储

$user_id%4 = 获取余数

假如$user_id = 8 余数是0,那我们就存储到user_0这个表里面了。

user_0表里面的字段至少要有 本身自增id  $user_id这两个字段,然后其它的一些字段

分表后的问题二:登录时,如果通过昵称来登录该怎么办?

$username = '小白'; //如何知道该昵称在那张表里面呢?

答:同样可以借助redis来存储user_id和username的对应关系,或者在数据库中创建一张表,只存储user_id和username的对应关系,这样通过username就可以找到对应的user_id,然后就可以找到表了

PS:没有什么是一个字段解决不了的问题,如果有那就在加个字段,如果还有那就加一张表吧

2、垂直分表(比较常用)

有的时候,一个数据表设计好了,里边有许多字段,但是这些字段有的是经常使用的,有的是不常用的。在进行正常数据表操作的时候,不常用的字段也会占据一定的资源,对整体操作的性能造成一定的干扰、影响。

为了减少资源的开销、提升运行效率,就可以把不常用的字段给创建一个专门的辅表中去。

同一个业务表的不同字段分别存储到不同的数据表的过程就是“垂直分表”。

例如:

会员数据表有如下字段:

会员表: user_id  登录名  密码  邮箱  手机号码 身高  体重  性别  家庭地址  身份证号

为了使常用字段运行速度更快、效率更高,把常用字段给调出来,因此数据表做以下垂直分表设计:

会员表(主)user字段:user_id  登录名  密码  邮箱  手机号码

会员表(辅)user_fu字段:user_id  身高  体重  性别  家庭地址  身份证号

红色字体是热数据(经常查询的、活跃的数据)、蓝色字体是冷数据(不经常查询的)

以上把会员表根据字段是否常用给分为两个表的过程就是垂直分表。

水平分表:是把一张表的全部数据分别存储到不同的分表之中(每张表的字段是一模一样的)

垂直分表:是把一张表的全部字段分别存储到不同的表里边

相关文章

  • 数据库中的分表技术

    1、水平分表 物理方式分表设计 自己手动创建多个数据表出来 开发者需要考虑分表算法:数据往哪个表写,从哪个表读 Q...

  • 日更十三:数据库技术选型

    数据库技术选型:MySQLicon->冷热分离->分库分表->分布式数据库 在常见的业务场景中,数据量千万级别或以...

  • 分库分表之设备分享的思考

    背景 项目中使用的是MySQL数据库,我们对设备表做了分库分表,分表逻辑:对租户ID进行hash,使用的技术框架S...

  • Mycat2学习2-概念

    1.概念 分库分表 按照一定规则把数据库中的表拆分为多个带有数据库实例,物理库,物理表访问路径的分表。解读:分库:...

  • 分库分表

    分库分表的方式 垂直拆分 1,垂直分表:把数据库中的某张表,把这张表中的一部分字段数据存到一张新表里面,再把表中的...

  • 数据库分区

    概念 数据库分区是一种物理数据库的设计技术,它的目的是为了在特定SQL操作中减少数据读写的总量以缩减响应时间。分表...

  • MySQL的分库分表

    MySQL的分库分表 概述 简单的来说分库分表就是通过某种特定的条件,将存放在同一数据库中的数据分散在多个数据库中...

  • 第三章 数据同步之问题与解决办法

    分表分库的处理 1)传统数据库的分表分库处理: 2)在大数据系统中的做法是构建分布式数据库访问引擎(中间层),将分...

  • 应用T-SQL查询数据

    创建Students数据库 在Students数据库中,创建 StuInfo表,StuMarks表 检查创建的表中...

  • 分库分表常见玩法及跨库查询/事务等问题

    垂直分表 垂直分表在日常开发和设计中比较常见,通俗的说法叫做“大表拆小表”,拆分是基于关系型数据库中的“列”(字段...

网友评论

      本文标题:数据库中的分表技术

      本文链接:https://www.haomeiwen.com/subject/twlymctx.html