日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2025/4/5 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql开发java心得_关于mysql 一些优化心得 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先介紹下服務器架構及配置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 一些优化心得的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。