为什么需要分库分表?

5 为什么需要分库分表?
随着公司业务快速发展,数据库中的数据量增大,访问性能也变慢了,虽然通过机器集群,sql优化,性能调优等方式在一定程度上可以起到提高性能的作用,但是并不能从根本上解决单库,单表数据量过大的问题。
分库分表就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成,将数据大表拆分成若干数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。

6、为什么要垂直分表?
因为数据的访问频次不同,所以可以根据数据的冷热进行表结构的拆分,从而提升性能

7、垂直分表的依据?
1、把不常用的字段单独放在一张表;
2、把text ,blob等大字段拆分出来放在附表中;
3、经常组合查询的列放在一张表中;

8、什么是垂直分库?
垂直分库是指按照业务将表进行分类 ,分布到不同的数据库上面 ,每个库可以放在不同的服务器上 ,它的核心理念 是专库专用。(以前的微服务的分库方式)

9、什么是水平分库
当一个应用难以再细粒度的垂直切分 ,或切分后数据量行数巨大 ,存在单库读写、 存储性能瓶颈 ,这时候就需要进 行水平分库了 ,经过水平切分的优化 ,往往能解决单库存储量及性能瓶颈。 但由于同一个表被分配在不同的数据 库 加粗样式,需要额外进行数据操作的路由工作 ,因此大大提升了系统复杂度。

水平分库是把同一个表的数据按一定规则(id%2)拆到不同的数据库中 ,每个库可以放在不同的服务器上。

10、水平分表
水平分表是在同一个数据库内 ,把同一个表的数据按一定规则拆到多个表中。

11、分库分表可以解决的问题有哪些?同时他又带来了哪些问题?
解决的问题:
分库分表就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成,将数据大表拆分成若干数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。

带来的问题:
1 分布式事务:
2 主键重复:原来的设计是一张表,现在将这张表的数据均分到了多张表中
3 跨节点查询问题:排序和分页问题:找销量最高的10个商品的数据,需要去多个库的多个表中,联合搜索
这些问题通过Sharding-JDBC(当当网),mycat(alibaba)技术可以有效解决这些问题

1 docker常用命令
Yum install docker 安装docker
Systemctl status docker 查看当前docker的状态(运行状态、关闭状态)
Systemctl start docker 启动
Systemctl stop docker 停止
Systemctl restart docker 重启

2 docker 操作软件
Docker search mysql/redis/activeMQ 搜索软件,以供安装
Docker pull 软件名字 安装软件
Docker images 查看已经已经下载的软件
Docker rmi 镜像名字:删除镜像images
Docker run -it --name=xxx centos:7 /bin/bash 创建容器,第一次运行软件:交互式容器,
Docker run -di --name= xxx centos:7 创建容器,第一次运行软件:守护式容器
Docker ps :查看当前运行的集装箱
Docker ps -a:查看所有的集装箱(运行+不运行的)
Docker start 容器名字:第二次启动容器,根据名字
Docker stop 容器名字:停止运行的容器,根据名字
Docker rm 容器名字: 删除容器

3、 linux安装软件和docker安装软件的区别:
1、linux安装软件,可能会产生软件冲突:端口冲突、快捷键冲突、环境冲突
2、docker安装软件,docker提供的是独立集装箱,每个集装箱里面装的是最简化的linux系统,在这个linux系统上安装软件,集装箱之间互相独立

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库设计经验中进行分表和分库的主要原因是为了解决性能瓶颈和高并发的问题。当业务发展迅速,单个数据库成为了性能瓶颈时,分库分表可以有效地提高数据库的处理能力和性能。 分表是将一个大表按照一定的规则拆分成多个小表,每个小表只包含部分数据。这样可以减少单个表的数据量,提高查询效率,降低锁竞争,减轻数据库的负载压力。常见的分表规则有按照时间范围、按照哈希值等。 分库是将一个数据库分成多个独立的子数据库,每个子数据库可以运行在不同的机器上。这样可以将不同的业务数据分开存储,避免了单个数据库的性能瓶颈,提高了数据库的并发处理能力。 进行分表和分库也会带来一些问题。比如,跨表查询和跨库查询可能会变得复杂,需要额外的处理。同时,数据一致性的维护也会变得更加复杂,需要考虑分布式事务的处理。此外,对于分表分库的中间件选择也需要谨慎考虑,以满足业务需求并保证系统的稳定性。 综上所述,在数据库设计中进行分表和分库可以提高数据库的性能和并发处理能力,但也会引入一些额外的问题和挑战。因此,在设计和实施分表和分库时,需要综合考虑业务需求、系统架构和数据库性能等因素,做出合理的决策。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [分布式 微服务 项目 我们为什么要分库分表?](https://blog.csdn.net/qq_44866828/article/details/124098306)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值