MySQL 的 TEXT 类型竟然不是无限存储?!—— 某车企广告线索存储案例解析

news2024/10/12 22:29:39

在数字化时代的浪潮席卷下,越来越多的企业开始重视线上营销的重要性。主流平台如微信、抖音、快手、小红书、百度等,已然成为企业推广与获客的重要阵地。企业在这些平台投放广告后,每日都会产生大量的线索数据,作为一名后端开发人员,解析和存储这些数据是家常便饭。

最近,我发现工作多年的老员工,竟然对 MySQL 数据库中常用的 TEXT 类型存在认知偏差(说不定正在阅读的你也有类似的情况),所以,今天我想和大家深入探讨一下 TEXT 类型,以消除大家的认知误区。

一、从一个常见场景说起

假设某车企最近在抖音平台上投放了旗下热门车型的广告,每天需要定时从巨量引擎 API 拉取广告线索数据,其中包含一个名为 keywords 的属性,用于记录用户搜索过的关键词。

面对这个场景,我们需要设计数据库表来存储这些线索数据。相信大多数开发人员第一反应都会选择 VARCHAR 类型来存储 keywords 属性。毕竟关键词嘛,能有多长呢?然而,经验告诉我们,VARCHAR 类型的最大长度限制为 255 个字符,在该场景中会极大可能遇到长度溢出的问题。

二、TEXT 类型真的可以不限长度存储吗?

为了解决 VARCHAR 类型长度限制的问题,一些开发者会自然而然地选择 TEXT 类型来存储 keywords 属性。毕竟在大家的印象里,TEXT 类型似乎能够存储无限长度的文本数据。。

那么问题来了,TEXT类型,真的是不限长度存储的吗?答案是否定的。

MySQL 中的 TEXT 类型并非可以无限存储数据。实际上,TEXT 类型也分为四种:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。它们分别拥有不同的最大存储长度:

类型最大长度
TINYTEXT255字节
TEXT65535字节
MEDIUMTEXT16,777,215字节
LONGTEXT4,294,967,295字节

选择合适的字段类型至关重要

回到我们最初的场景中,如果选择使用 TEXT 类型存储 keywords 属性,我们需要根据实际情况选择合适的类型。

  • 如果用户搜索关键词长度相对较短,例如不超过 64KB,我们可以选择使用 TEXT 类型。
  • 如果用户搜索关键词长度可能超过 64KB,但不会超过 16MB,我们可以选择使用 MEDIUMTEXT 类型。
  • 如果用户搜索关键词长度可能超过 16MB,但不会超过 4GB,我们可以选择使用 LONGTEXT 类型。

在我们的案例中,最终我们选择了MEDIUMTEXT类型,解决了TEXT类型抛出Data too long for column keywords异常问题 ,同时也纠正了老员工认为 TEXT 类型可以无限存储的错误认知。

不过需要注意的是,在实际开发中,我们仍然需要根据具体业务需求选择合适的字段类型,并在设计数据库时预留足够的空间,以避免数据存储问题。同时,我们也要时刻关注数据库性能,避免因存储空间过大而影响查询效率

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2208934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【2021】知识图谱导论(陈华钧)——阅读思考与笔记

tips:其中所有【】表示的内容为博主本人想法,非作者观点,请注意辨别。 这是一本全面覆盖知识图谱多个方面的书籍。书中不仅详细介绍了知识图谱的表示、存储、获取、推理、融合、问答和分析等七大方面,还深入探讨了多模态知识图谱…

【Nginx系列】Nginx启动失败

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

[⑦5G NR]: PSS/SSS同步信号学习

在5G中,PSS(Primary Synchronization Signal) 主同步信号和SSS(Secondary Synchronization Signal)辅同步信号是用于物理层的信号,用于小区的搜索。 PSS 跟据协议38.211 7.4.2.2章节,PSS是3条长度为127的m序列,分别对应 N I D (…

空间解析几何4-空间中线段到圆的距离【附MATLAB代码】

目录 理论公式 matlab代码 理论公式 对于解一元4次方程,请详见我的博客 一元四次方程求解 -【附MATLAB代码】-CSDN博客文章浏览阅读1.4k次,点赞41次,收藏4次。最近在研究机器人的干涉(碰撞)检测,遇到了一…

义堂镇韦家巷村第十六届老人节暨孝善互助基金启动仪式成功举行

金秋十月爽,浓浓敬老情。10月11日晚,以“孝善韦家巷情暖重阳节”为主题的兰山区义堂镇韦家巷村第十六届老人节暨韦家巷村孝善互助基金启动仪式在韦家巷村文化广场盛大举行。 山东省民间文艺家协会副主席、临沂市民间文艺家协会主席、临沂市文联办公室主…

使用git页面如何用旧项目创建一个新项目出来并且保留所有分支内容和提交历史

使用git页面如何用旧项目创建一个新项目出来并且保留所有分支内容和提交历史 1、点击创建项目 2、点击导入项目

antd table合并复杂单元格、分组合并行、分组合并列、动态渲染列、嵌套表头

项目里遇到个需求,涉及到比较复杂的单元格合并 、嵌套表头、分组合并行、合并列等,并且数据列还是动态的,效果图如下: 可以分组设置【显示列】例如:当前组为【合同约定】,显示列为【合同节点】和【节点金额…

Milvus向量数据库管理工具[Attu]实践

Attu是一款专为Milvus向量数据库打造的开源数据库管理工具,提供了便捷的图形化界面,极大地简化了对Milvus数据库的操作与管理流程。阿里云Milvus集成了Attu,以便更加高效地管理数据库、集合(Collection)、索引&#xf…

protobufJavascrip编码解码演示

protobuf&Javascrip编码解码演示 start 写一下 protobuf 相关知识记录在 python 环境和 js 环境中如何处理 protobuf。 1. protobuf是什么? 1.1 介绍 Protocol Buffers(简称Protobuf) ,是Google出品的序列化框架,与开发语言无关&…

【Go】GO语言知识总结浅析

Go语言是一种现代化的编程语言,由Google于2007年设计并于2009年发布。它旨在使编程变得简单、高效,并且可以在多核处理器上轻松构建高性能应用。Go语言的编程思想、发展历史、版本特点、运行原理、数据类型、应用场景,以及在web开发、网络编程…

C语言内存分配

概要 C语言的内存存储是一个复杂但非常重要的主题,涉及到静态内存、动态内存、指针、堆栈等多种机制,明白了c语言的内存分配,可以帮助我们更好的编程和学习c语言。 一.内存分配的类型 在C/C中内存分为5个区,分别为栈区、堆区、…

上海大爷惹恼韭菜不敢现身了

国庆节前股市暴涨,立即掀起了一股“全民炒股”热浪,但天不遂人愿,有大量韭菜散户很快就被套牢。 这与满嘴跑火车的上海大爷网红“爱在深秋”,曾鼓吹“A股会涨到上万点”多少有些关联。10月9日股市暴跌后,就不见他人影…

MySQL进阶 - SQL优化

01 插入数据 【一】insert优化: ① 不要一行一行插入数据,直接批量插入多行数据(但一个insert语句不要插入超过一千条)。 insert into 表名 (字段列表) values (xx,xx...),(xx,xx...)...; ② 在进行插入操作时手动提交事务,避免频…

【代码】集合set

哈喽大家好,我是学霸小羊,今天来讲一讲集合(set)。 在数学上,集合长这样: 那今天就来讲一讲编程上的集合。 集合的定义:把一些元素按照某些规律放在一起,就形成了一个集合。比如说…

PostgreSQL的学习心得和知识总结(一百五十四)|高级数据结构和算法之快速排序算法quicksort的实现及使用

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…

鸿蒙UI系统组件16——富文本编辑器(RichEditor)

如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下方名片,关注公众号,公众号更新更快,同时也有更多学习资料和技术讨论群。 RichEditor是支持图文混排和文本交互式编辑的组件,通常用于响应用户的对…

豆包MarsCode 合伙人计划限时招募中,推广最高赢万元现金!

豆包MarsCode 合伙人计划正式上线啦!作为官方推出的推广激励项目,豆包MarsCode 编程助手号召和鼓励所有用户向我们推荐新用户。 现在正式开启首轮合伙人招募,诚邀各位有意愿推广普及 AI 编程产品的伙伴成为我们的合伙人,全国限量…

【Linux】操作系统基础

1.冯诺依曼体系结构介绍 冯诺依曼体系结构如下: 在上图中「输⼊设备」和「输出设备」⼀般被称为计算机的外设,⽽「存储器」在冯 诺依曼体系结构中表示「内存」 输⼊设备⼀般包括:⽹卡、磁盘、键盘、触摸屏等 输出设备⼀般包括:…

用 logfire 提高应用的可观测性

Logfire是由 Pydantic 团队打造的平台, 还有供 app 使用的 library, 我们经常提到对应用要做 LMT(Log, Metrics, Trace), Logfire 可以用来收集、存储、分析和可视化日志数据和应用性能指标。通过集成日志和度量,Logfire 提供了一个统一的界面来管理应用程序和系统的…

时间序列预测(一)——线性回归(linear regression)

目录 一、原理与目的 1、线性回归基于两个的假设: 2、线性回归的优缺点: 3、线性回归的主要目的是: 二、损失函数(loss function) 1、平方误差损失函数(忽略了噪声误差) 2、均方误差损失函数 三、随…