首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL Longtext字段优化记录(一)

大家好,又见面了,我是你们朋友全栈君。...工作中遇到一个查询很慢情况,环境如下: 开发语言:JAVA 数据库:MySQL 数据量:1600~1800 问题:查询200条时就很慢,是慢在IO上: 如果是查全部(一千六百多条),就更慢了,几乎四十秒还没有返回...: 原因:数据表中有个longtext字段优化思路:数据库中不存longtext字段,新增blob字段,将文本在后端压缩为bytep[]存到blob二进制字段中,查询时返回。...数据流图: blob字段: 后端使用Zip压缩算法,使用java.util.zip包下DeflaterOutputStream和InflaterOutputStream,压缩文本再保存。...注:这种方式就是不存原文本内容,弊端就是无法做对文本搜索功能,如果要求要对文本做搜索,或者保留为文档到ES中,建议把content字段拆出来一张表和主表关联,也是保存和查询需要处理一下。

3.1K20

MySQL实战系列:大字段如何优化

MySQL实战系列:大字段如何优化 # 背景 线上发现一张表,1亿数据量,物理大小尽然惊人大,1.2T 最终发现,原来有很多字段,10个VARCHAR,1个文本 这么大表,会给运维带来很大痛苦...测试后发现,65535并不是最大限制,最大限制是65532 [MySQL 5.6.27] * char最大限制是: N<=255 root:test> create table test( a...: N<=65535 , 注意官方文档说是N是字节,并且说是一行所有字段总和小于65535,而varchar(N)中N表示是字符 root:test> create table test_...假设创建了一张表,里面有一个字段是一个varchar(30000),innoDB页才16384个字节,如何存储下呢?...Bitmap: 1 Uncompressed BLOB Page: 3 File Space Header: 1 B-tree Node: 1 File Segment inode: 1 如何对大字段进行优化

5.2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL设置字段默认值为当前系统时间

    问题产生: 当我们在对某个字段进行设置时间默认值,该默认值必须是的当前记录插入时间,那么就将当前系统时间作为该记录创建时间。...应用场景: 1、在数据表中,要记录每条数据是什么时候创建,应该由数据库获取当前时间自动记录创建时间。...2、在数据库中,要记录每条数据是什么时候修改,应该而由数据数据库获取当前时间自动记录修改时间。 实际开发: 记录用户注册时间、记录用户最后登录时间、记录用户注销时间等。...实现步骤:(如果使用数据库远程工具则直接设置,更简单!!!) 首先将数据表中字段数据类型设置为TIMESTAMP 将该字段默认值设置为CURRENT_TIMESTAMP

    9.2K100

    mysql longtext_MySql中LongText类型大字段查询优化

    在本次项目表结构中,有一个longtext字段,用于存储长文本,仅万条数据,InnoDB存储文件就达G级,由于是一个小项目,受限于服务器与运维人员水平,不适合使用hdfs,MongoDB等拓展技术栈来解决这种问题...,因此直接对mysql存储进行优化,快速解决,利于维护。...涉及mysql基础知识 一、innodb存储引擎处理方式 1.mysql在操作数据时候,以page为单位 不管是更新,插入,删除一行数据,都需要将那行数据所在page读到内存中,然后在进行操作,这样就存在一个命中率问题...,这就决定了innodb在存储一行数据时候不能够超过8k,但事实上应该更小,有一些InnoDB内部数据结构要存储以及预留操作空间, 3.blob,text大字段 innodb只会存放前768字节在数据页中...,而剩余数据则会存储在溢出段中(发生溢出情况时候适用),最大768字节作用是便于创建前缀索引/prefix index,其余更多内容存储在额外page里,哪怕只是多了一个字节。

    3.9K20

    MySQL字段类型_mysql数据库字段类型

    大家好,又见面了,我是你们朋友全栈君。 前言: 要了解一个数据库,我们必须了解其支持数据类型。MySQL 支持大量字段类型,其中常用也有很多。...DECIMAL 从 MySQL 5.1 引入,列声明语法是 DECIMAL(M,D) 。...2.字符串类型 字符串类型也经常用到,常用几个类型如下表: 其中 char 和 varchar 是最常用到。char 类型是定长MySQL 总是根据定义字符串长度分配足够空间。...3.日期时间类型 MySQL支持日期和时间类型有 YEAR 、TIME 、DATE 、DATETIME 、TIMESTAMP,几种类型比较如下: 涉及到日期和时间字段类型选择时,根据存储需求选择合适类型即可...总结: 本篇文章主要介绍了 MySQL 中常用字段类型,平时用到字段类型基本都在这里了,以一张思维导图总结如下: 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    19.5K10

    mysql密码字段类型_MySQL 字段类型

    万一我们需要对一个字段存储一个超出许可范围数字,MySQL 会根据允许范围最接近它一端截短后再进行存储。还有一个比较特别的地方是,MySQL 会在不合规定值插入表前自动修改为 0。...unsigned 和 zerofill UNSIGNED 修饰符规定字段只保存正值,即无符号,而mysql字段默认是有符号。...使用这个修饰符可以阻止 MySQL 数据库存储负值,如果某列设置为zerofill,那它自动就unsigned。...在处理相互排拆数据时容易让人理解,比如人类性别。ENUM 类型字段可以从集合中取得一个值或使用 null 值,除此之外输入将会使 MySQL 在这个字段中插入一个空字符串。...,当日热门,生日多少天等等逻辑 不要使用null 为什么这么说呢,因为MYSQL对NULL字段索引优化不佳,增加更多计算难度,同时在保存与处理NULL类形时,也会做更多工作,所以从效率上来说,不建议用过多

    14.4K20

    【Android NDK 开发】JNI 方法解析 ( CC++ 设置 Java 对象字段 | 查找字段 | 设置字段 )

    设置 Java 对象 属性 流程 ---- 设置 Java 对象字段流程 : ① 获取属性 ID : 调用 jfieldID GetFieldID(jclass clazz, const char* name...函数原型 : 通过 Java 对象 , 属性 ID , 和 Java 数据类型属性参数 , 设置对应 Java 对象属性 ; 返回值 : void 参数 : jobject obj : 要设置属性...设置方法汇总 : 设置 int 类型属性 , 调用 void SetIntField(jobject obj, jfieldID fieldID, jint value) 方法 ; 设置 boolean...引用类型 , 共 9 中类型应该调用方法 ; 注意 : 所有设置类型 , 都是 Java 数据类型 , 如 jobject , jint , jboolean 类型 ; struct _JNIEnv...设置 Student age 属性值 90 env->SetIntField(student, age_field_id, 90); ... }

    93220

    MySQLjson字段

    // MySQLjson字段 // MySQL5.7.8中引入了json字段,这种类型字段使用频率比较低,但是在实际操作中,有些业务仍然在用,我们以此为例,介绍下json字段操作方法...,info是json字段,插入了三条数据,如上: mysql> select * from test1 where json_extract(info,"$.age")>=30; +------+---...其中: 1、$符号代表是json根目录, 2、我们使用$.age相当于取出来了json中age字段, 3、当然,在函数最前面,应该写上字段名字info 下面来看json中常用函数: a、json_valid...判断是否是json字段,如果是,返回1,如果不是,返回0 mysql> select json_valid(2); +---------------+ | json_valid(2) | +------...,如果传入了字符串2,那么,返回结果是1 b、json_keys传回执行json字段最上一层key值 mysql> select json_keys('{"name":"yeyz","score":100

    9K20

    MySQL修改表字段

    MySQL修改表字段 MySQL 修改表字段方法有两种: ALTER TABLE MODIFY COLUMN。...其语法如下: ALTER TABLE 表名 MODIFY COLUMN 字段字段类型; 其中,表名 表示要修改表名,字段名 表示要修改字段名,字段类型 表示修改后字段类型。...其语法如下: ALTER TABLE 表名 MODIFY COLUMN 字段字段类型 [属性]; 其中,表名 表示要修改表名,字段名 表示要修改字段名,字段类型 表示修改后字段类型,属性 表示修改后字段属性...例如,将表 users 中字段 age 数据类型修改为 INT,并设置默认值为 0,可以使用以下 SQL 语句: ALTER TABLE users MODIFY COLUMN age INT DEFAULT...0; 需要注意是,如果修改表字段数据类型或长度,可能会造成数据丢失或者修改失败。

    5.4K10

    Mysql Explain主要字段

    当联合主键或唯一索引所有字段跟常量值比较时,join类型为const。其他数据库也叫做唯一索引扫描 3、eq_ref 多表join时,对于来自前面表每一行,在当前表中只能找到一行。...这可能是除了system和const之外最好类型。 当主键或唯一非NULL索引所有字段都被用作join联接时会使用此类型。 eq_r ef可用于使用’='操作符作比较索引列。...要注意,全文索引优先级很高,若全文索引和普通索引同时存在时,mysql不管代价,优先选择使用全文索引 6、ref_or_null 跟ref类型类似,只是增加了null值比较。实际用不多。...Extra 字段显示, 常见有以下几种内容: distinct:在select部分使用了distinc关键字 Using filesort:当 Extra 中有 Using filesort..., 查询效率不高, 建议优化.

    1.4K20

    MySQL 字段操作

    看完本文,你能够优雅地设计一张有意义表; 一、字段操作 1.添加字段 (add) alter table add 字段名 数据类型; desc ; 2.修改字段数据类型 (modify...,用于保证数据完整性,从而符合该字段达到我们期望效果,如果插入数据不满足约束要求,数据库管理系统就会拒绝执行SQL 操作 常见约束有 约束条件 含义 NOT NULL 约束字段值不能为空 DEFAULT...约束字段默认值 UNIQUE KEY 约束字段值唯一 PRIMARY KEY 约束字段为主键,唯一标识 AUTO_INCREMENT 字段值自动增加 1....为字段设置默认值 #创建表时候,添加默认约束 CREATE TABLE (字段名 数据类型 default '默认值'); #删除默认约束 alter table alter 字段名...主键约束(primary key) 主键约束字段不能为空,不能重复 #创建表时候,添加主键; CREATE TABLE (字段名 数据类型 PRIMARY KEY); 复合主键: 由多个字段组成主键

    9.9K30

    文章自定义字段和主题设置字段

    在 Typecho 官方主题开发文档中,很少有关于文章自定义字段和主题设置相关开发说明。我也是查看了一些开源主题代码才搞懂自定义字段和主题设置开发。...这里就简单写一下文章自定义字段和主题设置定义和调用。...文章自定义字段 文章自定义字段定义后会显示在文章编辑界面的编辑框下方,用户可以使用定义好选项来设置每篇文章偏好,在输出文章时候可以调用用户设置,实现一些个性化功能。...: 主题设置字段 主题设置字段定义后会显示在主题外观设置页,用户可以使用定义好选项来设置主题外观和功能。...主题设置字段需要在主题目录下 funcions.php 中 themeConfig 函数中定义。

    1.7K30

    MySQL字段知识科普

    为什么varchar默认长度是255 1、 mysql要求varchar一个行定义长度不能超过65535bytes,这个大小包括了字段占用空间在内,text和blob等大字段除外(注: 单行最大限制指就是一张表中所有字段设置长度总和不得超过...而utf-8编码时: 255 * 3(一个字符占3个字节)= 765字节,恰恰时能够建立索引最大值单列索引长度限制(5.6里面默认不能超过767bytes,5.7不超过3072bytes) 3...、总结: varchar(255)不是最优字符长度,最优需要按照具体情况来,但是这个长度可以保证你能少出错一个不错默认值 int(20)中20表示什么意思 1、是指显示字符长度。...1、Drop: 删除数据内容和定义,并释放空间 2、Truncate: 删除数据内容、释放空间,但不删除定义,并且重新设置索引ID从1开始,不触发Delete触发器,不能Rollback,且不能携带条件删除...写在最后   经验就是一个积累过程,没有谁能够一步登天,所以脚踏实地才是成功秘诀。

    88210
    领券