我们为什么在MySQL中几乎不使用分区表

2024-02-26 19:10

本文主要是介绍我们为什么在MySQL中几乎不使用分区表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是学习笔记的第 2330篇文章

  在Oracle中,使用分区表是一种很自然的事情,数据库容量基本都是500G起,大小在5T以上都是很常见的。 

  但是在MySQL的使用中,我们几乎不使用分区表,今天有同学在群里一起沟通,我就按照我的理解做了梳理。整体来说从功能上来说,Oracle有的大部分功能在MySQL分区表中基本存在,包括一些分区的细粒度管理。

所以如果单纯从功能入手,确实难以找到很直接的理由来拒绝分区表。

我觉得主要是使用模式的差异,我们不使用的主要原因是避免单库存储过大,而且分区表变更相对会比较麻烦,在MySQL侧,我们的目标是让数据库更小巧轻量一些,可能更偏TP一些,我们目前是排除了分区表的设计,而且也明确写进了开发规范,如果按照数据类型来说,状态表,流水表和配置表,这三种类型中也就只有流水日志表的数据都是建议使用周期表的形式进行存储,方便随时扩展,表结构变更也方便T+1的变更模式

在这个基础上,可以把这个问题转化为,是使用分区表还是单表来存储数据?这个问题我们调研过,目前来看,查询复杂度的一些变更业务基本都能够接受,而且风险覆盖度要小一些(程序侧也不能完全保证SQL一定好使不走全表扫描)目前我们实现周期表(日表,月表,周表,年表,季表)中的日表和月表的自动扩展,已经接管了300多个周期表的自动管理。

此外,数据流转体系中,分区表的模式对于数仓体系也不够友好,如果ETL直接抽数据,基本需要在过滤条件的部分做一些取舍,影响还是相对很大的。

    

  

   问题1:为啥Oracle分区表用的很常见  MySQL却不推荐呢  挺疑问的。

因为是两种不同的数据库,拿MySQL当Oracle用,会有很多不如意的地方。Oracle单库过T很正常,TP+AP很强,原生的HTAP的支持,MySQL的AP相对要弱很多,单库过T是不建议,我们的容量规划目前是按照300G的容量规格设计的,基本上从设计层面能够做到冷热数据分离和规避数据过度增长。

问题2:日表和月表什么关系呢?月表是日表的联合查询还是数据镜像?

日表和月表目前没有直接的关联,就是按照业务维度包括数据量进行综合评估选定的,如果有的业务数据量不大,范围查询多一些,就推荐月表,如果数据量抖动大,数据量大,而且还会有变更操作,一般建议是日表,我们日表和月表的比例差不多是20:1

问题3:这些都是前期系统架构设计时规划好的?有没有后期改造的案例?如何去推动研发难度会不会很大

这个我认为不算前期规划,算是迭代改进,我们提供的一个福利就是改造成日表后,日表的扩展和数据清理都是我们来干了,业务很happy,而在以前,可能还会有手工维护Excel列表或者一些元数据配置的模式来记录不同业务的表的扩展情况,有种手工记账的感觉,如果DBA或者业务同学忘记了,基本碰上就是一次数据故障。

所以我们写了自动管理的服务,包括单机和集群中间件的周期表管理,基本上我们就不用手工干预了。

对于业务来说很大的痛点就是表如何扩展(有时候忘记了后果挺严重的),数据清理(如果不拆表,按照delete模式很痛苦)和表变更(T+1的模式对于业务来说是可用接受的,对于DBA完全可控)

小结:

我们不使用分区表,一方面是业务所需,另一方面我们提供了周期表解决了业务痛点,所以也算是一拍即合的一种策略。

各大平台都可以找到我

  • 微信公众号:杨建荣的学习笔记

  • Github:@jeanron100

  • CSDN:@jeanron100

  • 知乎:@jeanron100

  • 头条号:@杨建荣的学习笔记

  • 网易号:@杨建荣的数据库笔记

  • 大鱼号:@杨建荣的数据库笔记

  • 腾讯云+社区:@杨建荣的学习笔记

近期热文:

春节真是体会“财务自由”的最佳心理期

新年大吉 总结了如下的感想

《大江大河2》最触动我的一段经典对话

MySQL 8.0给开发方向带来的一些困扰

迁移到MySQL的业务架构演进实战

MySQL业务双活的初步设计方案

如何优化MySQL千万级大表,我写了6000字的解读

一道经典的MySQL面试题,答案出现三次反转

小白学MySQL要多久?我整理了10多个问题的答案

转载热文:

2020年度20多款主流数据库重大更新及技术要点回顾

工行“去O”数据库选型与分布式架构设计

MySQL 实战笔记 第01期:MySQL 角色管理

MGR用哪个版本?5.7 vs 8.0

SQLcl这个可爱的小工具,来了解一下呀~

CPU占用又爆了?MySQL到底在干什么

这个MySQL优化原理剖析,比照X光还清楚

自己动手写SQL执行引擎

最受欢迎的微服务框架概览

程序员,保住你的钱袋子!

QQ群号:763628645

QQ群二维码如下, 添加请注明:姓名+地区+职位,否则不予通过

在看,让更多人看到

这篇关于我们为什么在MySQL中几乎不使用分区表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/749864

相关文章

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展