先介绍下服务器架构及配置8核8G,10M带宽Centos6.5 64

Nginx   1.8.1PHP      5.3.29Mysql    5.5.42

一电商网站后台查询订单时 经常php超时,导致php报错以下是排查过程

1、php执行超时,首先我们想到的就是php.ini文件中max_execution_time =  #把默认的值调整了下

2、然后在后台执行订单查询php不报错了,但是查询耗时较长,用时65s.  而且一些表成锁死状态碎片比较多,本人对mysql数据库优化不是很了解,于是请教了铭哥下,铭哥给出的答复是:一般mysql调优主要是根据慢查询日志去优化sql语句,my.cnf里面没啥可调的。 下面就是分析mysql慢日志,调整参数3、mysql参数优化,主要调整的参数如下。根据机器性能来调整,如果你对参数不是很了解,建议不要盲目的调

把一些配置文件修改好后重启相关服务,由原来的65s变成了十几秒。效果还是不是很理想,查看了下mysql默认引擎为MyISAM,决定把引擎改为Innodb

1、导出shop数据库的表结构mysqldump -d -uxxx -p shop > shop_table.sql其中-d参数表示不导出数据,只导出表结构

2、替换shop_table.sql里的MyISAM为INNODBsed -i 's/MyISAM/INNODB/g' shop_table.sql3、新建数据库shop_new,并导入表结构mysql > create database shop_new;mysql -uroot -p shop_new < shop_table.sql可以通过show table status来检查表引擎是否为INNODB。

4、导出shop的数据mysqldump -t -uroot -p shop > shop_data.sql其中-t参数表示只导数据,不导表结构

5、导入数据到shop_newmysql -uroot -p shop_new < shop_data.sql

6、 首先开启慢日志,修改/etc/my.cnf  增加以下两段配置,保存重启mysql

vim /etc/my.cnf

long_query_time = 2

log_slow_queries = /data/mysql/slow.log

service mysqld restart   ##重启mysql服务

7、查看慢日志来定位mysql哪条语句执行慢,然后建立索引,优化sql执行语句。

tail -n20 /data/mysql/slow.log   #查看20行

# Time: 160303 12:12:38

# User@Host: root[root] @  [10.165.34.182]

# Query_time: 10.145685  Lock_time: 0.000395 Rows_sent: 1  Rows_examined: 24306970

use shop;

SET timestamp=1456978358;

SELECT COUNT(*) FROM `shop`.`ecs_order_info` o LEFT JOIN`shop`.`ecs_users` u ON o.user_id = u.user_id LEFT JOIN `shop`.`ecs_affiliate_log` a ON o.order_id = a.order_id WHERE o.user_id > 0 AND (u.parent_id > 0 AND o.is_separate = 0 OR o.is_separate > 0);

# Time: 160303 12:12:44

# User@Host: root[root] @  [10.165.34.182]

# Query_time: 6.073441  Lock_time: 0.000152 Rows_sent: 15  Rows_examined: 24314767

SET timestamp=1456978364;

SELECT o.*, a.log_id, a.user_id as suid,  a.user_name as auser, a.money, a.point, a.separate_type,u.parent_id as up FROM `shop`.`ecs_order_info` o LEFT JOIN`shop`.`ecs_users` u ON o.user_id = u.user_id LEFT JOIN `shop`.`ecs_affiliate_log` a ON o.order_id = a.order_id WHERE o.user_id > 0 AND (u.parent_id > 0 AND o.is_separate = 0 OR o.is_separate > 0)  ORDER BY order_id DESC LIMIT 0,15;

通过慢日志发现其中有几个表查询耗时较长,下面就是把这个查询慢的表建立索引

用到的软件 NAvicat,对查询慢的表进行设计,增加索引

根据 explain  的解释,查看下  索引是否建立,一般都是 这样调整 就行。

修改完后重启mysql 服务,查询时间从65s,缩短到 0.017407 秒

参考了大量的网络资料,头一次搞优化。优化完后很有成就感,算是一次新的挑战

mysql开发java心得_关于mysql 一些优化心得相关推荐

  1. mysql主从数据库含义_(转)Mysql数据库主从心得整理

    管理mysql主从有2年多了,管理过200多组mysql主从,几乎涉及到各个版本的主从,本博文属于总结性的,有一部分是摘自网络,大部分是根据自己管理的心得和经验所写,整理了一下,分享给各位同行,希望对 ...

  2. php+mysql开发实战 pdf_《PHP + MySQL 开发实战》怎么样_目录_pdf在线阅读 - 课课家教育...

    前言 第1章 php环境搭建 1.1 Linux上PHP开发环境搭建 任务1 在虚拟机中安装Vmwaretools 任务2 Linux下Apache服务器安装与配置 任务3 Linux下MySQL数据 ...

  3. 深入浅出mysql唐汉名_深入浅出MySQL++数据库开发、优化与管理维护+第2版+唐汉明 -- 存储引擎 - 数据类型 - 字符集和校验规则 -...

    create schema deepInMySql; use deepInMySql; -- 查看当前默认存储引擎 show variables like '%table_type%'; -- 查看当 ...

  4. mysql数据库建仓范式_存mysql个数

    MySQL学习笔记之数据类型详解 注:以下内容针对MySQL5.0及以上版本 MySQL的数据类型非常多,选择正确的数据类型对于获得高性能至关重要,本文是我结合网上看到的一些blog加上<高性能 ...

  5. mysql 连接 指定字符集_关于Mysql连接池配置指定字符集的问题

    问题是这样的,我在写一个网站,打算使用连接池.我使用J2EE开发,开始使用的是直连的方式,附上代码public class ConnDb { private String getDriver = &q ...

  6. mysql清理死链接_对MySQL的死连接Sleep的进程的来源研究

    当前的连接数: mysql> show status like '%Threads_connected%'; +-------------------+-------+ | Variable_n ...

  7. mysql数据库范围之内_是mysql范围

    MySQL数据类型-decimal详解 1.首先,对于精度比较高的东西,比如money,我会用decimal类型,不会考虑float,double,因为他们容易产生误差,numeric和decimal ...

  8. mysql 查询存储过程 速度_查询mysql过程

    MySql 使用explain分析查询 今天写了个慢到哭的查询,想用explain分析下执行计划,后来发现explain也是有局限性的: EXPLAIN不会告诉你关于触发器.存储过程的信息或用户自定义 ...

  9. mysql slave是什么_是mysql作用

    php连接mysql数据库基础 bool define ( string name, mixed value [, bool case_insensitive] )define函数作用是定义常量 de ...

  10. 找回mysql账号密码怎么办_找回mysql用户

    MySQL_忘记Root密码并找回 Mysql找回Root密码 首先,大家如果看到有什么不懂的地方,欢迎吐槽!!! 我会在当天或者第二天及时回复,并且改进~~ 一.首先确认服务器出于安全的状态,也就是 ...

最新文章

  1. coker php debug_docker中php xdebug调试开发
  2. 北风设计模式课程---13、享元模式
  3. java什么时候新建进程_创建名为“ {java}”的线程(即轻量级进程)是为了什么?...
  4. (王道408考研操作系统)第一章计算机系统概述-第一节4:中断和异常
  5. 6折入股蚂蚁金服?巨人网络如此回应
  6. WCF后传系列(2):深入WCF寻址Part 2—自定义寻址报头
  7. Android-JNI开发系列《十》实践利用libjpeg-turbo完美压缩图片不失真
  8. 估计的商是什么意思_商是什么意思,商的繁体字,商有几笔,商字几画
  9. 应用ruby打造个性化的有道单词本 (二)
  10. 百度地图实现定位功能及城市选择
  11. MT7688: Shine定点MP3压缩库试验
  12. 2022爬取微博评论-极简40行代码
  13. k6性能测试工具,并生成可视化报告
  14. Matlab图像分割---使用dice相似系数方法进行图像分割精度验证
  15. 【MindSpore】 No module named apos;mindspore.dataset.transformsapos;
  16. html输入日期算出星座,通过日期计算星座
  17. 2021年CFA最新学习资料!
  18. mysql start with递归_关于各个数据库递归(start with connect by prior)的相互转换
  19. 聚划算今日团购_聚划算今日团购清…
  20. 2011考研数学二第(13)题——极坐标求二重积分

热门文章

  1. 函数式编程filter、map、reduce
  2. 基于FPGA的BP神经网络的verilog实现
  3. git命令行完全解读
  4. SCCM2012SP1---配置客户端发现方法和边界组
  5. java实现MD5加密
  6. 菜鸟学自动化测试(四)----selenium 命令之验证页面元素
  7. JAVA _构造函数
  8. 对Struts2的认识(-)
  9. SharePoint 2010 BI(2):使用Visio“.NET研究” Service
  10. 剑指offer:合并两个有序的链表