iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Mysql中如何实现水平分表
  • 464
分享到

Mysql中如何实现水平分表

2024-04-02 19:04:59 464人浏览 八月长安
摘要

本篇文章给大家分享的是有关Mysql中如何实现水平分表,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 1.  &

本篇文章给大家分享的是有关Mysql中如何实现水平分表,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。


 
1.       根据业务属性拆表
 
这种分表方式的算法大致是取模,hash,md5等。
 
用业务属性拆表,业务关系复杂的情况下,如果要根据其他条件查询,其他的条件都必须和这个属性关联起来,查询条件必须带有这个属性。
 
例子:
 
用户profile表根据用户ID取模进行水平拆分。
 
社区里有群组,群组里有应用,应用有各种类型。可以用群组ID,应用ID拆表。
 
问题:
 
根据某个条件查询时无法获取拆表的属性
 
1)         条件中含有分表的信息
 
比如用户在某网站下了订单,我们根据用户ID对订单进行了分表,这样用户可以方便地查询他所关联的订单。但用户投诉时,客服需要根据订单号查询订单,订单号中可以含有分表的信息,比如订单拆分成100张表,订单号中可以有两位用来表明该订单处于哪张表中
 
2)         用key-value store存储对应关联
 
原理是用key value store做索引
 
3)         数据冗余
 
需要关联的表可以进行数据冗余。避免了查询。
 
例子:
 
购买礼品。购买虚拟礼品时,我们根据了购买者的ID进行了拆表,同时订单号中也含有了分表信息。但是用户还可能根据被赠送方进行查询,这时我们可以在购买成功后为被赠送方冗余生成一条记录。
 
4)         缓存NoSQL
 
和数据冗余类似。例子中提到的群组应用的拆表例子,我们已经按照群组ID和应用类型进行了分表。但是当我要查询最近所有类型的应用时,就遇到困难了。我们需要把该群组的所有应用类型都查询一遍,而且还要再进行排序,分页等等。其实,可以用缓存的方式存储最近几百条应用。
 
2.       根据时间拆表
 
当表的关系比较复杂时,无法根据某个维度进行分表。但是有明显的时效性。
 
例子:
 
想必大家都用微薄,某人发的微薄,会被推送到千家万户。所以某条微薄是无法根据用户ID进行分表查询。而微薄是有很强的时效性的。一年前的默认的动态信息是不会再关心的。我们把微薄按时间分表,三个月一张表。而行级缓存(memcached)只存储了一个月。用户微薄收件箱(微薄ID列表)一般都是限长的。当缓存服务器重启或不命中时,需要查询mysql,mysql按时间分表,缓存不命中的情况下,大部分情况下都是查近三个月的微薄。所以近1年的微薄我们可以存储在物理资源比较好的服务器上。
 
3.       根据自增长ID拆表
 
这种分割法不是取模分,而是每张表存指定量的数据。如果数据量到了,就存放到新表中。这样可以完全控制每张表的数据量。关系非常简单并且有时效性的情况下可以用。
 
4.       数据迁移的方式
 
当一些很久之前的数据,很少再查询。比如员工工资表,我们可以只存今年的工资情况。而历史数据我们可以迁移到一张salary_old表中,保证数据不会丢失。但也可以用来查询。

以上就是Mysql中如何实现水平分表,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: Mysql中如何实现水平分表

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mysql中如何实现水平分表
    本篇文章给大家分享的是有关Mysql中如何实现水平分表,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 1.  &...
    99+
    2024-04-02
  • mysql如何实现水平分表
    mysql如何实现水平分表?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!Mysql表数据一般达到百万级别,查询效率会很低,...
    99+
    2024-04-02
  • 如何使用sharding-jdbc实现水平分库+水平分表
    这篇文章给大家分享的是有关如何使用sharding-jdbc实现水平分库+水平分表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。分库分表策略:将id为偶数的存入到库1中,奇数存入到库2中,在每个库中,再根据学生的...
    99+
    2023-06-22
  • Mysql中怎么实现水平分表与垂直分表
    本篇文章为大家展示了Mysql中怎么实现水平分表与垂直分表,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。水平分表:如上图所示:另外三张表表结构是一样的  ...
    99+
    2024-04-02
  • mysql中怎么实现水平分表和垂直分表
    本篇文章为大家展示了mysql中怎么实现水平分表和垂直分表,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 什么是数据库分区? 数据库分区是一种物理数据库设计技术...
    99+
    2024-04-02
  • mysql中怎么实现水平切分
    今天就跟大家聊聊有关mysql中怎么实现水平切分,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。方法一:使用MD5哈希  做法是对UID进行md5加密...
    99+
    2024-04-02
  • MySQL中怎么实现水平分区
    MySQL中怎么实现水平分区,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。表结构如下:查询。 SELECT ...
    99+
    2024-04-02
  • 使用sharding-jdbc实现水平分库+水平分表的示例代码
    前面的文章使用sharding-jdbc实现水平分表中详细记录了如何使用sharding-jdbc实现水平分表,即根据相应的策略,将一部分数据存入到表1中,一部分数据存入到表2中,...
    99+
    2024-04-02
  • MySQL如何使用Partition功能实现水平分区
    这篇文章主要为大家展示了“MySQL如何使用Partition功能实现水平分区”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL如何使用Partition功能实现水平分区”这篇文章吧。1 ...
    99+
    2023-06-21
  • MySQL数据库中怎么实现水平切分
    MySQL数据库中怎么实现水平切分,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 随着互联网应用的广泛普及,海量数据的存储和...
    99+
    2024-04-02
  • mysql数据水平拆分怎么实现
    MySQL的数据水平拆分可以通过以下几种方式来实现: 分区(Partitioning):MySQL支持分区表,可以将表的数据按照...
    99+
    2023-10-27
    mysql
  • mysql水平分表后怎么查询
    当使用水平分表技术后,查询语句的写法会发生一些变化。以下是一些常用的查询示例: 查询单个表: SELECT * FROM...
    99+
    2023-10-27
    mysql
  • 怎么使用sharding-jdbc实现水平分表
    这篇文章主要介绍“怎么使用sharding-jdbc实现水平分表”,在日常操作中,相信很多人在怎么使用sharding-jdbc实现水平分表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用shardin...
    99+
    2023-06-25
  • CSS3如何实现水平居中、垂直居中、水平垂直居中
    小编给大家分享一下CSS3如何实现水平居中、垂直居中、水平垂直居中,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!栗子1:从最简单的水平居中开始margin: 0 ...
    99+
    2023-06-08
  • CSS中如何实现水平对齐
    CSS中如何实现水平对齐,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。对齐块元素 块元素指的是占据全部可用宽度的元素,并且在其前后都会换行。 ...
    99+
    2024-04-02
  • mybatis水平分表实现动态表名的项目实例
    目录一、水平分表二、项目实现目录结构三、扩展一、水平分表 当业务需求的数据量过大时,一个表格存储数据会非常之多,故时长采用水平分表的方式来减少每张表的数据量即是提升查询数据库时的效率...
    99+
    2024-04-02
  • 如何实现MySQL底层优化:数据表的水平和垂直分割策略
    如何实现MySQL底层优化:数据表的水平和垂直分割策略,需要具体代码示例引言:在大型应用场景下,MySQL数据库经常面临着海量数据的存储和查询压力。为了解决这个问题,MySQL提供了数据表的分割策略,包括水平分割(Horizontal Pa...
    99+
    2023-11-08
    MySQL 数据表 底层优化
  • CSS3中fit-content如何实现水平居中
    这篇文章主要介绍了CSS3中fit-content如何实现水平居中,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 在不设置宽度,并...
    99+
    2024-04-02
  • Mysql实现水平分库的示例代码
    目录前言:讲解:第一种方式的水平分库:mysql水平分库数据查询合并MySQL水平分库插入数据前言: 平时开发中,可能会遇见数据量越来越大的情况,一般数据量过千万级别,就必须考虑分库分表的情况了,来减少io 服务器压力,...
    99+
    2023-06-08
    Mysql 水平分库
  • 如何使用MySQL的分布式架构实现水平扩展?
    如何使用MySQL的分布式架构实现水平扩展?随着互联网应用的高速发展,大量数据的存储和处理成为了系统设计的一个重要问题。在传统的单机MySQL中,随着数据量的增加,单机的存储和处理能力很容易成为瓶颈。为了解决这个问题,我们可以采用MySQL...
    99+
    2023-10-22
    MySQL 分布式架构 水平扩展
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作