• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 分享自己三天的性能调优遇到的一些问题

分享自己三天的性能调优遇到的一些问题

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了性能,调优等相关知识,希望本文的分享对您有所帮助
这几天都在看一个性能调优的存储过程,该存储过程在客户生产环境(数据库为mysql 5.1 )的运行时间为30到40多分钟,客户的要求是提高

该存储过程的实现:

1.两个表的查询(由于业务需要,还涉及到该表的子查询),分别插入到临时表;两个表的数据分别为310W+,120W

2. 中间还需要做一些处理,将临时表的数据group by插入到另一个临时表;

3.最后将临时表的数据group by插入到一张正式表,插入的数据140W+

接着这几天就在优化性能的路上越走越远,尝尽了各种方法,也尝到了各种苦头。


图片发自App

各种各样的尝试:

一、我感觉这实现的逻辑有点复杂,然后按照我的想法把实现简化了。然而性能并没有得到改善。因为我的实现是把大数据量提到了前面,而后面的操作还得争对这部分大数据量进行操作,比如group by。所以虽然我的实现在逻辑上简化了,但是性能并没有提升。

二、根据不同的逻辑标识,创建了两套临时表,这样一张表的数据量就不会那么大,希望给后面的操作减少些压力。还是以失败告终。原因是因为逻辑标识的设置,所有都是走的一套逻辑,第二套逻辑根本就只是走过过场,不会真正去查那百万数据的表,所以压力还是在那300多万的表。

三、使用预处理语句。其实对预处理语句的机制不是太明白,只是听说预处理的效率更高。性能还是没提升,大概是因为并没有太多相似的查询或插入吧。嗯,不是太明白预处理机制。

四、将子查询拿掉,先用临时表保存这部分数据。这样那300多万数据的表还是得查两次,没啥性能提升。

五、将临时表的引擎由myisam改为memory,数据库的全局变量max_heap_table_size,tmp_table_size也设置为了1000M,同生产环境。结果还是报

The table 'tmp_item_bu_parter_price' is full

,所以说数据量太大,导致内存撑爆?

六、也是在逻辑上走不同分支,结果发现走的都是同一个逻辑。这个有点亏,之前在这方面考虑的时间也挺长,没有先去查明客户的设置。

七、多线程。由于存储过程中使用了insert into ...select...的句式,而且where条件未中索引,所以造成了全表锁。而多线程的测试结果无疑就是锁表了,有些数据执行失败。

八、在逻辑上不以全量的方式插入,而是增量,可是那些已存在的数据还是得更新啊。所以性能应该差不多。

性能主要耗在了百万数据的插入。现在完全是处于没辙的状态,不知道如何处理。

【相关推荐】

1. 免费mysql在线视频教程

2. MySQL最新手册教程

3. 数据库设计那些事

以上就是分享自己三天的性能调优遇到的一些问题的详细内容,更多请关注微课江湖其它相关文章!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 优化mysql数据库的经验总结
  • 解析MySQL数据库性能优化的六大技巧
  • 深入Mysql,SqlServer,Oracle主键自动增长的设置详解
  • MySQL查询优化:连接查询排序浅谈
  • mysql性能优化脚本mysqltuner.pl使用介绍
  • MySQL性能优化
  • MySQL性能优化的一些技巧帮助你的数据库
  • mysql三种批量增加的性能分析
  • 揭秘SQL优化技巧 改善数据库性能
  • 网站前端和后台性能优化的34条宝贵经验和方法

相关文章

  • 2018-12-05MySQL 教程之列类型中的数值型
  • 2017-05-11php运行提示Can't connect to MySQL server on 'localhost'的解决方法
  • 2018-12-05SQL学习笔记六 union联合结果集使用
  • 2018-12-05实例详解mysql中innodb_autoinc_lock_mode
  • 2018-12-05Mysql limit 优化,百万至千万级快速分页 复合索引的引用并应用
  • 2017-05-11MySQL timestamp自动更新时间分享
  • 2017-05-11mysql 提示INNODB错误的解决方法
  • 2018-12-05 【MySQL 10】游标
  • 2018-12-05Mysql 数据库访问类
  • 2018-12-05mysql中视图更新详解

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • sql 查询本年、本月、本日记录的语句,附SQL日期函数
    • 分享sql语句性能调优的实例教程
    • JavaScript alert()函数详细使用说明
    • MySQL主从复制实战-基于GTID的复制代码分享
    • MySQL与存储过程的相关资料
    • MySQL存储引擎中的MyISAM和InnoDB区别详解
    • MySQL日志文件详解
    • MySQL SHOW 命令的使用介绍
    • MySQL外键创建失败1005原因汇总
    • mysql数值函数

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有