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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

文章目录


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

背景

想要清晰的了解到使用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亿多。

项目实操

你可以随意创建一个表idcontent两个字段也可以按照我的表创建。
你可能遇见的问题比如主键自增不是按照自己想要可以看这一篇博客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)

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

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

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

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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: mysql数据库