MyBatis批量插入导致内存溢出问题分析问题排查服务调用超时和OOM问题分析:排查发现是由于MyBatis拼接大SQL导致内存占用过高,GC频繁STW。优化方案包括减少批次数量、调整线程池大小及优化SQL拼接逻辑。2024-7-4 mybatis
MySQL JSON字段部分更新实验技术分享MySQL 8.0优化了JSON字段的部分更新机制,重点分析了JSON的二进制存储结构、快速定位机制及溢出场景下的更新策略,通过实验验证了非溢出和溢出情况下的空间复用行为差异。2024-6-13
Excel导入需求升级——支持内嵌图片导入技术分享文章介绍了如何通过解析WPS内嵌图片的Excel文件实现批量导入教师身份证照片功能,分析了因资源未释放导致文件描述符过高的问题,并提出了基于EasyExcel的重构方案,包括优化Zip文件处理、增加注解标注图片列等改进措施,同时记录了测试过程中发现的ZipFile特性问题。2024-6-6 excel
使用多值索引(Multi-Value Index)导致Canal同步异常问题排查MySQL 8.0.18版本中多值索引虚拟列写入binlog导致解析工具报错,分析发现是canal等工具对MYSQL_TYPE_TYPED_ARRAY类型处理不完善,8.0.25版本已修复该问题。文章详细解析了table_map_event结构、问题定位过程及修复建议。2024-6-5
Innodb数据页更新实验技术分享本文深入解析InnoDB数据页结构,详细讲解7大组成部分,重点分析记录存储机制、删除空间复用原理及Page Directory索引优化。通过实验验证删除记录如何形成可重用空间链表,并演示不同场景下空间复用的具体表现,帮助理解InnoDB底层存储机制。2024-5-20
HTTP缓存机制解析技术分享HTTP缓存机制主要涉及存储策略、过期策略和协商策略。存储策略决定是否缓存资源,主要受Cache-Control响应头影响。过期策略判断本地缓存是否过期,结合Expires和Cache-Control响应头。协商策略验证缓存内容是否最新,通过对比两个响应的最后一次修改时间或特征值。此外,启发式缓存和Vary头也影响缓存机制。Cache-Control也可以在请求头中使用,指示客户端的缓存行为。2024-5-9 http
MySQL 溢出字段常规更新(full update)实验技术分享本篇文章主要探讨了MySQL中大字段的全量更新(full update)实验,揭示了在实验过程中发现的一些有趣的现象和细节。文章首先介绍了一些前置知识点,包括MySQL 8.0对于非压缩溢出页的结构改造,以及全量更新的流程。然后通过实验,详细地展示了更新过程中溢出页的变化,以及更新次数对于溢出页数量的影响。文章还深入分析了溢出页首页的结构,包括索引列表和空闲节点等部分。在实验过程中,文章提出了一些有趣的问题,如在优化表后索引页数量的增加等,这些问题为我们深入理解MySQL的内部机制提供了思考的方向。总的来说,这篇文章通过实验和详细的分析,为我们理解MySQL中大字段的全量更新提供了宝贵的实践视角和深入的理论知识。2024-4-19
用几个实验验证char、varchar和text的底层存储技术分享MySQL单行记录大小限制详解:Server层65535字节限制与InnoDB层8126字节限制的差异,包括varchar/text字段计算规则、变长编码处理、行溢出机制及定长字段的特殊情况分析。2024-4-7
SpringBoot开启gzip压缩min-response-size不生效问题排查分析SpringBoot gzip压缩失效原因:Tomcat依赖Content-Length判断压缩条件,但MappingJackson2HttpMessageConverter采用流式写入导致无法获取长度。文章探讨了分块传输编码原理,并提出了通过ShallowEtagHeaderFilter或修改Converter的解决方案,权衡性能影响后建议在网关层实现压缩。2024-3-28 spring-boot
tomcat-jdbc连接池对于socketTimeout超时断连的处理BUG问题排查文章分析了MySQL连接超时后连接池未校验导致的问题,详细描述了事务内外的4个报错点,并提出了通过tomcat-jdbc异步检查机制优化连接池管理的解决方案,避免关闭连接被重复使用。2024-3-14 tomcat-jdbc