10 MySQL 參數(shù)優(yōu)化

MySQL 性能優(yōu)化

[TOC]

MySQL 工作原理

MySQL 體系結(jié)構(gòu)

1549913724163

管理工具

MySQL服務(wù)軟件安裝后提供的命令

連接池

檢查本機(jī)是否有資源處理當(dāng)前的連接請(qǐng)求 ( 空閑的線程 內(nèi)存 )

SQL 接口

把 SQL 命令傳遞給 mysql 服務(wù)的進(jìn)程處理.

分析器

檢查執(zhí)行的SQL命令是否有語(yǔ)法錯(cuò)誤,

優(yōu)化器

優(yōu)化執(zhí)行的sql命令,使其能以最節(jié)省系統(tǒng)資源的方式執(zhí)行

查詢緩存

查詢緩存的存儲(chǔ)空間是從系統(tǒng)的物理內(nèi)存里劃分出來(lái)的,用來(lái)存儲(chǔ)查詢過的查詢結(jié)果

存儲(chǔ)引擎

軟件自帶的功能程序,是用來(lái)處理表的處理器

文件系統(tǒng)

數(shù)據(jù)庫(kù)服務(wù)器存儲(chǔ)數(shù)據(jù)的磁盤

MySQL 執(zhí)行流程

1549913788017

MySQL性能調(diào)優(yōu)思路

提高 MySQL 系統(tǒng)的性能,響應(yīng)速度

  1. 替換有問題的硬件 ( CPU/磁盤/內(nèi)存 等 )

  2. 服務(wù)程序的運(yùn)行參數(shù)調(diào)整

  3. 對(duì) SQL 查詢進(jìn)行優(yōu)化

運(yùn)行參數(shù)優(yōu)化

并發(fā)及連接控制

連接數(shù),連接超時(shí)

選項(xiàng) 說明
max_connections 允許的最大并發(fā)連接數(shù)
connect_timeout 等待連接超時(shí),默認(rèn)十秒,僅登錄時(shí)有效
wait_timeout 等待關(guān)閉連接的不活動(dòng)超時(shí)秒數(shù),默認(rèn) 28800秒 ( 8小時(shí) )
1549910455606
#查看有過的最大連接數(shù) 
mysql> show global status like "max_used_connections";
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections | 2     |
+----------------------+-------+

#查看默認(rèn)的最大連接數(shù)
mysql> show variables like "max_connections";
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+

命令行修改

set [ global ] 變量名=值

mysql> set global max_connections=501;
mysql> show variables like "max_connections";
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 501   |
+-----------------+-------+

永久修改

[mysqld]
max_connections=值

有過的最大連接數(shù)量/并發(fā)連接數(shù)=0.85

Max_used_connections / Max_used_connections=0.85

留百分之十五的空閑

緩存參數(shù)控制

緩沖區(qū),線程數(shù)量,開表數(shù)量

選項(xiàng) 說明
key_buffer_size 用于 MyISAM 引擎的關(guān)鍵索引緩存大小
sort_buffer_size 為每個(gè)要排序的線程分配此大小的緩存空間
read_buffer_size 為順序讀取表記錄保留的緩存大小
thread_cache_size 允許保存在緩存中被重用的線程數(shù)量
table_open_cache 為所有線程緩存的打開的表的數(shù)量

索引緩存

key_buffer_size = 8M

  • 當(dāng) Key_reds / Key_read_requests 較低時(shí),可適當(dāng)加大此緩存值
mysql> show global status like "key_read%";
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Key_read_requests | 6     |
| Key_reads         | 3     |
+-------------------+-------+

mysql> show variables like "key_buffer_size";
+-----------------+---------+
| Variable_name   | Value   |
+-----------------+---------+
| key_buffer_size | 8388608 |
+-----------------+---------+

排序緩存

sort_buffer_size= 256K

  • 增大此值可提高 ORDER 和 GROUP的速度
mysql> show variables like "sort_buffer_size";
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| sort_buffer_size | 262144 |
+------------------+--------+

表記錄讀取緩存

read_buffer_size

  • 此表緩存值影響 SQL 查詢的響應(yīng)速度
mysql> show variables like "read_buffer_size";
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| read_buffer_size | 131072 |
+------------------+--------+

查看可重用線程數(shù)

thread_cache_size = 9

mysql> show variables like "thread_cache_size";
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| thread_cache_size | 9     |
+-------------------+-------+]

查看當(dāng)前的線程重用狀態(tài)

mysql> show global status like "threads_%";
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_cached    | 0     |
| Threads_connected | 2     |
| Threads_created   | 2     |
| Threads_running   | 2     |
+-------------------+-------+

查看已打開,打開過多少個(gè)表

mysql> show global status like "open%tables";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_tables   | 104   |
| Opened_tables | 111   |
+---------------+-------+

查看可緩存多少個(gè)打開的表

mysql> show variables like "table_open_cache";
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| table_open_cache | 2000  |
+------------------+-------+
1549911531311

顯示查詢緩存的設(shè)置

一般生產(chǎn)環(huán)境不開查詢緩存,用專門的緩存中間件做查詢緩存,例如 memcache redis mogodb

query_cache_type = 0 | 1 | 2

mysql> show variables like "%query_cache%";
+------------------------------+---------+
| Variable_name                | Value   |
+------------------------------+---------+
| have_query_cache             | YES     |
| query_cache_limit            | 1048576 |
| query_cache_min_res_unit     | 4096    |
| query_cache_size             | 1048576 |
| query_cache_type             | OFF     |
| query_cache_wlock_invalidate | OFF     |
+------------------------------+---------+

query_cache_wlock_invalidate off

當(dāng)對(duì)myisam存儲(chǔ)引擎的表,查詢的時(shí)候,若此時(shí)有客戶端對(duì)表執(zhí)行寫操作,Mysql服務(wù)不會(huì)從緩存里查找數(shù)據(jù)返回給客戶端,而是等寫操作完成后,重新從表里查找數(shù)據(jù)返回給客戶端.

顯示查詢緩存數(shù)據(jù)信息

mysql> show global status like "qcache%";
+-------------------------+---------+
| Variable_name           | Value   |
+-------------------------+---------+
| Qcache_free_blocks      | 1       |
| Qcache_free_memory      | 1031832 |
| Qcache_hits             | 0       |
| Qcache_inserts          | 0       |
| Qcache_lowmem_prunes    | 0       |
| Qcache_not_cached       | 6       |
| Qcache_queries_in_cache | 0       |
| Qcache_total_blocks     | 1       |
+-------------------------+---------+

SQL 查詢優(yōu)化

程序員編寫的SQL 復(fù)雜導(dǎo)致處理速度慢.

MySQL 日志類型

類型 用途 配置
錯(cuò)誤日志 記錄啟動(dòng)/運(yùn)行/停止過程中的錯(cuò)誤信息 log-error[=name]
查詢?nèi)罩?/td> 記錄客戶端連接和查詢操作 general-log general-log-file=
慢查詢?nèi)罩?/td> 記錄耗時(shí)較長(zhǎng)或不使用索引的查詢操作 slow-query-log slow-query-log-file= long-query-time=

優(yōu)化 SQL 查詢

  • 記錄慢查詢
選項(xiàng) 說明
slow-query-log 啟用慢查詢
slow-query-log-file= 指定慢查詢?nèi)罩疚募?/td>
long-query-time= 超過時(shí)間 ( 默認(rèn)10秒 )
log-queries-not-using-indexes 記錄為使用索引的查詢

慢查詢?nèi)罩?只記錄超過超時(shí)時(shí)間顯示查詢結(jié)果的sql命令

#開啟慢查詢?nèi)罩?[mysqld]
slow-query-log
long-query-time=1
log_queries_not_using_indexes

#重啟后 睡眠10秒
mysql> select sleep(10);

#用工具統(tǒng)計(jì)滿日志信息
mysqldumpslow test1-slow.log  #mysqldumpslow  統(tǒng)計(jì)慢日志信息

數(shù)據(jù)架構(gòu)或者存儲(chǔ)問題導(dǎo)致的數(shù)據(jù)庫(kù)響應(yīng)緩慢,考慮調(diào)整架構(gòu)或者更換固態(tài)或分布式存儲(chǔ)解決.

幫助文檔:

mysql配置文件詳解

mysql 幫助手冊(cè)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捌斧,一起剝皮案震驚了整個(gè)濱河市碗短,隨后出現(xiàn)的幾起案子嗜逻,更是在濱河造成了極大的恐慌,老刑警劉巖谐宙,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異拷橘,居然都是意外死亡睦番,警方通過查閱死者的電腦和手機(jī)欢际,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門母市,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人损趋,你說我怎么就攤上這事患久。” “怎么了浑槽?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵蒋失,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我桐玻,道長(zhǎng)篙挽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任镊靴,我火速辦了婚禮铣卡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘偏竟。我一直安慰自己煮落,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布踊谋。 她就那樣靜靜地躺著蝉仇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪殖蚕。 梳的紋絲不亂的頭發(fā)上轿衔,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音睦疫,去河邊找鬼害驹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛笼痛,可吹牛的內(nèi)容都是我干的裙秋。 我是一名探鬼主播琅拌,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼摘刑!你這毒婦竟也來(lái)了进宝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤枷恕,失蹤者是張志新(化名)和其女友劉穎党晋,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體徐块,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡未玻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了胡控。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扳剿。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖昼激,靈堂內(nèi)的尸體忽然破棺而出庇绽,到底是詐尸還是另有隱情,我是刑警寧澤橙困,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布瞧掺,位于F島的核電站,受9級(jí)特大地震影響凡傅,放射性物質(zhì)發(fā)生泄漏辟狈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一夏跷、第九天 我趴在偏房一處隱蔽的房頂上張望哼转。 院中可真熱鬧,春花似錦拓春、人聲如沸释簿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)庶溶。三九已至,卻和暖如春懂鸵,著一層夾襖步出監(jiān)牢的瞬間偏螺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工匆光, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留套像,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓终息,卻偏偏與公主長(zhǎng)得像夺巩,于是被迫代替她去往敵國(guó)和親贞让。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

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