广告
返回顶部
首页 > 资讯 > 数据库 >MySQL建表需求有哪些
  • 284
分享到

MySQL建表需求有哪些

2024-04-02 19:04:59 284人浏览 独家记忆
摘要

这篇文章主要介绍“Mysql建表需求有哪些”,在日常操作中,相信很多人在mysql建表需求有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql建表需求有哪些”的疑惑

这篇文章主要介绍“Mysql建表需求有哪些”,在日常操作中,相信很多人在mysql建表需求有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql建表需求有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

昨天收到一个业务同学的需求邮件,一般有些复杂的需求业务同学会发邮件告知我们,需要我们评估之后再做交付,我看了邮件之后,发现这个需求好像有点别扭,大体的意思是在中间件的环境中创建一张表,表结构如下:

CREATE TABLE `app_loading_info` (   `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',   `pid` bigint(20) NOT NULL DEFAULT '0' COMMENT ,   `appid` int(11) NOT NULL DEFAULT '0' COMMENT 'APPID',   `username` varchar(64) NOT NULL DEFAULT '' COMMENT '姓名',   `card` varchar(20) NOT NULL DEFAULT '' ,   `ai` varchar(40) NOT NULL DEFAULT '' ,   `state` int(11) NOT NULL DEFAULT '0' ,   `ctime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',   `mtime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',   PRIMARY KEY (`id`),   KEY `idx_pid` (`pid`),   KEY `idx_state` (`state`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

按照ID分片,基本逻辑如下:

每天会去筛选为完成处理的用户数据,重新处理,处理完成后会去修改用户的一个标志位,主要有几个步骤:

1)根据state状态提取state=0的数据(未完成处理数据)

2)程序中按照id为区间分批提取

3)提取完成后修改state为state=1,根据pid,state组合

看了这个初步的设计之后,我总是感觉哪里不对,于是找业务同学面对面沟通。

首先对于这个表的定义上,业务同学说是归属于状态表,也就意味着表中的每一个用户都有唯一的状态值对应,这个表中存储的数据量会越来越大。

其次,按照state状态字段去提取未完成处理的数据,这个目标环境是一套集群环境,集群中是按照id进行分片,但是查询条件按照state是有潜在问题的。

MySQL建表需求有哪些

比如业务层对于自增id的使用,在分片环境中可能是不唯一的,如上图所示,可能id=1最多会存在N条同样的数据(N为分片数),所以从业务需求上是不太能满足的。

另外根据state=0去查询数据,这个查询的复杂度较高,也就意味着state=0需要遍历所有的分片,每个分片中会通过state=0的索引条件过滤数据最后汇总起来,从使用上来说,这也是分库分表的一个潜在影响,不是很建议这种使用方式。

还有字段id的设计,按照状态表的使用方式,也是不合理的,在一些特殊的场景中我们会采用id+其他业务属性字段组合主键, 在这里这种场景显然不是。

如果去掉id字段采用主键的模式,好像就违背了业务初衷根据id进行区间提取的方式,细细品来这个需求是矛盾的。

如果按照最勉强的方式,建议是指定时间范围内处理,比如8点到9点之间处理,这个之外的时间范围就不要做类似心跳或者服务检测的处理了,对于业务侧来说,还是能够基本接受的,但是无论如何这不是一种最优解,而且对于索引的使用实在有悖于中间件服务使用的初衷。

经过进一步的沟通,我们再次挖掘需求,对于里面的表数据是如何处理的,业务同学说其实表中的数据如果时间长了之后是需要考虑数据清理的,所以按照这种模式,这个需求的就基本清晰了,和初始需求有比较大的差异。

到了这里需求的方向其实就有了大的转折,这个表按照目前的需求其实使用日志表的模式要更好一些,比如表中的数据是按照如下的列表情况存储,以日期表为维度进行存储。

MySQL建表需求有哪些

如果需要按照T+1的模式去处理未完成的数据,整个复杂度只针对某一天的表执行索引扫描,不会对其他的表产生关联影响,而如果按照日期为单表存储,整个事情的自由度就更大了,按照state或者是pid的维度进行查询,效果都是可以接受的。

所以最后经过讨论和评估,其实没有必要在中间件环境中进行该类业务的处理,相比而言,性价比也不高。而基于中间件的服务承接的是偏核心的业务,对于性能和负载的影响较为敏感,如果稀里糊涂就执行了,其实后面会带来一些其他的隐患。

通过这样一个看起来简单的需求的沟通和挖掘,最后产生了不同的解决方案,对于业务侧来说还是比较满意的,至少能够超出他们的基本需求期望实现,而且很多细节的工作也不需要更多的人工参与和后期讨论,大大减少了沟通的边际成本。

到此,关于“MySQL建表需求有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL建表需求有哪些

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

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

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

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

下载Word文档
猜你喜欢
  • MySQL建表需求有哪些
    这篇文章主要介绍“MySQL建表需求有哪些”,在日常操作中,相信很多人在MySQL建表需求有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL建表需求有哪些”的疑惑...
    99+
    2022-10-18
  • 长沙企业建站的需求有哪些
    长沙企业建站的需求包括以下几个方面:1. 建立企业形象:企业网站是企业展示形象和品牌的重要渠道之一,因此需要通过网站设计、内容和功能...
    99+
    2023-06-11
    长沙企业建站
  • MySQL建表规范有哪些
    本篇文章给大家分享的是有关MySQL建表规范有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、MySQL建表规范1.1、准入规范级别必须...
    99+
    2022-10-18
  • Fedora Core6系统有哪些需求
    这篇文章主要介绍“Fedora Core6系统有哪些需求”,在日常操作中,相信很多人在Fedora Core6系统有哪些需求问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Fedora Core6系统有哪些需求...
    99+
    2023-06-16
  • MySQL创建表时的条件有哪些
    这篇“MySQL创建表时的条件有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL创建表时的条件有哪些”文章吧。由...
    99+
    2023-07-02
  • MySQL常用的建表等SQL语句有哪些
    这篇文章将为大家详细讲解有关MySQL常用的建表等SQL语句有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。建表:DROP TABLE IF&nb...
    99+
    2022-10-18
  • 云服务器网络配置需求有哪些
    云服务器网络配置需求包括以下几个方面:1. IP地址管理:需要分配和管理云服务器的IP地址,包括公网IP和私网IP。2. 网络安全策...
    99+
    2023-08-09
    云服务器
  • MySQL数据库创建内存表有哪些限制
    这篇文章主要讲解了“MySQL数据库创建内存表有哪些限制”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL数据库创建内存表有哪些限制”吧!  当内存表...
    99+
    2022-10-18
  • mysql建表需要注意什么
    本篇文章和大家了解一下mysql建表需要注意什么。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。一、mysql各个名称库名、表名、字段名全部使用小写字母,用'_'下划线分割...
    99+
    2022-10-18
  • Golang表单请求的方法有哪些
    在Golang中,我们可以使用以下方法来处理表单请求:1. POST方法:在请求体中发送表单数据。可以使用`http.Post`或`...
    99+
    2023-08-19
    Golang
  • IDC机房对供电的需求有哪些特点
    这篇文章主要讲解了“IDC机房对供电的需求有哪些特点”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“IDC机房对供电的需求有哪些特点”吧!一、IDC机房对供电...
    99+
    2022-10-18
  • PostgreSQL中citus节点间的网络需求有哪些
    本篇内容介绍了“PostgreSQL中citus节点间的网络需求有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够...
    99+
    2022-10-18
  • 租用香港服务器能满足哪些建站需求
    租用香港服务器能满足的建站需求有:1、租用香港服务器不需要进行繁琐的备案流程;2、香港服务器解决了南北互通问题,国内所有用户都能正常访问;3、租用香港服务器能够满足国内外访问速度需求,适合国内外贸企业租用。具体内容如下:免备案租用国内服务器...
    99+
    2022-10-10
  • 企业建站需要的建站工具有哪些
    本篇内容主要讲解“企业建站需要的建站工具有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“企业建站需要的建站工具有哪些”吧!  建站市场已有数万家从业机构,是一个红海市场。对于很多企业来说,只...
    99+
    2023-06-10
  • MySQL表与表之间有哪些关系
    不知道大家之前对类似MySQL表与表之间有哪些关系的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完MySQL表与表之间有哪些关系你一定会有所收获的。  &...
    99+
    2022-10-18
  • mysql表分区有哪些类型
    mysql表分区有哪些类型?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、RANGE分区:根据给定连续区间的列值类型,将多行分配给分区。LIST区域:类似于R...
    99+
    2023-06-15
  • mysql锁表的原因有哪些
    这篇文章主要为大家展示了“mysql锁表的原因有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql锁表的原因有哪些”这篇文章吧。 ...
    99+
    2022-10-19
  • MySQL权限管理表有哪些
    MySQL的权限管理涉及多个表,以下是其中一些重要的表:1. user表:该表存储MySQL的用户信息,包括用户名、密码等。2. d...
    99+
    2023-09-27
    MySQL
  • mysql表分区有哪些好处
    本篇内容介绍了“mysql表分区有哪些好处”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说明单表可以存储更多的数据。分区表的数据更容易维护,...
    99+
    2023-06-20
  • 种软件开发职位的技能需求有哪些
    本篇内容主要讲解“种软件开发职位的技能需求有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“种软件开发职位的技能需求有哪些”吧!1.面向对象的程序设计语言是J...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作