mysql 存储 longtext 与 longblob数据类型的区别

最近项目中同时用到了存储大文本的两种情况,做一小结。

mysql数据类型参考连接:mysql数据类型

1.将文件存储到 mysql 中,存储为二进制数据。

mysql 的表字段类型选择了LONGBLOB。在java中生成的实体类对应的字段类型为 byte[ ];

CREATE TABLE `tmp_jmeter_case` (
  `ID` int(16) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `JMETER_CASE_NAME` varchar(100) DEFAULT NULL COMMENT 'jmeter用例名称',
  `FILE_NAME` varchar(100) DEFAULT NULL COMMENT '原文件名',
  `SYS_FILE_NAME` varchar(100) DEFAULT NULL COMMENT '系统文件名',
  `UPLOAD_TIME` timestamp NULL DEFAULT NULL COMMENT '上传时间',
  `UPLOAD_BY` varchar(10) DEFAULT NULL COMMENT '上传人',
  `UPDATE_TIME` timestamp NULL DEFAULT NULL COMMENT '修改时间',
  `UPDATE_BY` varchar(10) DEFAULT NULL COMMENT '修改人',
  `FILE_DATA` longblob COMMENT '用例数据',
  `YN` char(1) DEFAULT '1' COMMENT '是否删除(1-未删除,0-已删除)',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='jmeter测试用例表';
public class TmpJmeterCasePo implements Serializable {
    private Integer id;
    private String jmeterCaseName;
    private Date uploadTime;
    private String uploadBy;
    private byte[] fileData; //longblob 对应的java字段类型为 byte[]

选择这种方式落库的特点在于,想要查看存下来的数据需要先解析 二进制数据,不能直观看到文本内容。

2.将文件存储到 mysql 中,存储为文本数据。

CREATE TABLE `tmp_jmeter_exe_log` (
  `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `JMETER_CASE_ID` int(16) DEFAULT NULL COMMENT 'jmeter测试用例ID',
  `EXE_BY` varchar(10) DEFAULT NULL COMMENT '操作人',
  `EXE_TIME` timestamp NULL DEFAULT NULL COMMENT '操作时间',
  `IS_SUCCESS` char(1) DEFAULT NULL COMMENT '是否成功(0-失败,1-成功)',
  `EXE_TYPE` char(1) DEFAULT NULL COMMENT '执行方式(单次执行-1,批量执行-2,定时执行-3)',
  `REQUEST_FILE_NAME` varchar(100) DEFAULT NULL COMMENT 'jmeter配置文件名',
  `RESULT_FILE_NAME` varchar(100) DEFAULT NULL COMMENT '执行结果文件名',
  `RESULT_DATA` longtext COMMENT '执行结果数据',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=67 DEFAULT CHARSET=utf8 COMMENT='jmeter执行日志表';
public class TmpJmeterExeLogPo implements Serializable {
    private Integer id;
    private Integer jmeterCaseId;
    private String resultData; //longtext 对应的java字段类型为String

选择这种方式落库的特点在于,查看文本内容不需要解析,读出来即可用,或者直接从数据库表就能查看;

至于 longtext 与 longblob 两种数据类型性能上的优缺点对比以及其他区别需要再学习,也欢迎大家留言讨论。

你可能感兴趣的:(数据库,mysql)