开发者社区> 像教授> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介:
+关注继续查看

最近刚接手一个项目,从业务端优化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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Mysql数据库高级篇 - Mysql性能优化(2)
Mysql数据库高级篇 - Mysql性能优化(2)
0 0
Mysql数据库高级篇 - Mysql性能优化(1)
Mysql数据库高级篇 - Mysql性能优化(1)
0 0
mysql性能优化之数据类型(持续更新)
总结一下常用的数据类型创建的注意事项,后期会持续更新。
0 0
MySQL 数据库 Schema 设计的性能优化①:高效的模型设计
前言 很多人都认为性能是在通过编写代码(程序代码或者是数据库代码)的过程中优化出来的,其实这是一个非常大的误区。真正影响性能最大的部分是在设计中就已经产生了的,后期的优化很多时候所能够带来的改善都只是在解决前妻设计所遗留下来的一些问题而已,而且能够解决的问题通常也比较有限。 博主将就如何在 MySQL 数据库 Schema 设计的时候保证尽可能的高效,尽可能减少后期的烦恼会分3篇文章来进行详细介绍!
0 0
MySQL查询性能优化(下)
MySQL查询性能优化(下)
0 0
MySQL查询性能优化(上)
MySQL查询性能优化(上)
0 0
MySQL 性能优化的原则和方向|学习笔记
快速学习 MySQL 性能优化的原则和方向
0 0
关于MySQL性能优化方式,这一篇就够!
关于MySQL性能优化方式,这一篇就够!
0 0
mysql批量插入性能优化:executeBatch如何通过rewriteBatchedStatements参数逆袭
mysql批量插入性能优化:executeBatch如何通过rewriteBatchedStatements参数逆袭
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Oracle 和 MySQL 性能优化感悟
立即下载
Oracle和MySQL 性能优化感悟
立即下载
云数据库RDS MySQL从入门到高阶
立即下载