什么情况需要考虑 mysql 分表

这篇具有很好参考价值的文章主要介绍了什么情况需要考虑 mysql 分表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近看到公司的其中一个数据库用户表每个月都要几百万的新用户数据增加,目前单表已经是两千多万了。所以找了 DBA 讨论,发现以前学的知识,以及网上的一些资料其实说的并不是很正确,比如 mysql 单表不建议超过一千万,我司 DBA 数据规范建议是单表最多不超过五千万。DBA 认为单看数据表的行数来决定分不分表是不正确。结合自己的知识和 DBA 的建议,记录一下需要分表的场景:

1. 表字段多,部分字段不经常用,使用 show index from tablename 查看索引状态

2. 表数据占物理空间大

3. 数据库服务器性能问题,使用 show processlist 查看当前连接状态,是否有慢 sql

4. 业务查询较多,查询慢,使用 explain 查询 sql 是否使用索引

5. 业务受到影响,不满足日常需求

分表方式有水平分表,垂直分表。常用的水平分表都是 RANGE 、一致性 HASH 算法 、取模几种方式。分表之后,业务代码、架构也需要调整,比如引入中间件,否则分页,排序,事务都无法处理。

分享一下我 2020 年开发的一个支付系统 MySQL 按月水平分表的例子,当时每天有 10 万笔订单,单表已经 3000 多万的数据,常用查询字段订单号、订单状态、创建时间、商户id、字段已经有添加索引了,查询性能比较差,一个查询要2-3秒。

以下是技术升级改造处理过程:

1. 原有表名为 orders,批量创建一年的分表,按订单创建时间的月份创建,表名为 orders_202001 orders_202002 以此类推,订单流水表也是类似。

2. 创建订单时按获取创建时间加表名,得到分表名称写入数据,创建时间也作为订单号的前缀,根据订单号查询时也能获取到分表名称

3. 将管理后台涉及查询的接口继续改造,添加限制条件,最多只能查询 2 个月时间内的订单,超出的分多次查询,调研了金融类项目都有查询时间限制,可能也是做了水平分表,避免分表之后需要查询所有数据表,查询性能比没有分表更差,查询订单数据时,我们可以使用 UNION ALL 操作符将不同分表的数据合并在一起。

分表之后的业务价值有两点:

1. 查询性能提升、用户体验更佳。

2. 节省服务器成本,如果没有分表,数据库服务器升级配置也可以满足,但是成本更高了。

 项目地址

源码资料!文章来源地址https://www.toymoban.com/news/detail-422284.html

到了这里,关于什么情况需要考虑 mysql 分表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 域名一定需要备案吗?什么情况下不用备案?

    1.买的域名用来做网站:如果使用国内主机或服务器建站,根据政策要求域名必须有对应的备案号;如果使用CSDN香港主机或海外主机,可以免备案。 2.买的域名用来作邮箱,无论使用国内或国外空间都不需要备案。 工信部要求网站域名备案目的在于,防止在网上从事非法的网

    2024年02月05日
    浏览(38)
  • MySQL什么时候要分表,什么时候要分库

    在MySQL中,是否需要对表或数据库进行分区的决策取决于多种因素,如数据大小、性能要求、可扩展性需求和底层硬件基础设施。对于何时分区表或数据库,没有固定的阈值,因为它取决于具体的应用程序和工作负载。 当表的大小增长到影响查询性能、维护任务或存储需求时

    2024年02月08日
    浏览(46)
  • 炒股加杠杆亏损了需要还吗?会面临什么情况?

    炒股加杠杆亏损了需要还吗?需要的!在正常情况下,投资者借入的资金需要按照合约约定的利率和期限进行还款。   当炒股加杠杆亏损时,通常会面临如下两种情况: 1. 定期还款方式:在一些加杠杆交易合约中,按照约定的期限和条件进行定期还款。这意味着必须按时偿

    2024年02月01日
    浏览(33)
  • 用例拆分情况考虑方案

    每个图商(GD、BD、自建)拆分成单独的类 把参数化的几个图商类别拆分成对应的图商类,在每个类中不进行参数化设置,直接在构造函数处指定唯一的图商类型。 最后我们再组成一个测试套件,把各个模块、类中的高德部分case统一执行 首先原有结构是 一个testcase 在 4个类

    2024年02月14日
    浏览(37)
  • mysql什么情况下会锁表

    在MySQL中,当对表进行写操作(如INSERT、UPDATE、DELETE)时,需要对相关的数据行加锁以确保数据的一致性和完整性。在某些情况下,MySQL需要锁定整个表而不是部分行,这种情况下会锁定整个表,导致其他会话不能访问表。 1.使用ALTER TABLE、TRUNCATE TABLE等语句对表进行结构性修

    2024年02月12日
    浏览(39)
  • Python 中的 multiprocessing 模块和 threading 模块有什么区别?什么情况下应该使用哪一个?解释 Python 中的 __del__ 方法的作用。有什么需要注意的地方解释

    multiprocessing 模块和 threading 模块都是用于在 Python 中进行并发编程的工具,但它们有一些关键的区别。以下是它们之间的比较: 区别: 并行性 vs 并发性: multiprocessing 模块用于创建独立的进程,每个进程都有自己的 Python 解释器和全局解释器锁(GIL)。因此,multiprocessing 允许

    2024年02月22日
    浏览(44)
  • 小米妙享中心加载失败电脑能发现手机,手机能发现电脑,无法打开镜像画面,无法打开最近文件,能够看到但是无法打开,无法流转应用,无法共享屏幕

            本人是小米笔记本PRO14锐龙版WIN11系统,手机是小米14pro,电脑刚买来的时候都是可以正常在电脑投屏的,最近投屏总是失败报错,查了很久才解决这个问题可以正常投屏,所以发出来跟大家分享一下,以作参考。         首先要保证电脑上安装了小米妙享的最新

    2024年02月04日
    浏览(167)
  • jQuery 在图片和文字中插入内容(多种情况考虑)

    昨天接到一个新的需要,在后台文章编辑器中,每一个文章的正文前面,可以单独添加一个电头字段,但是如果在富文本编辑器中最上面就添加图片的话,图片就会把电头和正文中的文字给隔开。需要做的是获取到电头字段,然后在正文中的文字部分的最前面插入电头字段。

    2023年04月25日
    浏览(35)
  • MySQL 数据表在什么情况下容易损坏

    服务器突然断电导致数据文件损坏。强制关机,没有先关闭 MySQL 服务等。 以下原因是导致 mysql 表毁坏的常见原因: 1、 服务器突然断电导致数据文件损坏。 2、 强制关机,没有先关闭 mysql 服务。 3、 mysqld 进程在写表时被杀掉。 4、 使用 myisamchk 的同时,mysqld 也在操作表。

    2024年02月14日
    浏览(45)
  • 小米妙享中心非小米电脑加载失败电脑能发现手机,手机能发现电脑,无法打开镜像画面,无法打开最近文件,能够看到但是无法打开,无法流转应用,无法共享屏幕

    我这里使用的是ThinkPad T480电脑,该电脑已经是5年左右的老机器了,但是依然能够成功使用小米妙享,只是可能比起原装的功能没有那么全,至于原装是什么样,我也没有体会过,不做过多说明。安装方法很简单,下载小米妙享pc版.exe和机型破解库wtsapi32.dll,将这两个东西放

    2024年02月16日
    浏览(198)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包