溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時間:2020-08-01 12:21:03 來源:網(wǎng)絡(luò) 閱讀:2124 作者:dscp_linux 欄目:MySQL數(shù)據(jù)庫

1 Mysql工作原理

1.1 mysql體系結(jié)構(gòu):

連接池

sql接口

分析器

優(yōu)化器

查詢緩存

存儲引擎

文件系統(tǒng)

管理工具

1.2 永久定義:

修改配置文件/etc/my.cnf

[mysql]

變量名=值

1.3 臨時定義:

mysql>set (global) 變量=


2 性能調(diào)優(yōu)

2.1 訪問數(shù)據(jù)時,出結(jié)果特別慢。分析可能是由哪些原因?qū)е碌模?/span>

(1)硬件配置低:查看應(yīng)用設(shè)備的使用率CPU  內(nèi)存   存儲(硬盤)

利用top,sar,uptime,free等;

(2)網(wǎng)絡(luò)帶寬: 使用網(wǎng)絡(luò)測速軟件 網(wǎng)速;

(3)提供數(shù)據(jù)庫服務(wù)軟件版本低:

2.2 并發(fā)及連接控制

mysql> show variables like “max_connections”;  #允許的最大并發(fā)連接數(shù)

mysql> show variables like "connect_timeout"; #建立連接時,三次握手的超時時間

mysql> show variables like "wait_timeout"; #建立連接后,等待斷開連接的超時時間

查看當(dāng)前已使用的連接數(shù):

mysql>show global status like “max_used_connections”;

查看默認(rèn)的最大連接數(shù):

mysql> show variables like "max_connections";

理想比率:已使用的連接數(shù)/連接并發(fā)量<=85%

2.3 緩存參數(shù)控制

key_buffer_size  #用于myisam引擎的關(guān)鍵索引緩存大小

sort_buffer_size  #為每個要排序的線程分配此大小的緩存空間

read_buffer_size  #為順序讀取表記錄保留的緩存大小

read_rnd_buffer_size #為排序結(jié)果讀取表記錄保留的緩存大小

允許重復(fù)使用的線程的數(shù)量

mysql> show  variables like  "thread_cache_size";

為所有線程緩存打開表的數(shù)量。

table_open_cache=2000

mysql> show  variables  like "table_open_cache";

查詢緩存相關(guān)參數(shù)設(shè)置?

MySQL> show   variables  like "query_cache%";

查詢緩存寫鎖有效 存儲引擎(MYISAM)

query_cache_wlock_invalidate | OFF    

query_cache_type             0|1|2

0 關(guān)閉   不存儲

1 開啟   無條件存儲

2 開啟   指定存儲才存儲

 

查詢緩存統(tǒng)計(jì)信息?

MySQL> show  global  status  like  "qcache%";

Qcache_hits            0      #查詢緩存成功的次數(shù)(就是在緩存中找到查詢的結(jié)果)

Qcache_inserts          0       #總的

Qcache_lowmem_prunes   0  #每次緩存達(dá)到一定數(shù)值,重新清空的次數(shù),清空的次數(shù)越大代表緩存的使用不合理(總是被用完)

 

2.4 Mysql日志類型

(1)錯誤日志:記錄數(shù)據(jù)庫服務(wù)在啟動和運(yùn)行過程中產(chǎn)生的信息,默認(rèn)啟用

/etc/my.cnf中的log-error=/var/log/mysqld.log

(2)binlog日志:默認(rèn)沒有啟用。

(3)查詢?nèi)罩荆河涗浰袌?zhí)行過的SQL命令,默認(rèn)沒有啟用

vim /etc/my.cnf

[mysqld]

general-log  #默認(rèn)存儲位置 /var/lib/mysql  

默認(rèn)名稱:主機(jī)名.log

(4)慢查詢?nèi)罩荆河涗洺^指定時間顯示查詢結(jié)果的SQL命令。默認(rèn)超時時間10s。

slow-query-log #啟用慢查詢?nèi)罩?/span>

slow-query-log-file=文件名 #指定日志名稱

long-query-time=數(shù)字 #指定超時時間

默認(rèn)存儲位置 /var/lib/mysql  

默認(rèn)名稱:主機(jī)名-slow.log

[root@ser54 ~]# mysqldumpslow /var/lib/mysql/主機(jī)名-slow.log  >sql.txt

#查看慢查詢?nèi)罩?,并把查詢超時的查詢語句保存下來

log-queries-not-using-indexes #記錄未使用索引的查詢


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI