一般来说,将TEXT字段,从一张操作频繁的表中拆分出去,成为一个Key-Value结构的独立表是 好处颇多的

其有利之处主要体现在下面三个方面:

PS:以下的讨论对象均基于Innodb引擎

1. 便于运维

由于目前Innodb-plugin对于大多数DDL都是会有TABLE-LOCK的。这也就意味着,一张表的DDL时间越长,业务的不可访问时间也就越长。

而决定一条DDL命令执行时长的两个关键因素就是:表行数,表物理文件大小。

TEXT字段的拆分独立,能够很有效的减小主表的物理文件大小。

由此不难看出一张对于业务十分重要或者访问非常频繁的表来说,这样的拆分是能够极大程度上降低运维成本的。

2. 便于缓存方案、数据产品的迁移实施

Key-大体积Value的数据类型对于MySQL来说本来就不是一个强项。

将TEXT拆分成K-V这样简单结构的表后,很方便就能通过改动较少的代码,实现数据产品的迁移。

无论是Mongo的 _id: value 、redis 的string 、还是memcached的key - value 都可以很轻松的导入数据。

此外,抛开缓存方案不说,光基于节省MySQL磁盘空间的考虑,也可以对于拆分后的独立表单独配置 row-format = compressed 的innodb压缩参数。减小物理文件体积,同时也增多了单个数据页能够存放的内容,一定程度上的提升了QPS。

3. 提高查询性能

上文提到了,拆分后添加压缩选项后,K-V表的QPS会较之前有提升。

除此之外,这种方案对于 Antelope文件格式的主表查询性能也会有提升(Barracuda文件格式则没有区别)。

由于Antelope的 Compact和Redundant文件格式,对于长字段都会将其最左的786个字节内容保存在Primary Key的数据页中。

Barracuda 的文件格式,对于TEXT字段,都会将其全部内容存放在off-page中,而Primary Key的数据页中只存放一个20字节的指针。

拆分对于前者可以节省786B的数据页空间,而后者只有20B的空间。这也就是为什么,前者的性能提升会更大

关于mybatis反向生成为什么有时候实体类会变成两个的更多相关文章

  1. 5.7 Liquibase:与具体数据库独立的追踪、管理和应用数据库Scheme变化的工具。-mybatis-generator将数据库表反向生成对应的实体类及基于mybatis的mapper接口和xml映射文件(类似代码生成器)

    一. liquibase 使用说明 功能概述:通过xml文件规范化维护数据库表结构及初始化数据. 1.配置不同环境下的数据库信息 (1)创建不同环境的数据库. (2)在resource/liquiba ...

  2. c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具

    c#实例化继承类,必须对被继承类的程序集做引用   0x00 问题 类型“Model.NewModel”在未被引用的程序集中定义.必须添加对程序集“Model, Version=1.0.0.0, Cu ...

  3. Myeclipse 10使用hibernate生成注解(annotation)实体类

    以MySQL数据库为例,请在数据库里面建好对应的表. 1.配置数据库链接 打开Myelipse Database Explorer视图 Window-->Open Perspective--&g ...

  4. mybatis 反向生成步骤

    Mybatis 反向生成. 反向生成的步骤: 反向生成的文件 打开文件夹显示 3.打开generator.xml文件 更改配置信息  路径一般情况下用英文  中文的路径有些会识别不了  或产生乱码 4 ...

  5. 使用T4模板生成MySql数据库实体类

    注:本文系作者原创,但可随意转载. 现在呆的公司使用的数据库几乎都是MySQL.编程方式DatabaseFirst.即先写数据库设计,表设计按照规范好的文档写进EXCEL里,然后用公司的宏,生成建表脚 ...

  6. SqlServer数据库表生成C# Model实体类SQL语句——补充

    在sql语句最前边加上  use[数据库名] 原链接:https://www.cnblogs.com/jhli/p/11552105.html   --[SQL骚操作]SqlServer数据库表生成C ...

  7. 关于Mybatis 反向生成后 查询结果全部为null 解决办法

    今天遇到了一个问题,就是mybatis通过反向生成工具 生成的pojo类(实体类) xml文件 以及Mapper之后查询时结果为null 我写的代码怎么看都没有错 就是没有结果 后来在排除错误的时候发 ...

  8. 小学生之使用Mybatis反向生成dao,entity,xml

    本小学生刚进公司的时候,就一顿装逼,不管别人问我啥我都会说:"会"!毕竟在公司吗,什么都要装,不要别人看出你的底细.不过有一天,听说用Mybatis可以反向生成dao(第一次听说) ...

  9. 使用MyBatis的Generator自动创建实体类和dao的接口与xml

    在实际的项目中其实建立数据库和设计数据库的时候特别重要,而等数据库设计完成之后,根据数据库创建实体类的工作就特别麻烦和繁琐了,不仅很麻烦,而且很浪费时间,不做又不行,这次就找到了一个简单的方法可以让m ...

随机推荐

  1. 熟悉DAO模式的用法

    今天主要是使用DAO模式. DAO模式通过对业务层提供数据抽象层接口,实现了以下目标: 1. 数据存储逻辑的分离 通过对数据访问逻辑进行抽象,为上层机构提供抽象化的数据访问接口.业务层无需关心具体的s ...

  2. spring AOP 之三:使用@AspectJ定义切入点

    @AspectJ相关文章 <spring AOP 之二:@AspectJ注解的3种配置> <spring AOP 之三:使用@AspectJ定义切入点> <spring ...

  3. Spring Aop 注解方式参数传递

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  4. js设计模式总结3

    1.模板方法模式 模板方法就是将多个模型抽象化归一,从中取出一个最基本的模板,当然这个模板可以作为实体对象也可以作为抽象对象,看你具体需求,其他模块只需要继承这个模块方法,也可以扩展这个方法. 举例子 ...

  5. django2.1---后台管理 admin 字段内容过长,省略号替代

    用django admin做后台的时候, 有些字段内容太长,像文章,长评论,新闻等可以限制显示长度,超出部分用...代替 1.在model.py中 def short_content(self): i ...

  6. .21-浅析webpack源码之事件流this-compilation

    上一节生成Compilation实例后,添加了一些属性,随后触发this-compilation事件流,如下: Compiler.prototype.newCompilation = (params) ...

  7. Docker基础-端口映射与容器互联

    1.端口映射实现访问容器 1.从外部访问容器应用 在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内部的网络应用和服务的. 当容器中运行一些网络应用,要让外部访问这些应用时, ...

  8. 在jQuery定义自己函数

    刚才有学习<在jQuery定义自己的扩展方法函数>http://www.cnblogs.com/insus/p/3415312.html .现在想练习一下定义自定义函数.经重构之后,还是发 ...

  9. Jquery插件的使用及制作插件

    常用插件 插件:jquery不可能包含所有的功能,我们可以通过插件扩展jquery的功能. jQuery有着丰富的插件,使用这些插件能给jQuery提供一些额外的功能. jquery.color.js ...

  10. leetcode937-java

    937. 重新排列日志文件 一个简单题让我做了将近一个小时去.. 你有一个日志数组 logs.每条日志都是以空格分隔的字串. 对于每条日志,其第一个字为字母数字标识符.然后,要么: 标识符后面的每个字 ...