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

mysql longtext_MySqlLongText类型大字段查询优化

在本次项目表结构,有一个longtext字段,用于存储长文本,仅万条数据,InnoDB存储文件就达G级,由于是一个小项目,受限于服务器与运维人员水平,不适合使用hdfs,MongoDB等拓展技术栈来解决这种问题...,因此直接对mysql存储进行优化,快速解决,利于维护。...涉及mysql基础知识 一、innodb存储引擎的处理方式 1.mysql在操作数据的时候,以page为单位 不管是更新,插入,删除一行数据,都需要将那行数据所在的page读到内存,然后在进行操作,这样就存在一个命中率的问题...,如果一个page能够相对的存放足够多的行,那么命中率就会相对高一些,性能就会有提升 2.innodb的page大小默认为16kb innodb存储引擎表为索引组织表,树底层的叶子节点为一双向链表,因此每个页至少应该有两行记录...而剩余的数据则会存储在溢出段(发生溢出情况的时候适用),最大768字节的作用是便于创建前缀索引/prefix index,其余更多的内容存储在额外的page里,哪怕只是多了一个字节。

3.8K20

mysql longtext 查询_mysqllongtext存在大量数据时,会导致查询很慢?

一个表,1.5w条数据,字段: id,name,content,last_update_time id,自定义主键 name,varchar类型 content是longtext类型, last_update_time...使用explain: 有content时结果: mysql> explain select id, name, last_update_time from t order by last_update_time...无content的时候,查询走的是idx_last_update_time,我猜测这个索引包含了id,name字段,因此仅通过索引就可以获取到所需的数据,因此速度很快。...有content的时候,因为有limit 10000的语句,且无法从索引获取content字段的内容,因此采用的全表扫描的方法。...建议改写sql语句,让数据库的执行计划更充分使用索引,假设id是主键: select id, name, content from t where id in ( select id from t order

3.9K20
您找到你想要的搜索结果了吗?
是的
没有找到

MySqllongtext字段的返回问题「建议收藏」

最近开发中用到了longtext这种字段。在mysql该字段的最大长度为4G 如下图所示 开发遇到的一个问题就是。...例如有个article表,然后我们的页面要将数据以列表的形式展示到前端(只显示几个字段,如作者,标题等等,例如放到table显示多条记录),但是是将该表的所有信息都查出来,然后当用户点击某条记录的时候...解决方法: 当然是sql语句的问题了,当像上面这样查询整个列表的时候,可以不查询longtext这个字段,将其他的字段查询出来。...然后当用户点击某条数据时,再根据该条数据的id到数据库去单查这条数据,这时再将longtext给查出来即可。...说到这里,还要说一种情况,就是有时候从数据库查到的数据封装到实体类,怎么也取不到某个字段的值,就是null。这个时候要看看sql语句,返回的结果集中是否将该字段封装并且映射到该类对应的字段上。

1.6K30

MySQL Longtext字段优化记录(一)

工作遇到一个查询很慢的情况,环境如下: 开发语言:JAVA 数据库MySQL 数据量:1600~1800 问题:查询200条时就很慢,是慢在IO上: 如果是查全部(一千六百多条),就更慢了,几乎四十秒还没有返回...: 原因:数据表中有个longtext字段: 优化思路:数据库不存longtext字段,新增blob字段,将文本在后端压缩为bytep[]存到blob二进制字段,查询时返回。...DeflaterOutputStream: 插入测试: 插入成功: 查询时用InflaterOutputStream将byte[]解压缩还原为文本,new String(): 查询测试: 插入和查询测试通过,再将原表的longtext...全都更新到blob字段,然后把原表拷贝到两张表,一张表保留longtext字段,一张表保留blob字段,查询比对如下: 说明blob字段IO速度比long text字段IO速度快很多。...注:这种方式就是不存原文本内容,弊端就是无法做对文本的搜索功能,如果要求要对文本做搜索,或者保留为文档到ES,建议把content字段拆出来一张表和主表关联,也是保存和查询需要处理一下。

2.9K20

mysql mediumtext 最大_mysql – TINYTEXT,TEXT,MEDIUMTEXT和LONGTEXT最大存储大小

上升到@ Ankan-Zerob的挑战,这是我对每个文本类型可以存储的最大长度的估计: Type | Bytes | English words | Multi-byte words ———–+———...255 | ±44 | ±23 TEXT | 65,535 | ±11,000 | ±5,900 MEDIUMTEXT | 16,777,215 | ±2,800,000 | ±1,500,000 LONGTEXT...| 4,294,967,295 | ±740,000,000 | ±380,000,000 在英语,每个单词4.8个字母可能是一个很好的平均值(例如norvig.com/mayzner.html),...需要多字节字符的语言,如希腊语,阿拉伯语,希伯来语,印地语,泰语等,通常需要UTF-8每个字符两个字节。 每个单词5个字母疯狂地猜测,我从每个单词的11个字节向下舍入。...CJK剧本(汉字,汉字,平假名,片假名等)我一无所知; 我相信字符大多需要UTF-8的3个字节,并且(大量简化)它们可能被认为每个字使用大约2个字符,因此它们将介于其他两个字符之间。

2K10

mediumtext_mysql数据类型介绍(含text,longtext,mediumtext说明) | 学步园

MySQL支持的列类型列在下面。下列代码字母用于描述:M 指出最大的显示尺寸。最大的合法的显示尺寸是 255 。D 适用于浮点类型并且指出跟随在十进制小数点后的数码的数量。...在MySQL3.23,这是一个真正的浮点值。在更早的MySQL版本,FLOAT(precision)总是有2位小数。该句法为了ODBC兼容性而提供。...MySQL以’YYYY-MM-DD’格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列。DATETIME一个日期和时间组合。...MySQL以YYYY格式来显示YEAR值,但是允许你把使用字符串或数字值赋给YEAR列。(YEAR类型在MySQL3.22是新类型。)...这是MySQL的缺省。CHAR是CHARACTER的一个缩写。[NATIONAL] VARCHAR(M) [BINARY]一个变长字符串。

1.6K10

MySQL 数据库的锁

全局锁 顾名思义,全局锁就是对整个数据库实例加锁。 1. FTWRL MySQL 提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。...如果执行 FTWRL 命令之后由于客户端发生异常断开,那么 MySQL 会自动释放这个全局锁,整个库回到可以正常更新的状态。...表锁 MySQL 里面表级别的锁有两种:一种是表锁,一种是元数据锁(meta data lock,MDL)。...MDL 锁 另一类表级的锁是 MDL(metadata lock),这个是 MySQL 5.5 版本引入了 MDL,当对一个表做增删改查操作的时候,加 MDL 读锁;当要对表做结构变更操作的时候,加...这大大降低了数据库的执行性能。 怎么减少行锁对性能的影响? 关闭死锁检测 控制并发度,业务层面和数据库层面。

4.9K20
领券