mysql的性能如何實現(xiàn)優(yōu)化

下文給大家?guī)黻P(guān)于MySQL的性能如何實現(xiàn)優(yōu)化,感興趣的話就一起來看看這篇文章吧,相信看完mysql的性能如何實現(xiàn)優(yōu)化對大家多少有點幫助吧。

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),成都企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),網(wǎng)站定制,成都網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,成都網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

MYSQL性能優(yōu)化 慢查詢分析

1)性能瓶頸定位

Show 命令 慢查詢?nèi)罩?nbsp;explain 分析查詢  profiling 分析查詢

2)索引及查詢優(yōu)化 3)配置優(yōu)化

MySQL 數(shù)據(jù)庫是常見的兩個瓶頸是 CPU 和 I/O 的瓶頸,CPU 在飽和的時候一般發(fā)生在數(shù)據(jù)裝入內(nèi)存或從磁盤上讀取數(shù)據(jù)時候。

可以用mpstat, iostat, sar 和 vmstat 來查看系統(tǒng)的性能狀態(tài)。

mysql的性能如何實現(xiàn)優(yōu)化

iostat,

mysql的性能如何實現(xiàn)優(yōu)化

mysql的性能如何實現(xiàn)優(yōu)化

優(yōu)化數(shù)據(jù)庫的性

能,通常有三種:使用索引,使用 EXPLAIN 分析查詢以及調(diào)整 MySQL 的內(nèi)部配置。

1 、 查詢與索引優(yōu)化分析

在優(yōu)化 MySQL 時,通常需要對數(shù)據(jù)庫進行分析EXPLAIN 分析查詢,profiling 分析以及 show 命令查詢系統(tǒng)狀態(tài)及系統(tǒng)變量,通過定位分析性能的瓶頸,才能更好的優(yōu)化數(shù)據(jù)庫系統(tǒng)的性能。

查看 MySQL云服務(wù)器配置信息 mysql> show variables;

查看 MySQL云服務(wù)器運行的各種狀態(tài)值 mysql> show global status;

# mysqladmin variables -u username -ppassword——顯示系統(tǒng)變量

mysql的性能如何實現(xiàn)優(yōu)化

# mysqladmin extended-status -u username -ppassword——顯示狀態(tài)信息

mysql的性能如何實現(xiàn)優(yōu)化

比較全的 show 命令的使用可參考:mysql>help show

或 http://dev.mysql.com/doc/refman/5.7/en/show.html

慢查詢?nèi)罩鹃_啟:

在配置文件 my.cnf 中在 [mysqld] 一行下面加入 3 個配置參數(shù),并重啟 mysql 服務(wù)

slow_query_log = 1 //0 關(guān)閉 1 開啟

slow_query_log_file = /usr/local/mysql/data/slow-query.log //慢查詢?nèi)罩敬娣诺攸c

long_query_time = 1 //表示查詢超過 1 秒才記錄

在 my.cnf 中添加 log-queries-not-using-indexes 參數(shù),表示向慢查詢?nèi)罩局杏涗浵聸]有使用索引的查詢。

二 查看慢查詢的設(shè)置信息

mysql> show variables like '%slow_query_log%';

mysql的性能如何實現(xiàn)優(yōu)化

mysql> show variables like '%long_query_time%';

化這個 sql 查詢語句

mysql> select * from test1.tb1 where entertime < '2016-9-3' or entertime > '2016-9-3';

explain 分析查詢

使用 EXPLAIN 關(guān)鍵字可以模擬優(yōu)化器執(zhí)行 SQL 查詢語句,從而知道 MySQL 是如何處理你的

SQL 語句的。

mysql的性能如何實現(xiàn)優(yōu)化

explain 模擬優(yōu)化器執(zhí)行 sql 語句來看是沒有使用索引查詢的,而是全表掃描

優(yōu)化方法:在 stuname 列上創(chuàng)建索引

mysql> create index index_stuname on test1.tb1(stuname);

再次執(zhí)行 explain

mysql> explain select * from test1.tb1 where stuname='admin'\G;

mysql的性能如何實現(xiàn)優(yōu)化

profiling 分析查詢

通過慢日志查詢可以知道哪些 SQL 語句執(zhí)行效率低下,通過 explain 我們可以得知 SQL 語句具體執(zhí)行情況,索引使用等,還可以結(jié)合 show 命令查看執(zhí)行狀態(tài)。

mysql的性能如何實現(xiàn)優(yōu)化mysql的性能如何實現(xiàn)優(yōu)化

select @@profiling; //0 表示未開啟

mysql的性能如何實現(xiàn)優(yōu)化

執(zhí)行要測試的 sql 語句

mysql> select * from test1.tb1 where stuname='admin' and entertime='2016-9-1';

 

mysql> show profiles\G; //可以得到被執(zhí)行的 SQL 語句的時間和 ID

status:是 profile 里的狀態(tài),duration:是 status 狀態(tài)下的耗時。

   Mysql配置優(yōu)化

Mysql 參數(shù)優(yōu)化對于不同的網(wǎng)站,及其在線量,訪問量,帖子數(shù)量,網(wǎng)絡(luò)情況,以及機器硬件配置都有關(guān)系,優(yōu)化不可能一次性完成,需要不斷的觀察以及調(diào)試才有可能得到最佳效果。

1) 連接請求的變量:

1. max_connections

數(shù)值過小會經(jīng)常出現(xiàn) ERROR 1040: Too many connections 錯誤,可以過 mysql> show status like

'connections';通配符查看當前狀態(tài)的連接數(shù)量(試圖連接到MySQL(不管是否連接成功)的連接數(shù)),以定奪該值的大小。

mysql的性能如何實現(xiàn)優(yōu)化

最大連接數(shù)

mysql的性能如何實現(xiàn)優(yōu)化

max_used_connections / max_connections * 100% (理想值≈ 85%)

如果 max_used_connections 跟 max_connections 相同那么就是 max_connections 設(shè)置過低或者超過云服務(wù)器負載上限了,低于 10%則設(shè)置過大。

2.back_log

MySQL 能暫存的連接數(shù)量。當主要 MySQL 線程在一個很短時間內(nèi)得到非常多的連接請求,它就會起作用。

如何設(shè)置 back_log?

修改/etc/my.cnf 文件,在[mysqld]下面添加如下內(nèi)容,如設(shè)置最大連接數(shù)為 1024back_log = 數(shù)值  重啟

3.wait_timeout 和 interactive_timeout

wait_timeout -- 指的是 MySQL在關(guān)閉一個非交互的連接之前所要等待的秒數(shù)interactive_time -- 指的是 mysql 在關(guān)閉一個交互的連接之前所要等待的秒數(shù)。

wait_timeout:

(1)如果設(shè)置大小,那么連接關(guān)閉的很快,從而使一些持久的連接不起作用

(2)如果設(shè)置太大,容易造成連接打開時間過長,在 show processlist 時,能看到太多的 sleep

狀態(tài)的連接,從而造成 too many connections 錯誤

3)一般希望 wait_timeout 盡可能地低

interactive_timeout 的設(shè)置將要對你的 web application 沒有多大的影響

查看 wait_timeout 和 interactive_timeout

mysql> show variables like '%wait_tmeout%';

mysql的性能如何實現(xiàn)優(yōu)化

mysql> show variables like '%interactive_timeout%';

mysql的性能如何實現(xiàn)優(yōu)化

如何設(shè)置 wait_timeout 和 interactive_timeout ?

修改/etc/my.cnf 文件,在[mysqld]下面添加如下內(nèi)容

 wait_timeout=100

interactive_timeout=100

重啟 MySQL Server 進入后,查看設(shè)置已經(jīng)生效。

 全局緩沖:

4.key_buffer_size

key_buffer_size 指定索引緩沖區(qū)的大小,它決定索引處理的速度,尤其是索引讀的速度。通過檢查狀態(tài)值 Key_read_requests 和 Key_reads,可以知道 key_buffer_size 設(shè)置是否合理。

mysql的性能如何實現(xiàn)優(yōu)化

一共有 6 個索引讀取請求,有 3 個請求在內(nèi)存中沒有找到直接從硬盤讀取索引,計算索引未命中緩存的概率:

key_buffer_size 只對 MyISAM 表起作用。即使你不使用 MyISAM 表,但是內(nèi)部的臨時磁盤表是 MyISAM 表,也要使用該值。可以使用檢查狀態(tài)值 created_tmp_disk_tables 

mysql的性能如何實現(xiàn)優(yōu)化

調(diào)整 key_buffer_size

默認配置數(shù)值是 8388608(8M),主機有 4GB 內(nèi)存,可以調(diào)優(yōu)值為 268435456(256MB)修改/etc/my.cnf 文件,在[mysqld]下面添加如下內(nèi)容

5. query_cache_size(查詢緩存簡稱 QC)

使用查詢緩沖,MySQL 將查詢結(jié)果存放在緩沖區(qū)中,今后對于同樣的 SELECT 語句(區(qū)分大小寫),將直接從緩沖區(qū)中讀取結(jié)果。

mysql的性能如何實現(xiàn)優(yōu)化

如果該值顯示較大,則說明 Query Cache 中的內(nèi)存碎片較多了,F(xiàn)LUSH QUERY CACHE 會對緩存中的碎片進行整理

Qcache_queries_in_cache:當前 Query Cache 中 cache 的 Query 數(shù)量;Qcache_total_blocks:當前 Query Cache 中的 block 數(shù)量;。查詢云服務(wù)器關(guān)于 query_cache 的配置:

mysql的性能如何實現(xiàn)優(yōu)化

query_cache_limit:超過此大小的查詢將不緩存

query_cache_min_res_unit:緩存塊的最小大小 ,query_cache_min_res_unit 的配置是一柄”雙刃劍”,默認是 4KB,設(shè)置值大對大數(shù)據(jù)查詢有好處,但如果你的查詢都是小數(shù)據(jù)查詢,就容易造成內(nèi)存碎片和浪費。

在優(yōu)化之前執(zhí)行 mysqlslap 工具進行測試

mysql的性能如何實現(xiàn)優(yōu)化

優(yōu)化之后執(zhí)行 mysqlslap 工具進行測試

mysql的性能如何實現(xiàn)優(yōu)化

看了以上關(guān)于mysql的性能如何實現(xiàn)優(yōu)化詳細內(nèi)容,是否有所收獲。如果想要了解更多相關(guān),可以繼續(xù)關(guān)注我們的行業(yè)資訊板塊。

分享題目:mysql的性能如何實現(xiàn)優(yōu)化
轉(zhuǎn)載源于:http://bm7419.com/article8/isghip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、小程序開發(fā)、微信小程序手機網(wǎng)站建設(shè)、網(wǎng)站導航企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化