博客
关于我
Mysql的分表设计方法 (水平分表和垂直分表)
阅读量:790 次
发布时间:2023-02-13

本文共 572 字,大约阅读时间需要 1 分钟。

数据库分表是优化数据库性能的重要手段之一,常见的分表方法主要有水平分表和垂直分表。

水平分表:

水平分表的核心思想是将一个大型数据库分成多个小型数据库。以QQ登录系统为例,假设QQ用户规模达到100亿,如果仅使用一张表,每次登录查询都需要从100亿数据中进行查找,会导致性能严重下降。通过将这张表分成100份,每份包含1亿条记录,分别存储为qq0、qq1、...、qq99等多个表,就大幅降低了查询效率。

具体实现方式是将用户ID进行取模运算,比如ID为1000086,经过100取模运算后得到86,进而将用户ID与表名 qq86 组合,访问对应的数据库进行查询。这种方式能够显著减少每次查询所需的IO操作次数,从而大大提升数据库性能。

垂直分表:

垂直分表的主要应用场景是当一个数据库中的记录数量不多,但字段数量却非常庞大,导致查询时需要进行大量IO操作而性能下降的场景。例如,学生答题记录表AA包含字段Id、name、分数、题目、回答等,其中题目和回答字段较大,而Id、name、分数较小。

在这种情况下,垂直分表可以通过将大字段拆分到不同的表中来优化性能。例如,将题目存储到一个表bb中,将回答存储到另一个表cc中,并与原表AA通过一对一关系连接。这样,在查询时,只需要关注需要的分数字段,就无需扫描题目和回答字段,从而大幅提升查询效率。

转载地址:http://rvdfk.baihongyu.com/

你可能感兴趣的文章
mysql的grant用法
查看>>
Mysql的InnoDB引擎的表锁与行锁
查看>>
mysql的InnoDB引擎索引为什么使用B+Tree
查看>>
MySQL的InnoDB默认隔离级别为 Repeatable read(可重复读)为啥能解决幻读问题?
查看>>
MySQL的insert-on-duplicate语句详解
查看>>
mysql的logrotate脚本
查看>>
MySQL的my.cnf文件(解决5.7.18下没有my-default.cnf)
查看>>
MySQL的on duplicate key update 的使用
查看>>
MySQL的Replace用法详解
查看>>
mysql的root用户无法建库的问题
查看>>
mysql的sql_mode参数
查看>>
MySQL的sql_mode模式说明及设置
查看>>
mysql的sql执行计划详解
查看>>
mysql的sql语句基本练习
查看>>
Mysql的timestamp(时间戳)详解以及2038问题的解决方案
查看>>
mysql的util类怎么写_自己写的mysql类
查看>>
MySQL的xml中对大于,小于,等于的处理转换
查看>>
mysql的下载安装
查看>>
Mysql的两种存储引擎详细分析及区别(全)
查看>>
mysql的临时表简介
查看>>