返回顶部
首页 > 资讯 > 数据库 >简单理解分表分库及其缺点
  • 435
分享到

简单理解分表分库及其缺点

简单理解分表分库及其缺点 2014-09-12 13:09:07 435人浏览 猪猪侠
摘要

简单理解分表分库及其缺点

当我们系统达到瓶颈时候,最影响系统性能的永远是最底层的。例如数据库,所以数据库优化相对重要,当数据库性能由于数据量过大导致达到瓶颈的时候,我们会选择对数据库拆分或者对表拆分,也就是分表分库。分表分库也分为2种拆分方式:水平拆分、垂直拆分


1.水平分表 就是把一个表拆分成多个字段相同的表,把数据分开保存到不同的表上。
    例如一个user表有一亿用户,如果只用一张表储存查询的时候会很慢
    但是如果分成10个表来储存这些用户,则每个表只需要保存1000W数据,这样效率就会大大提高
    那如果分成10个表就需要制定相应的储存规则,例如通过 user 表的 userName字段进行hash取模来存放哪个表

垂直分表  如果一个表的字段过多及储存的空间较大则可以进行垂直拆分,就是把一个表的字段拆分开保存。
    例如把user再拆分一个user_detail表,各个表保存不同的字段,然后使用ID关联,避免字段过多导致查询慢

水平分库  如果一个数据库实例承受不了目前的压力,则可以使用多个数据库实例,数据库直接存在相同的表。
    因为数据库表都是相同的,与水平分表类似,通过规则把数据保存到不同的数据库


4.垂直分库  现在程序都是分布式或者模块化,一个服务器可能只负责某部分业务,数据库也可以使用类似的操作。
    把不同业务的表分开储存到不同的数据库上
    例如一个电商项目,把订单类的表与商品类的表分开到不同的数据库储存

 

分表分库之后带来的问题:
    1.数据唯一性:即使同库分表或是分库分表都需要解决的一个问题就是ID唯一,保证多个表之间的数据ID是唯一的。
         可以自定义主键生成器,主键生成规则最好符合数据库引擎的一些特性,比较可取的就是通过 时间+机器号+随机数,时间放到最前面是保证数值在递增


    2.横向扩展:上面举例使用的是通过取模方式定位数据储存的库表,如果最开始取模是按10个表取,当我需要再加2个表则变成按12个表取模,这样新数据不会有问题,但是查询旧数据就存在问题。
        当数据库需要进行拆分的时候,或多或少都需要对数据做一定迁移,把旧数据重新分配到不同表中


    3.部分表无法通过join关联:例如把订单表与商品表拆开储存到不同的数据库,如果需要根据订单查询商品信息,则难以通过join关联查询。
        如果可以冗余某些字段避免过多查询
        可以使用FEDERATED引擎远程关联


    4.数据库事务:还是使用订单表与商品表拆开储存到不同的数据库的例子,一个下单操作需要在订单类表添加订单信息,同时需要在商品类表扣除库存之类的,这之间的操作如何保证原子性。
        可以使用某些分布式事务的中间件解决


    5.维护成本更高:当单库单表变成多库多表,其中的关系更复杂,维护成本更高

 

分表分库的优点:
    分表分库的目的永远只有一个: 因为数据库数据量过大导致效率低下,通过把数据拆分提高数据访问性能
    

您可能感兴趣的文档:

--结束END--

本文标题: 简单理解分表分库及其缺点

本文链接: https://lsjlt.com/news/8295.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 简单理解分表分库及其缺点
    ...
    99+
    2014-09-12
    简单理解分表分库及其缺点
  • MySQL分区表的分区原理及优缺点
    这篇文章主要介绍“MySQL分区表的分区原理及优缺点”,在日常操作中,相信很多人在MySQL分区表的分区原理及优缺点问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL分...
    99+
    2024-04-02
  • Mycat分库分表的简单实践
       MySQL的使用场景中,读写分离只是方案中的一部分,想要扩展,势必会用到分库分表,可喜的是Mycat里已经做到了,今天花时间测试了一下,感觉还不错。 关于分库分...
    99+
    2024-04-02
  • MySQL数据表分区策略及优缺点分析
    目录为什么需要分区?分区的策略分区隐患为什么需要分区? 当面对巨大的数据表的时候,至少有一件事情是确定的,表太大了以至于每次查询的时候我们没法做全表扫描。而这个时候也没法使用索引,或者说索引意义不大,更不用说索引的...
    99+
    2022-05-29
    MySQL 数据表分区 MySQL 数据表分区优缺点 MySQL 数据表分区策略
  • oracle分区表的优缺点及用法
    本篇内容介绍了“oracle分区表的优缺点及用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!I 分区表的...
    99+
    2024-04-02
  • Mycat简单实现读写分离与分库分表
    Mycat数据库读写分离 环境: 客户端1.13 ↓ mycat中间件1.11 ↙ ...
    99+
    2024-04-02
  • springboot整合shardingjdbc实现分库分表最简单demo
    目录一、概览1.1 简介1.2 对比1.3 分库分表场景1.4 非分片表处理方法1.5 技术栈二、 项目整合2.1 pom.xml2.2 jpa/mybatis项目其他调整 spri...
    99+
    2024-04-02
  • Ajax原理及优缺点的示例分析
    这篇文章主要为大家展示了“Ajax原理及优缺点的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Ajax原理及优缺点的示例分析”这篇文章吧。1、ajax技...
    99+
    2024-04-02
  • 9款流行Web框架及其优缺点分别是什么
    本篇文章给大家分享的是有关9款流行Web框架及其优缺点分别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。对于 Web 开发人员来说,找到...
    99+
    2024-04-02
  • Mysql分库分表全面理解
    引言 微服务、分布式大行其道的当下,中、高级Java工程师面试题中高并发、大数据量、分库分表等已经成 了面试的高频词汇,这些知识不了解面试通过率不会太高。你可以不会用,但你不能不知道,就是这么 一种现状。技术名词大多晦涩难懂,不要死...
    99+
    2019-05-21
    Mysql分库分表全面理解
  • PHP PDO与其他数据库扩展对比:优缺点分析
    PHP提供了多种数据库扩展,如MySQLi、PostgreSQL、SQLite等,这些扩展都具有不同的特点和优缺点。本文将重点对比PDO和其他数据库扩展,分析PDO的优势和劣势,并通过演示代码展示PDO的使用方法。 PDO的优势主要体现...
    99+
    2024-02-13
    PHP PDO 数据库扩展 优缺点 使用方法
  • JavaScript中Promise的简单使用及其原理详解
    Promise是ES6最重要的特性之一,今天来系统且细致的研究一下Promise的用法以及原理。 按照我往常的理解,Promise是一个构造函数,有all、resolve、rejec...
    99+
    2023-03-23
    JavaScript Promise原理 JavaScript Promise使用 JavaScript Promise
  • 字符常量的分类及其特点详解
    字符常量的种类有哪些?详细解析字符常量的分类和特点,需要具体代码示例在计算机编程中,字符是一种基本数据类型。在编程过程中,我们需要使用字符来表示文字、数字、符号等各种信息。字符常量是指在程序中直接写入的字符值,而不是变量或表达式的结果。字符...
    99+
    2023-12-27
    且长度不限。
  • Ajax工作原理及优缺点的示例分析
    这篇文章将为大家详细讲解有关Ajax工作原理及优缺点的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.Ajax是什么?全称是 asynchronous javascript and xml,是已...
    99+
    2023-06-08
  • Java链表数据结构及其简单使用方法解析
    目录认识链表结构单向链表双向链表加深对链表结构的理解实现单向和双向链表的反转实现把链表中给定的值都删除小结认识链表结构 单向链表 单链表在内存中的表示: 可以看到,一个链表的节点包...
    99+
    2024-04-02
  • 【整理分享】常见PHP服务器环境及其特点
    PHP(Hypertext Preprocessor)是一种流行的服务器端编程语言,广泛用于Web开发。在创建PHP应用程序之前,需要配置一个PHP服务器环境,以确保您的代码能够正常运行。本文将介绍常见的PHP服务器环境和它们的特点。一、A...
    99+
    2023-05-14
    php 服务器
  • 支撑百万并发的数据库架构,不仅只需分库分表那么简单!
    原文: http://www.enmotech.com/web/detail/1/756/1.html 导读:本文来聊一下对于一个支撑日活百万用户的高并系统,其数据库架构应该如何...
    99+
    2024-04-02
  • TF-IDF理解及其Java实现的示例分析
    这篇文章将为大家详细讲解有关TF-IDF理解及其Java实现的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。TF-IDF前言前段时间,又具体看了自己以前整理的TF-IDF,这里把它发布在博客上,知...
    99+
    2023-05-30
    tf-idf算法 java
  • JavaScript Try...Catch 语句与其他错误处理机制比较:优缺点分析
    Try...Catch 语句 Try...Catch 语句是最常用的 JavaScript 错误处理机制。它允许程序员将代码放入 try 块中,并在 catch 块中捕获可能发生的错误。以下是一个示例: try { // 在此块中执...
    99+
    2024-02-08
    JavaScript Try...Catch Throw Error finally
  • Android View的事件分发机制简单理解
    View的事件分发机制1、前言2、基础2.1 MotionEvent类的基本用法。2.2事件分发的3个重要方法2.3分发事件的组件3.点击事件的...
    99+
    2022-06-06
    view 事件 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作