MySQL - text 性能优化--记录一

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

最近刚接手一个项目,从业务端优化DB是最值得做的一件事。

   项目存在赶工的现象。很多功能和优化都放到了最后。当玩家都反应游戏卡的时候,大家都招架不住啦。。。。

   言归正传:对于含有TEXT字段类型的表,必须独立成一张表。

   有一张表,含有12个字段并包含mediumtext 的字段,这是让人最纠结的。刚上线的一段时间,其他表都在M级别,而含text类型的表已经到达23G!!!

   由于该表只是提供给前端战斗计算的数据,并且后期可能跟踪战斗记录。所以很多数据都是可以删除的。

   优化方案: 1、分表, 将该字段 独立成单表。应用端多一次查询(开发和DBA都要做修改)。

             2、删表, 定期额删除部分数据,并进行optimize (DBA一端就可以搞定)

             3、上NOSQL,用redis 这样的 KV存储系统,应该会更高效些。

             4、最优办法:对玩家战斗记录计算数据,保存在 memcached中,完全不需要DB(最优,技术要求最高的一个,)

   目前采用的是第二种方式,对于第四种方式,是因为应用端无法实现,(经常有手动清空内存个的情况,对此表示遗憾。)

   删除方式:写了一个存储过程,一部分一部分的去删除数据。这样可以避免slave因为一个大事务而拖死。

   CREATE  PROCEDURE `del_sleep`(num int)
   begin
   declare a int default 1;
   while a<=num do delete from user_fight_xml limit 100;
   select sleep(1); set a=a+1;
   end while;
   end$$

  optimize table 回收空间,碎片整理的时候,提示以下信息:

  note     | Table does not support optimize, doing recreate + analyze instead 
  status   | OK      

  刚开始不解:为什么会替换为 recreate+analyze ,通过查询文档:

  http://dev.mysql.com/doc/refman/5.5/en/optimize-table.html

  对于MyISAM表来说:

  1、对于delete情况,会进行repair

  2、索引页排序

  3、表的更新为最新(the repair could not be accomplished by sorting the index

  对于InnoDB来说,会被映射为 alter table,所以会是 recreate + analyze的情况

  如果不想写入slave的话,可以使用 NO_WRITE_TO_BINLOG 关键字!

 






本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/1080533,如需转载请自行联系原作者

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
存储 缓存 负载均衡
mysql的性能优化
在数据库设计中,应选择合适的存储引擎(如MyISAM或InnoDB)、字段类型(如char、varchar、tinyint),并遵循范式(1NF、2NF、3NF)。功能上,可以通过索引优化、缓存和分库分表来提升性能。架构上,采用主从复制、读写分离和负载均衡可进一步提高系统稳定性和扩展性。
44 9
|
7月前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第三篇(MySQL性能优化)
MySQL数据库进阶第三篇(MySQL性能优化)
|
4月前
|
存储 SQL 关系型数据库
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
696 15
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
|
3月前
|
存储 关系型数据库 MySQL
MySQL性能优化实践指南
【10月更文挑战第16天】MySQL性能优化实践指南
202 0
|
3月前
|
存储 关系型数据库 MySQL
MySQL性能优化指南
【10月更文挑战第16天】MySQL性能优化指南
238 0
|
4月前
|
存储 关系型数据库 MySQL
mysql-性能优化(一)
mysql-性能优化(一)
|
4月前
|
关系型数据库 MySQL 数据处理
针对MySQL亿级数据的高效插入策略与性能优化技巧
在处理MySQL亿级数据的高效插入和性能优化时,以上提到的策略和技巧可以显著提升数据处理速度,减少系统负担,并保持数据的稳定性和一致性。正确实施这些策略需要深入理解MySQL的工作原理和业务需求,以便做出最适合的配置调整。
463 6
|
4月前
|
SQL 存储 关系型数据库
深入 MySQL 的执行计划与性能优化
深入 MySQL 的执行计划与性能优化
48 0
|
5月前
|
存储 关系型数据库 MySQL
"深入探索MySQL临时表:性能优化利器,数据处理的灵活之选"
【8月更文挑战第9天】MySQL临时表专为存储临时数据设计,自动创建与删除,仅在当前会话中存在,有助于性能优化。它分为本地临时表和全局临时表(通过特定逻辑模拟)。创建语法类似于普通表,但加TEMPORARY或TEMP关键字。适用于性能优化、数据预处理和复杂查询,需注意内存占用和事务支持问题。合理使用可大幅提升查询效率。
303 2
|
5月前
|
存储 XML 关系型数据库
深入理解MySQL中的BLOB和TEXT数据类型
【8月更文挑战第31天】
774 0