MySQL性能優(yōu)化實踐(很全面,值得收藏)

作者:月光中的污點

鏈接:https://www.extlight.com/2017/10/07/MySQL-性能優(yōu)化技巧/

一揪阶、題記

最近公司項目添加新功能,上線后發(fā)現(xiàn)有些功能的列表查詢時間很久患朱。原因是新功能用到舊功能的接口鲁僚,而這些舊接口的 SQL 查詢語句關(guān)聯(lián)5,6張表且編寫不夠規(guī)范,導(dǎo)致 MySQL 在執(zhí)行 SQL 語句時索引失效,進行全表掃描冰沙。原本負(fù)責(zé)優(yōu)化的同事有事請假回家侨艾,因此優(yōu)化查詢數(shù)據(jù)的問題落在筆者手中。筆者在查閱網(wǎng)上 SQL 優(yōu)化的資料后成功解決了問題拓挥,在此從全局角度唠梨,記錄和總結(jié) MySQL 查詢優(yōu)化相關(guān)技巧。

二侥啤、優(yōu)化思路

數(shù)據(jù)查詢慢当叭,不代表 SQL 語句寫法有問題。 首先盖灸,我們需要找到問題的源頭才能“對癥下藥”科展。筆者用一張流程圖展示 MySQL 優(yōu)化的思路:

image

無需更多言語,從圖中可以清楚地看出糠雨,導(dǎo)致數(shù)據(jù)查詢慢的原因有多種才睹,如:緩存失效,在此一段時間內(nèi)由于高并發(fā)訪問導(dǎo)致 MySQL 服務(wù)器崩潰甘邀;SQL 語句編寫問題琅攘;MySQL 服務(wù)器參數(shù)問題;硬件配置限制 MySQL 服務(wù)性能問題等松邪。

三坞琴、查看 MySQL 服務(wù)器運行的狀態(tài)值

如果系統(tǒng)的并發(fā)請求數(shù)不高,且查詢速度慢逗抑,可以忽略該步驟直接進行 SQL 語句調(diào)優(yōu)步驟剧辐。

執(zhí)行命令:

show status

由于返回結(jié)果太多,此處不貼出結(jié)果邮府。其中荧关,再返回的結(jié)果中,我們主要關(guān)注 “Queries”褂傀、“Threadsconnected” 和 “Threadsrunning” 的值忍啤,即查詢次數(shù)、線程連接數(shù)和線程運行數(shù)仙辟。

我們可以通過執(zhí)行如下腳本監(jiān)控 MySQL 服務(wù)器運行的狀態(tài)值

#!/bin/bash
while true
do
mysqladmin -uroot -p"密碼" ext | awk '/Queries/{q=$4}/Threads_connected/{c=$4}/Threads_running/{r=$4}END{printf("%d %d %d\n",q,c,r)}' >> status.txt
sleep 1
done

執(zhí)行該腳本 24 小時同波,獲取 status.txt 里的內(nèi)容,再次通過 awk 計算==每秒請求 MySQL 服務(wù)的次數(shù)==

awk '{q=$1-last;last=$1}{printf("%d %d %d\n",q,$2,$3)}' status.txt

復(fù)制計算好的內(nèi)容到 Excel 中生成圖表觀察數(shù)據(jù)周期性叠国。

如果觀察的數(shù)據(jù)有周期性的變化未檩,如上圖的解釋,需要修改緩存失效策略粟焊。

例如:

通過隨機數(shù)在[3,6,9] 區(qū)間獲取其中一個值作為緩存失效時間冤狡,這樣分散了緩存失效時間校赤,從而節(jié)省了一部分內(nèi)存的消耗。

當(dāng)訪問高峰期時筒溃,一部分請求分流到未失效的緩存马篮,另一部分則訪問 MySQL 數(shù)據(jù)庫,這樣減少了 MySQL 服務(wù)器的壓力怜奖。

四浑测、獲取需要優(yōu)化的 SQL 語句

4.1 方式一:查看運行的線程

執(zhí)行命令:

show processlist

返回結(jié)果:

mysql> show processlist;
+----+------+-----------+------+---------+------+----------+------------------+
| Id | User | Host      | db   | Command | Time | State    | Info             |
+----+------+-----------+------+---------+------+----------+------------------+
|  9 | root | localhost | test | Query   |    0 | starting | show processlist |
+----+------+-----------+------+---------+------+----------+------------------+
1 row in set (0.00 sec)

從返回結(jié)果中我們可以了解該線程執(zhí)行了什么命令/SQL 語句以及執(zhí)行的時間。實際應(yīng)用中歪玲,查詢的返回結(jié)果會有 N 條記錄迁央。

其中,返回的 State 的值是我們判斷性能好壞的關(guān)鍵滥崩,其值出現(xiàn)如下內(nèi)容岖圈,則該行記錄的 SQL 語句需要優(yōu)化:

Converting HEAP to MyISAM # 查詢結(jié)果太大時,把結(jié)果放到磁盤钙皮,嚴(yán)重
Create tmp table #創(chuàng)建臨時表蜂科,嚴(yán)重
Copying to tmp table on disk  #把內(nèi)存臨時表復(fù)制到磁盤,嚴(yán)重
locked #被其他查詢鎖住短条,嚴(yán)重
loggin slow query #記錄慢查詢
Sorting result #排序

4.2 方式二:開啟慢查詢?nèi)罩?/h3>

在配置文件 my.cnf 中的 [mysqld] 一行下邊添加兩個參數(shù):

slow_query_log = 1
slow_query_log_file=/var/lib/mysql/slow-query.log
long_query_time = 2

log_queries_not_using_indexes = 1

其中导匣,slowquerylog = 1 表示開啟慢查詢;slowquerylogfile 表示慢查詢?nèi)罩敬娣诺奈恢萌资保籰ongquerytime = 2 表示查詢 >=2 秒才記錄日志贡定;logqueriesnotusing_indexes = 1 記錄沒有使用索引的 SQL 語句。

注意:slowquerylog_file 的路徑不能隨便寫可都,否則 MySQL 服務(wù)器可能沒有權(quán)限將日志文件寫到指定的目錄中缓待。建議直接復(fù)制上文的路徑。

修改保存文件后渠牲,重啟 MySQL 服務(wù)旋炒。在 /var/lib/mysql/ 目錄下會創(chuàng)建 slow-query.log 日志文件。連接 MySQL 服務(wù)端執(zhí)行如下命令可以查看配置情況嘱兼。

show variables like 'slow_query%';

show variables like 'long_query_time';

測試慢查詢?nèi)罩荆?/p>

mysql> select sleep(2);
+----------+
| sleep(2) |
+----------+
|        0 |
+----------+
1 row in set (2.00 sec)

打開慢查詢?nèi)罩疚募?/p>

[root@localhost mysql]# vim /var/lib/mysql/slow-query.log
/usr/sbin/mysqld, Version: 5.7.19-log (MySQL Community Server (GPL)). started with:
Tcp port: 0  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
# Time: 2017-10-05T04:39:11.408964Z
# User@Host: root[root] @ localhost []  Id:     3
# Query_time: 2.001395  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
use test;
SET timestamp=1507178351;
select sleep(2);

我們可以看到剛才執(zhí)行了 2 秒的 SQL 語句被記錄下來了国葬。

雖然在慢查詢?nèi)罩局杏涗洸樵兟?SQL 信息,但是日志記錄的內(nèi)容密集且不易查閱芹壕。因此,我們需要通過工具將 SQL 篩選出來接奈。

MySQL 提供 mysqldumpslow 工具對日志進行分析踢涌。我們可以使用 mysqldumpslow --help 查看命令相關(guān)用法。

常用參數(shù)如下:

    -s:排序方式序宦,后邊接著如下參數(shù)
        c:訪問次數(shù)
        l:鎖定時間
        r:返回記錄
        t:查詢時間
    al:平均鎖定時間
    ar:平均返回記錄書
    at:平均查詢時間
    -t:返回前面多少條的數(shù)據(jù)
    -g:翻遍搭配一個正則表達式睁壁,大小寫不敏感

案例:

獲取返回記錄集最多的10個sql
mysqldumpslow -s r -t 10 /var/lib/mysql/slow-query.log

獲取訪問次數(shù)最多的10個sql
mysqldumpslow -s c -t 10 /var/lib/mysql/slow-query.log

獲取按照時間排序的前10條里面含有左連接的查詢語句
mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/slow-query.log

五、分析 SQL 語句

5.1 方式一:explain

篩選出有問題的 SQL,我們可以使用 MySQL 提供的 explain 查看 SQL 執(zhí)行計劃情況(關(guān)聯(lián)表潘明,表查詢順序行剂、索引使用情況等)。

用法:

explain select * from category;

返回結(jié)果:

mysql> explain select * from category;
+----+-------------+----------+------------+------+---------------+------+---------+------+------+----------+-------+
| id | select_type | table    | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra |
+----+-------------+----------+------------+------+---------------+------+---------+------+------+----------+-------+
|  1 | SIMPLE      | category | NULL       | ALL  | NULL          | NULL | NULL    | NULL |    1 |   100.00 | NULL  |
+----+-------------+----------+------------+------+---------------+------+---------+------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)

字段解釋:1) id:select 查詢序列號钳降。id相同厚宰,執(zhí)行順序由上至下;id不同遂填,id值越大優(yōu)先級越高铲觉,越先被執(zhí)行

  1. select_type:查詢數(shù)據(jù)的操作類型,其值如下:
  • simple:簡單查詢吓坚,不包含子查詢或 union

  • primary:包含復(fù)雜的子查詢撵幽,最外層查詢標(biāo)記為該值

  • subquery:在 select 或 where 包含子查詢,被標(biāo)記為該值

  • derived:在 from 列表中包含的子查詢被標(biāo)記為該值礁击,MySQL 會遞歸執(zhí)行這些子查詢盐杂,把結(jié)果放在臨時表

  • union:若第二個 select 出現(xiàn)在 union 之后,則被標(biāo)記為該值哆窿。若 union 包含在 from 的子查詢中况褪,外層 select 被標(biāo)記為 derived

  • union result:從 union 表獲取結(jié)果的 select

  1. table:顯示該行數(shù)據(jù)是關(guān)于哪張表

  2. partitions:匹配的分區(qū)

  3. type:表的連接類型,其值更耻,性能由高到底排列如下:

  • system:表只有一行記錄测垛,相當(dāng)于系統(tǒng)表

  • const:通過索引一次就找到,只匹配一行數(shù)據(jù)

  • eq_ref:唯一性索引掃描秧均,對于每個索引鍵食侮,表中只有一條記錄與之匹配。常用于主鍵或唯一索引掃描

  • ref:非唯一性索引掃描目胡,返回匹配某個單獨值的所有行锯七。用于=、< 或 > 操作符帶索引的列

  • range:只檢索給定范圍的行誉己,使用一個索引來選擇行眉尸。一般使用between、>巨双、<情況

  • index:只遍歷索引樹

  • ALL:全表掃描噪猾,性能最差

注:前5種情況都是理想情況的索引使用情況。通常優(yōu)化至少到range級別筑累,最好能優(yōu)化到 ref

  1. possible_keys:指出 MySQL 使用哪個索引在該表找到行記錄袱蜡。如果該值為 NULL,說明沒有使用索引慢宗,可以建立索引提高性能

  2. key:顯示 MySQL 實際使用的索引坪蚁。如果為 NULL奔穿,則沒有使用索引查詢

  3. key_len:表示索引中使用的字節(jié)數(shù),通過該列計算查詢中使用的索引的長度敏晤。在不損失精確性的情況下贱田,長度越短越好 顯示的是索引字段的最大長度,并非實際使用長度

  4. ref:顯示該表的索引字段關(guān)聯(lián)了哪張表的哪個字段

  5. rows:根據(jù)表統(tǒng)計信息及選用情況嘴脾,大致估算出找到所需的記錄或所需讀取的行數(shù)男摧,數(shù)值越小越好

  6. filtered:返回結(jié)果的行數(shù)占讀取行數(shù)的百分比,值越大越好

  7. extra:包含不合適在其他列中顯示但十分重要的額外信息统阿,常見的值如下:

  • using filesort:說明 MySQL 會對數(shù)據(jù)使用一個外部的索引排序彩倚,而不是按照表內(nèi)的索引順序進行讀取。出現(xiàn)該值扶平,應(yīng)該優(yōu)化 SQL

  • using temporary:使用了臨時表保存中間結(jié)果帆离,MySQL 在對查詢結(jié)果排序時使用臨時表。常見于排序 order by 和分組查詢 group by结澄。出現(xiàn)該值哥谷,應(yīng)該優(yōu)化 SQL

  • using index:表示相應(yīng)的 select 操作使用了覆蓋索引,避免了訪問表的數(shù)據(jù)行麻献,效率不錯

  • using where:where 子句用于限制哪一行

  • using join buffer:使用連接緩存

  • distinct:發(fā)現(xiàn)第一個匹配后们妥,停止為當(dāng)前的行組合搜索更多的行

注意:出現(xiàn)前 2 個值,SQL 語句必須要優(yōu)化勉吻。

5.2 方式二:profiling

使用 profiling 命令可以了解 SQL 語句消耗資源的詳細(xì)信息(每個執(zhí)行步驟的開銷)监婶。

5.2.1 查看 profile 開啟情況

select @@profiling;

返回結(jié)果:

mysql> select @@profiling;
+-------------+
| @@profiling |
+-------------+
|           0 |
+-------------+
1 row in set, 1 warning (0.00 sec)

0 表示關(guān)閉狀態(tài),1 表示開啟

5.2.2 啟用 profile

set profiling = 1;  

返回結(jié)果:

mysql> set profiling = 1;  
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> select @@profiling;
+-------------+
| @@profiling |
+-------------+
|           1 |
+-------------+
1 row in set, 1 warning (0.00 sec)

在連接關(guān)閉后,profiling 狀態(tài)自動設(shè)置為關(guān)閉狀態(tài)齿桃。

5.2.3 查看執(zhí)行的 SQL 列表

show profiles;

返回結(jié)果:

mysql> show profiles;
+----------+------------+------------------------------+
| Query_ID | Duration   | Query                        |
+----------+------------+------------------------------+
|        1 | 0.00062925 | select @@profiling           |
|        2 | 0.00094150 | show tables                  |
|        3 | 0.00119125 | show databases               |
|        4 | 0.00029750 | SELECT DATABASE()            |
|        5 | 0.00025975 | show databases               |
|        6 | 0.00023050 | show tables                  |
|        7 | 0.00042000 | show tables                  |
|        8 | 0.00260675 | desc role                    |
|        9 | 0.00074900 | select name,is_key from role |
+----------+------------+------------------------------+
9 rows in set, 1 warning (0.00 sec)

該命令執(zhí)行之前惑惶,需要執(zhí)行其他 SQL 語句才有記錄。

5.2.4 查詢指定 ID 的執(zhí)行詳細(xì)信息

show profile for query Query_ID;

返回結(jié)果:

mysql> show profile for query 9;
+----------------------+----------+
| Status               | Duration |
+----------------------+----------+
| starting             | 0.000207 |
| checking permissions | 0.000010 |
| Opening tables       | 0.000042 |
| init                 | 0.000050 |
| System lock          | 0.000012 |
| optimizing           | 0.000003 |
| statistics           | 0.000011 |
| preparing            | 0.000011 |
| executing            | 0.000002 |
| Sending data         | 0.000362 |
| end                  | 0.000006 |
| query end            | 0.000006 |
| closing tables       | 0.000006 |
| freeing items        | 0.000011 |
| cleaning up          | 0.000013 |
+----------------------+----------+
15 rows in set, 1 warning (0.00 sec)

每行都是狀態(tài)變化的過程以及它們持續(xù)的時間短纵。Status 這一列和 show processlist 的 State 是一致的带污。因此,需要優(yōu)化的注意點與上文描述的一樣香到。

5.2.5 獲取 CPU鱼冀、 Block IO 等信息

show profile block io,cpu for query Query_ID;

show profile cpu,block io,memory,swaps,context switches,source for query Query_ID;

show profile all for query Query_ID;

六、優(yōu)化手段

主要以查詢優(yōu)化悠就、索引使用和表結(jié)構(gòu)設(shè)計方面進行講解千绪。

6.1 查詢優(yōu)化

  1. 避免 SELECT *,需要什么數(shù)據(jù)理卑,就查詢對應(yīng)的字段翘紊。

  2. 小表驅(qū)動大表,即小的數(shù)據(jù)集驅(qū)動大的數(shù)據(jù)集藐唠。如:以 A帆疟,B 兩表為例,兩表通過 id 字段進行關(guān)聯(lián)宇立。

當(dāng) B 表的數(shù)據(jù)集小于 A 表時踪宠,用 in 優(yōu)化 exist;使用 in 妈嘹,兩表執(zhí)行順序是先查 B 表柳琢,再查 A 表

select * from A where id in (select id from B)

當(dāng) A 表的數(shù)據(jù)集小于 B 表時,用 exist 優(yōu)化 in润脸;使用 exists柬脸,兩表執(zhí)行順序是先查 A 表,再查 B 表

select * from A where exists (select 1 from B where B.id = A.id)
  1. 一些情況下毙驯,可以使用連接代替子查詢倒堕,因為使用 join,MySQL 不會在內(nèi)存中創(chuàng)建臨時表爆价。

  2. 適當(dāng)添加冗余字段垦巴,減少表關(guān)聯(lián)。

  3. 合理使用索引(下文介紹)铭段。如:為排序骤宣、分組字段建立索引,避免 filesort 的出現(xiàn)序愚。更多:來一份MySQL索引數(shù)據(jù)結(jié)構(gòu)及優(yōu)化清單

6.2 索引使用

6.2.1 適合使用索引的場景

  1. 主鍵自動創(chuàng)建唯一索引

  2. 頻繁作為查詢條件的字段

  3. 查詢中與其他表關(guān)聯(lián)的字段

  4. 查詢中排序的字段

  5. 查詢中統(tǒng)計或分組字段

6.2.2 不適合使用索引的場景

  1. 頻繁更新的字段

  2. where 條件中用不到的字段

  3. 表記錄太少

  4. 經(jīng)常增刪改的表

  5. 字段的值的差異性不大或重復(fù)性高

6.2.3 索引創(chuàng)建和使用原則

  1. 單表查詢:哪個列作查詢條件憔披,就在該列創(chuàng)建索引

  2. 多表查詢:left join 時,索引添加到右表關(guān)聯(lián)字段爸吮;right join 時芬膝,索引添加到左表關(guān)聯(lián)字段

  3. 不要對索引列進行任何操作(計算、函數(shù)拗胜、類型轉(zhuǎn)換)

  4. 索引列中不要使用 !=蔗候,<> 非等于

  5. 索引列不要為空,且不要使用 is null 或 is not null 判斷

  6. 索引字段是字符串類型埂软,查詢條件的值要加''單引號,避免底層類型自動轉(zhuǎn)換

違背上述原則可能會導(dǎo)致索引失效锈遥,具體情況需要使用 explain 命令進行查看

6.2.4 索引失效情況

除了違背索引創(chuàng)建和使用原則外,如下情況也會導(dǎo)致索引失效:

  1. 模糊查詢時勘畔,以 % 開頭

  2. 使用 or 時所灸,如:字段1(非索引)or 字段2(索引)會導(dǎo)致索引失效。

  3. 使用復(fù)合索引時炫七,不使用第一個索引列爬立。

index(a,b,c) ,以字段 a,b,c 作為復(fù)合索引為例:

image

6.3.1 選擇合適的數(shù)據(jù)類型6.3 數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計

  1. 使用可以存下數(shù)據(jù)最小的數(shù)據(jù)類型

  2. 使用簡單的數(shù)據(jù)類型万哪。int 要比 varchar 類型在mysql處理簡單

  3. 盡量使用 tinyint侠驯、smallint抡秆、mediumint 作為整數(shù)類型而非 int

  4. 盡可能使用 not null 定義字段,因為 null 占用4字節(jié)空間

  5. 盡量少用 text 類型,非用不可時最好考慮分表

  6. 盡量使用 timestamp 而非 datetime

  7. 單表不要有太多字段吟策,建議在 20 以內(nèi)

6.3.2 表的拆分

當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)非常大時儒士,查詢優(yōu)化方案也不能解決查詢速度慢的問題時,我們可以考慮拆分表檩坚,讓每張表的數(shù)據(jù)量變小着撩,從而提高查詢效率。

  1. 垂直拆分:將表中多個列分開放到不同的表中匾委。例如用戶表中一些字段經(jīng)常被訪問拖叙,將這些字段放在一張表中,另外一些不常用的字段放在另一張表中赂乐。插入數(shù)據(jù)時薯鳍,使用事務(wù)確保兩張表的數(shù)據(jù)一致性。

  2. 水平拆分:按照行進行拆分沪猴。例如用戶表中辐啄,使用用戶ID,對用戶ID取10的余數(shù)运嗜,將用戶數(shù)據(jù)均勻的分配到0~9的10個用戶表中壶辜。查找時也按照這個規(guī)則查詢數(shù)據(jù)。

6.3.3 讀寫分離

一般情況下對數(shù)據(jù)庫而言都是“讀多寫少”担租。換言之砸民,數(shù)據(jù)庫的壓力多數(shù)是因為大量的讀取數(shù)據(jù)的操作造成的。我們可以采用數(shù)據(jù)庫集群的方案奋救,使用一個庫作為主庫岭参,負(fù)責(zé)寫入數(shù)據(jù);其他庫為從庫尝艘,負(fù)責(zé)讀取數(shù)據(jù)演侯。這樣可以緩解對數(shù)據(jù)庫的訪問壓力。

七背亥、服務(wù)器參數(shù)調(diào)優(yōu)

7.1 內(nèi)存相關(guān)

sortbuffersize 排序緩沖區(qū)內(nèi)存大小

joinbuffersize 使用連接緩沖區(qū)大小

readbuffersize 全表掃描時分配的緩沖區(qū)大小

7.2 IO 相關(guān)

Innodblogfile_size 事務(wù)日志大小

Innodblogfilesingroup 事務(wù)日志個數(shù)

Innodblogbuffer_size 事務(wù)日志緩沖區(qū)大小

Innodbflushlogattrx_commit 事務(wù)日志刷新策略 秒际,其值如下:

0:每秒進行一次 log 寫入 cache,并 flush log 到磁盤

1:在每次事務(wù)提交執(zhí)行 log 寫入 cache狡汉,并 flush log 到磁盤

2:每次事務(wù)提交娄徊,執(zhí)行 log 數(shù)據(jù)寫到 cache,每秒執(zhí)行一次 flush log 到磁盤

7.3 安全相關(guān)

expirelogsdays 指定自動清理 binlog 的天數(shù)

maxallowedpacket 控制 MySQL 可以接收的包的大小

skipnameresolve 禁用 DNS 查找

read_only 禁止非 super 權(quán)限用戶寫權(quán)限

skipslavestart 級你用 slave 自動恢復(fù)

7.4 其他

max_connections 控制允許的最大連接數(shù)

tmptablesize 臨時表大小

maxheaptable_size 最大內(nèi)存表大小

筆者并沒有使用這些參數(shù)對 MySQL 服務(wù)器進行調(diào)優(yōu)盾戴,具體詳情介紹和性能效果請參考文章末尾的資料或另行百度寄锐。

八、硬件選購和參數(shù)優(yōu)化

硬件的性能直接決定 MySQL 數(shù)據(jù)庫的性能。硬件的性能瓶頸橄仆,直接決定 MySQL 數(shù)據(jù)庫的運行數(shù)據(jù)和效率剩膘。

作為軟件開發(fā)程序員,我們主要關(guān)注軟件方面的優(yōu)化內(nèi)容沿癞,以下硬件方面的優(yōu)化作為了解即可

8.1 內(nèi)存相關(guān)

內(nèi)存的 IO 比硬盤的速度快很多梅忌,可以增加系統(tǒng)的緩沖區(qū)容量匆帚,使數(shù)據(jù)在內(nèi)存停留的時間更長,以減少磁盤的 IO

8.2 磁盤 I/O 相關(guān)

  1. 使用 SSD 或 PCle SSD 設(shè)備谓晌,至少獲得數(shù)百倍甚至萬倍的 IOPS 提升

  2. 購置陣列卡同時配備 CACHE 及 BBU 模塊具温,可以明顯提升 IOPS

  3. 盡可能選用 RAID-10蚕涤,而非 RAID-5

8.3 配置 CUP 相關(guān)

在服務(wù)器的 BIOS 設(shè)置中,調(diào)整如下配置:

  1. 選擇 Performance Per Watt Optimized(DAPC)模式铣猩,發(fā)揮 CPU 最大性能

  2. 關(guān)閉 C1E 和 C States 等選項揖铜,提升 CPU 效率

  3. Memory Frequency(內(nèi)存頻率)選擇 Maximum Performance

九、參考資料

https://dev.mysql.com/doc/refman/5.7/en/show-status.html show status 語法

https://dev.mysql.com/doc/refman/5.7/en/show-processlist.html show processlist 語法

https://dev.mysql.com/doc/refman/5.7/en/general-thread-states.html 線程狀態(tài)

https://dev.mysql.com/doc/refman/5.7/en/explain-output.html explain 語法

https://dev.mysql.com/doc/refman/5.7/en/show-profile.html show profile 語法

http://blog.csdn.net/nightelve/article/details/17393631 MySQL 服務(wù)器參數(shù)調(diào)優(yōu)

http://blog.csdn.net/qq_22929803/article/details/51237056 MySQL 服務(wù)器參數(shù)調(diào)優(yōu)

http://blog.chinaunix.net/uid-11640640-id-3426908.html

https://segmentfault.com/a/1190000006158186

http://blog.csdn.net/gzh0222/article/details/7976127

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末达皿,一起剝皮案震驚了整個濱河市天吓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌峦椰,老刑警劉巖龄寞,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異汤功,居然都是意外死亡物邑,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門滔金,熙熙樓的掌柜王于貴愁眉苦臉地迎上來色解,“玉大人,你說我怎么就攤上這事餐茵】蒲郑” “怎么了?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵忿族,是天一觀的道長锣笨。 經(jīng)常有香客問我,道長肠阱,這世上最難降的妖魔是什么票唆? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮屹徘,結(jié)果婚禮上走趋,老公的妹妹穿的比我還像新娘。我一直安慰自己噪伊,他們只是感情好簿煌,可當(dāng)我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布氮唯。 她就那樣靜靜地躺著,像睡著了一般姨伟。 火紅的嫁衣襯著肌膚如雪惩琉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天夺荒,我揣著相機與錄音瞒渠,去河邊找鬼。 笑死技扼,一個胖子當(dāng)著我的面吹牛伍玖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播剿吻,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼窍箍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了丽旅?” 一聲冷哼從身側(cè)響起椰棘,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎榄笙,沒想到半個月后邪狞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡办斑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年外恕,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乡翅。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡鳞疲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蠕蚜,到底是詐尸還是另有隱情尚洽,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布靶累,位于F島的核電站腺毫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏挣柬。R本人自食惡果不足惜潮酒,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望邪蛔。 院中可真熱鬧急黎,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至故源,卻和暖如春污抬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绳军。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工印机, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人删铃。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓耳贬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親猎唁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 一 題記 最近公司項目添加新功能,上線后發(fā)現(xiàn)有些功能的列表查詢時間很久帐偎。原因是新功能用到舊功能的接口逐纬,而這些舊接口...
    瘋狂的代碼士閱讀 308評論 0 1
  • 數(shù)據(jù)庫優(yōu)化 sql語句優(yōu)化 索引優(yōu)化 加緩存 讀寫分離 分區(qū) 分布式數(shù)據(jù)庫(垂直切分) 水平切分 MyISAM和I...
    半瓶陽光o_o閱讀 586評論 0 2
  • 什么是數(shù)據(jù)庫? 數(shù)據(jù)庫是存儲數(shù)據(jù)的集合的單獨的應(yīng)用程序削樊。每個數(shù)據(jù)庫具有一個或多個不同的API豁生,用于創(chuàng)建,訪問漫贞,管理...
    chen_000閱讀 4,041評論 0 19
  • 兒子認(rèn)真的給妹妹唱著睡前歌迅脐,“世上只有爸爸媽媽姥姥姥爺好芍殖,……”,第一次教他唱《世上只有媽媽好》時谴蔑,他就要把歌詞改...
    慧angle閱讀 433評論 0 1
  • 愛上七夕的云霞 原創(chuàng)/阿蓮 七夕清晨的朝霞和七夕前的夜空豌骏,色彩調(diào)和,不急不躁:天空不是海軍藍隐锭,而是更清澈的...
    阿蓮簡師閱讀 230評論 2 5