史上最全的MySQL高性能優化實戰總結!

史上最全的MySQL高性能優化實戰總結!
1.1 前言

MySQL對于很多Linux從業者而言,是一個非常棘手的問題,多數情況都是因為對數據庫出現問題的情況和處理思路不清晰。在進行MySQL的優化之前必須要了解的就是MySQL的查詢過程,很多的查詢優化工作實際上就是遵循一些原則讓MySQL的優化器能夠按照預想的合理方式運行而已。

今天給大家體驗MySQL的優化實戰,助你高薪之路順暢。
史上最全的MySQL高性能優化實戰總結!
圖 - MySQL查詢過程

1.2 優化的哲學

優化有風險,涉足需謹慎

1.2.1 優化可能帶來的問題
史上最全的MySQL高性能優化實戰總結!

1.2.2 優化的需求
史上最全的MySQL高性能優化實戰總結!
1.2.3 優化由誰參與

在進行數據庫優化時,應由數據庫管理員、業務部門代表、應用程序架構師、應用程序設計人員、應用程序開發人員、硬件及系統管理員、存儲管理員等,業務相關人員共同參與。

1.3 優化思路

1.3.1 優化什么

在數據庫優化上有兩個主要方面:即安全與性能。
史上最全的MySQL高性能優化實戰總結!
1.3.2 優化的范圍有哪些

存儲、主機和操作系統方面:
史上最全的MySQL高性能優化實戰總結!
應用程序方面:

史上最全的MySQL高性能優化實戰總結!

數據庫優化方面:
史上最全的MySQL高性能優化實戰總結!
說明:不管是在,設計系統,定位問題還是優化,都可以按照這個順序執行。

1.3.3 優化維度

數據庫優化維度有四個:

硬件、系統配置、數據庫表結構、SQL及索引
史上最全的MySQL高性能優化實戰總結!
優化選擇

史上最全的MySQL高性能優化實戰總結!
1.4 優化工具有啥?

1.4.1 數據庫層面

檢查問題常用工具
史上最全的MySQL高性能優化實戰總結!
不常用但好用的工具
史上最全的MySQL高性能優化實戰總結!
1.4.2 數據庫層面問題解決思路

一般應急調優的思路:

針對突然的業務辦理卡頓,無法進行正常的業務處理!需要立馬解決的場景!
史上最全的MySQL高性能優化實戰總結!
常規調優思路:

針對業務周期性的卡頓,例如在每天10-11點業務特別慢,但是還能夠使用,過了這段時間就好了。
史上最全的MySQL高性能優化實戰總結!
1.4.3 系統層面

cpu方面

vmstat、sar top、htop、nmon、mpstat

內存

free、ps -aux 、

IO設備(磁盤、網絡)

iostat、 ss 、 netstat 、 iptraf、iftop、lsof、

vmstat 命令說明:
史上最全的MySQL高性能優化實戰總結!
iostat命令說明

實例命令: iostat -dk 1 5

iostat -d -k -x 5 (查看設備使用率(%util)和響應時間(await))

史上最全的MySQL高性能優化實戰總結!
1.4.4 系統層面問題解決辦法

你認為到底負載高好,還是低好呢?

在實際的生產中,一般認為 cpu只要不超過90%都沒什么問題 。

當然不排除下面這些特殊情況:

問題一:cpu負載高,IO負載低
史上最全的MySQL高性能優化實戰總結!
問題二:IO負載高,cpu負載低
史上最全的MySQL高性能優化實戰總結!
問題三:IO和cpu負載都很高

硬件不夠了或sql存在問題

1.5 基礎優化

1.5.1 優化思路

定位問題點:

硬件 --> 系統 --> 應用 --> 數據庫 --> 架構(高可用、讀寫分離、分庫分表)

處理方向

明確優化目標、性能和安全的折中、防患未然

1.5.2 硬件優化

主機方面:

史上最全的MySQL高性能優化實戰總結!
cpu的選擇:
史上最全的MySQL高性能優化實戰總結!
內存的選擇:
史上最全的MySQL高性能優化實戰總結!
存儲方面:
史上最全的MySQL高性能優化實戰總結!
raid卡:主機raid卡選擇:
史上最全的MySQL高性能優化實戰總結!
網絡設備方面:

使用流量支持更高的網絡設備(交換機、路由器、網線、網卡、HBA卡)

注意:以上這些規劃應該在初始設計系統時就應該考慮好。

1.5.3 服務器硬件優化
史上最全的MySQL高性能優化實戰總結!
1.5.4 系統優化

Cpu:

基本不需要調整,在硬件選擇方面下功夫即可。

內存:

基本不需要調整,在硬件選擇方面下功夫即可。

SWAP:

MySQL盡量避免使用swap。阿里云的服務器中默認swap為0

IO :
史上最全的MySQL高性能優化實戰總結!
史上最全的MySQL高性能優化實戰總結!
這個參數決定了Linux是傾向于使用swap,還是傾向于釋放文件系統cache。在內存緊張的情況下,數值越低越傾向于釋放文件系統cache。當然,這個參數只能減少使用swap的概率,并不能避免Linux使用swap。

修改MySQL的配置參數innodb_flush_method,開啟O_DIRECT模式。這種情況下,InnoDB的buffer pool會直接繞過文件系統cache來訪問磁盤,但是redo log依舊會使用文件系統cache。值得注意的是,Redo log是覆寫模式的,即使使用了文件系統的cache,也不會占用太多

IO調度策略
史上最全的MySQL高性能優化實戰總結!
1.5.5 系統參數調整

Linux系統內核參數優化
史上最全的MySQL高性能優化實戰總結!
1.5.6 應用優化

業務應用和數據庫應用獨立,防火墻:iptables、selinux等其他無用服務(關閉):

史上最全的MySQL高性能優化實戰總結!
安裝圖形界面的服務器不要啟動圖形界面 runlevel 3,另外,思考將來我們的業務是否真的需要MySQL,還是使用其他種類的數據庫。用數據庫的最高境界就是不用數據庫。

1.6 數據庫優化

SQL優化方向:

執行計劃、索引、SQL改寫

架構優化方向:

高可用架構、高性能架構、分庫分表

1.6.1 數據庫參數優化

調整:

實例整體(高級優化,擴展)

史上最全的MySQL高性能優化實戰總結!
連接層(基礎優化)

設置合理的連接客戶和連接方式
史上最全的MySQL高性能優化實戰總結!

SQL層(基礎優化)

query_cache_size: 查詢緩存

OLAP類型數據庫,需要重點加大此內存緩存.

但是一般不會超過GB.

對于經常被修改的數據,緩存會立馬失效。

我們可以實用內存數據庫(redis、memecache),替代他的功能。

1.6.2 存儲引擎層(innodb基礎優化參數)
史上最全的MySQL高性能優化實戰總結!

歡迎工作一到五年的Java工程師朋友們加入Java爬坑之路:860113481

群內提供免費的Java架構學習資料(里面有高可用、高并發、高性能及分布式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!

轉載于:https://blog.51cto.com/13732225/2176642

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253486.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253486.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253486.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

低功耗設計——基于UPF進行設計

UPF, 統一電源格式UPF(Unified Power Format)是新思(Synopsys)公司通用的電源格式,是一組標準的類Tcl 語言的集合,用來描述芯片設計中的低功耗意圖(Low-Power Design Intent)。 使用UPF 的語言,可以描述供電…

用公眾號獲取 任意公眾號文章列表 軟件還是免費

用公眾號獲取 任意公眾號文章列表 軟件還是免費還不快點下載 下載 地址 https://pan.baidu.com/s/1jI44Wjs轉載于:https://www.cnblogs.com/wx85437898/p/7488590.html

CentOS7時間設置問題

本地安裝一個VMWare player虛擬機客戶端,并安裝了Linux CentOS7 Basic Web Server系統,時區在安裝時已經選擇了Asia/Shanghai,但是安裝完成后,時間和當前外部的時間不一致,如下圖 圖一 圖二 圖三 后經搜索發現,由于未開…

關于Nand ECC 錯誤

Nand flash ECC數據錯誤怎么辦? 我編譯過kernel 當時選了ECC校驗 啟動以后報錯 去掉了,就不報錯了 所以我會先考慮是不是這個問題 一般來說,硬件ECC校驗出錯可能性比較小吧? 我啥也不懂 -----摘自網絡經典文章:“LINU…

低功耗設計——功耗估算

根據在功耗分析的過程中是否有輸入向量的提供,功耗估算方法可以分為仿真的方法(Simulative)和非仿真的方法(Non-simulative): 仿真的方法是根據用戶所提供的大量輸入向量來對電路進行模擬,利用…

uboot 與系統內核中 MTD分區的關系

分類: Nand 驅動 2011-11-06 23:48 705人閱讀 評論(2) 收藏 舉報 uboot 與系統內核中 MTD分區的關系: 分區只是內核的概念,就是說A~B地址放內核,C~D地址放文件系統,等等。 1:在內核…

Deep Learning(深度學習)學習筆記整理系列三

Deep Learning(深度學習)學習筆記整理系列 聲明: 1)該Deep Learning的學習系列是整理自網上很大牛和機器學習專家所無私奉獻的資料的。具體引用的資料請看參考文獻。具體的版本聲明也參考原文獻。 2)本文僅供學術交流&…

輾轉相除法 求最大公約數和最小公倍數

# include<stdio.h> int main() { int a,b,c,x,y; printf("請輸入兩個正整數&#xff0c;用逗號間隔&#xff1a;"); scanf("%d,%d",&a,&b); xa; yb; if (a<b) { ca; ab;      //要保證 a>b bc; } while (b!0) { ca; ab; bc%b; …

Conformal ECO 流程介紹

之前聽說過一句話&#xff0c;沒有修過ECO的人生是不完整的。最近就給我整得再次完整了。。。。。。 最近趕項目&#xff0c;RTL freeze之后&#xff0c;后仿發現出了bug&#xff08;還好攔下來了&#xff0c;不然頭更大&#xff09;&#xff0c;于是做了一次function ECO&…

最新天貓面試題(含總結):線程池+并發編程+分布式設計+中間件

最新天貓面試題&#xff08;含總結&#xff09;&#xff1a;線程池并發編程分布式設計中間件https://my.oschina.net/u/3892...

關于NAND flash的MTD分區與uboot中分區的理解 .

今天做內核移植&#xff0c;準備添加NAND flash的驅動&#xff0c;做到MTD分區時&#xff0c;想起在一本書上看到的一句話&#xff0c;說的是分區時每個區之間沒有間隙&#xff0c;前一個區的結束地址是后一個區的起始地址。可是當我看我的開發板的教程時&#xff0c;分區如下&…

Zabbix discoverer processes more than 75% busy

原文發表于cu&#xff1a;2016-06-22 Zabbix discoverer processes more than 75% busy原因及處理。 一&#xff0e;現象 配置了discovery任務后&#xff0c;zabbix dashboard 告警如下&#xff1a; Zabbix discoverer processes more than 75% busy 二&#xff0e;原因 1. 配置…

Begin()

好&#xff0c;要開始在新的博客里寫東西了&#xff0c;上一個博客的賬號和密碼都忘了... 我開通博客的申請里寫&#xff0c;我博文的內容會以機器學習和控制算法的學習筆記為主。 那我寫的估計是假的申請。 好吧&#xff0c;既然是這樣寫申請的一定程度上也是要兌現承諾的&…

圖像紫邊消除(depurple)

圖像紫邊廣泛存在于目前的手機攝像頭、數碼相機、監控攝像頭等數字成像系統所得圖像中,當我們使用這些設備在逆光、大光圈等條件下拍攝時,所得圖像的局部區域,特別是高反差區域(亮暗對比反差很大的圖像區域,比如天空、燈管與物體相接的邊緣)會比較容易觀察到紫邊,解決圖…

Swift 性能相關

起初的疑問源自于「在 Swift 中的, Struct:Protocol 比 抽象類 好在哪里&#xff1f;」。但是找來找去都是 Swift 性能相關的東西。整理了點筆記&#xff0c;供大家可以參考一下。 一些疑問 在正題開始之前&#xff0c;不知道你是否有如下的疑問&#xff1a; 為什么說 Swift 相…

linux_NandFlash_driver_超詳細分析 .

分類&#xff1a; Linux 驅動 Nand 驅動 2011-11-06 23:16 474人閱讀 評論(0) 收藏 舉報 今天學習了NandFlash的驅動&#xff0c;硬件操作非常簡單&#xff0c;就是這個linux下的驅動比較復雜&#xff0c;主要還是MTD層的問題&#xff0c;用了一下午時間整理出來一份詳細的分析…

HTTPS 路徑配置

1: 首先安裝 fiddlercertmaker.exe 文件2:Tools -> HTTPS 3: Connections 勾中Allow remote computer to connect轉載于:https://www.cnblogs.com/eason-d/p/7492177.html

CMOS圖像傳感器——相位對焦

之前介紹了許多自動對焦的方案 自動對焦方法學習_滄海一升的博客-CSDN博客自動對焦的各類方法學習介紹https://blog.csdn.net/qq_21842097/article/details/121373263 在里面提到了遮蔽像素相位檢測法,原理上算是相位檢測法(Phase Detection Auto Focus,PDAF)的一種。…

51nod 1343 行列式的根

這題分塊搞一搞&#xff0c;算到最后發現結果就是算矩陣J的行列式&#xff0c;要取模m&#xff0c;那個sign消掉了。 參考文獻在這&#xff0c;歐幾里德算法的應用&#xff0c;金斌 代碼還是比較好寫的&#xff0c;python代碼 n,mmap(int,raw_input().split()) a[] for i in ra…

Spring Cloud Config 和Spring Cloud Bus實現配置中心

2019獨角獸企業重金招聘Python工程師標準>>> Spring Cloud是很多組件的集合&#xff0c;Spring將常用的技術框架進行包裝和整合&#xff0c;如mybatis zookeeper rabbitmq redis等等&#xff0c;還有一些科技公司貢獻出來的一些經過生產環境驗證的組件如奈飛公司貢獻…