探究数据库mysql的vachar、test、longtext存储极限


如果感觉有点意思点个关注,一键三连吧!蟹蟹!!!

背景

想要清晰的了解到,使用longtext类型,保存富文本数据到mysql数据库是否够用,又是如何够用的。网上搜了很久没有想要的答案,自己尝试了一下,虽然没有到极限,但是完全够用。
longtest类型,对应java和mybatis框架类型为string。

介绍

    mysql5.0版本以前,longtext可以储存127个文字。5.0以上版本longtext可以储存32767个文字,utf8编码下最多支持10921个字符(不为空)。
    mysql5.0版本以前,longtext最大能定义255字节长度。5.0以上版本支持65535字节长度,utf8编码下最多支持21843个字符(不为空)。
    因为一个文字占用两个字节,因此mysql5.0版本以前,longtext可以储存127个文字。5.0以上版本longtext可以储存32767个文字,utf8编码下最多支持10921个字符(不为空)。
扩展资料:
longtext使用比固定长度类型(text)占用更大的存储空间(除了使用ROW_FORMAT=FIXED创建的MyISAM表)。节约空间,所以性能会有帮助。在更新的时候会产生额外的工作。
5.0以上版本,longtext取值或设置值都会保存字符串末尾的空格,4.1之前的版本longtext都会把字符串末尾的空格删除掉。最大长度远大于平均长度,很少发生更新的时候适合使用longtext,因为碎片更少了。
简单了解下
varchar为变长字节,所占空间为字符串实际长度加1,最长为65535个字节
而longtext也是变长字符存储,只保存字符数据,最长为4294967295字节,比较适合存储大内容
换句话来说(理想状态下):

4294967295除以3得到,1431655765个汉字,14亿多。

项目实操

你可以随意创建一个表,id,content两个字段,也可以按照我的表创建。
你可能遇见的问题,比如主键自增不是按照自己想要,可以看这一篇博客:idea中mybatisPlus自增主键失效
创建表

DROP TABLE IF EXISTS `duck_message`;
CREATE TABLE `duck_message`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `message_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '标题',
  `message_content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '内容',
  `message_images` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片地址',
  `status` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '状态(L-留言榜,P-排行榜,T-推荐榜)',
  `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
  `creation_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `user_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户id',
  `type_push` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否上榜(Y-上榜,N-不上榜)',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '鸭友榜表' ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

注意:longtext不必设置长度
在这里插入图片描述

代码很简单,就是个插入语句而已:创建一个Springboot项目,使用mybatis-plus自动生成。然后插入表数据即可。
如何自动生成,可以看下这篇博客:mybatisPlus自动生成代码
我使用富文本进行调用的,可以参考博客:summernote富文本使用。也可以使用apipost进行测试,下面有介绍。
完整代码

getInputValue() {
      var that = this;
      // 获取summernote输入的值的方法 $('#summernote2').summernote('code')
      that.contant = $("#summernote2").summernote("code");
      console.log(that.contant);
      that.axios({
        url: "http://localhost:8081/duckMessage/text",
        method: "POST",
        data: that.contant,
        headers: {
          // "Content-Type": "application/x-www-form-urlencoded",
          "Content-Type": "text/plain",
        },
        success: function (data) {
          console.log("返回的数据" + data.data);
        },
      });
    },
//Controller层
//测试,可以插入最大插入数据
@PostMapping("/text")
    public Result textInsert(@RequestBody String contant){
    System.out.println("值:"+contant);
    int num= duckMessageService.textInsert(contant);
    return new Result("200",num,"成功");
}
//serveceimp层
@Override
    public int textInsert(String contant) {
    DuckMessage duckMessage = new DuckMessage().setMessageContent(contant).setCreationTime(new Date());
	int num = duckMessageMapper.insert(duckMessage);
	return num;
}

接近78万个字
在这里插入图片描述
我是用的Summernote富文本进行尝试调用的,文件显示2.3M(也可以直接使用Apipost调用)
在这里插入图片描述

后台打印的日志
在这里插入图片描述
表数据

在这里插入图片描述

我准备再翻一番,但是复制粘贴,显示速度太慢。不再尝试。
在这里插入图片描述

如果想要自己尝试,使用Apipost工具,调用接口测试即可

官方下载地址:https://www.apipost.cn/
注意:必须下载客户端才能在本地调试,网页端只支持非本地接口
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

表数据
在这里插入图片描述

mysql类型

数字类型
在这里插入图片描述

辨別Null与Not Null :Null为允许储存空值(Null)

数值
在这里插入图片描述日期时间
在这里插入图片描述

如果感觉有用点个关注,一键三连吧!蟹蟹!!!
在这里插入图片描述

各位看官》创作不易,点个赞!!!
诸君共勉:万事开头难,只愿肯放弃。

免责声明:本文章仅用于学习参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值