卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

如何知道數(shù)據(jù)庫(kù)能否承受的數(shù)據(jù)量 如何分析一條SQL的性能?

如何分析一條SQL的性能?在性能測(cè)試中,我們經(jīng)常會(huì)遇到一些sql問(wèn)題。其實(shí)數(shù)據(jù)庫(kù)是近幾年性能測(cè)試中最常見(jiàn)的問(wèn)題,不是IO高就是cpu高,所以數(shù)據(jù)的優(yōu)化在性能測(cè)試過(guò)程中占據(jù)了非常重要的位置。這里我將介紹

如何分析一條SQL的性能?

在性能測(cè)試中,我們經(jīng)常會(huì)遇到一些sql問(wèn)題。其實(shí)數(shù)據(jù)庫(kù)是近幾年性能測(cè)試中最常見(jiàn)的問(wèn)題,不是IO高就是cpu高,所以數(shù)據(jù)的優(yōu)化在性能測(cè)試過(guò)程中占據(jù)了非常重要的位置。這里我將介紹msyql性能調(diào)優(yōu)過(guò)程中常用的三個(gè)利器:

1、慢速查詢(分析sql問(wèn)題)

2.解釋(展示了mysql如何使用索引來(lái)處理select語(yǔ)句和連接表??梢詭椭x擇更好的索引和編寫(xiě)更優(yōu)化的查詢語(yǔ)句)

(查詢SQL將執(zhí)行多長(zhǎng)時(shí)間,并了解CPU/內(nèi)存的使用情況,系統(tǒng)鎖、表鎖執(zhí)行需要多長(zhǎng)時(shí)間等。)

首先,讓我們 讓我們談?wù)刴ysql ■慢速查詢。

1.配置已打開(kāi)

Linux:

添加mysql配置文件

log-slow-qu:。

在的[mysqld]中添加以下語(yǔ)句:

log-slow-qu: w:

使用mysql 自己的命令mysqldumpslow查看。

公共命令

-s ORD:只考慮包含該字符串:的stmts

s,順序,不夠詳細(xì)。我用了,包括看代碼。,主要是c,t,l,r和ac,at,al,ar,按照查詢次數(shù),時(shí)間,鎖時(shí)間,返回的記錄數(shù)排序,前面有-t,表示top n,即返回多少條數(shù)據(jù)-g,后面可以寫(xiě)一個(gè)正則匹配模式,不區(qū)分大小寫(xiě)。

mysqldumpslow-s c-t 20 host-slow . log

mysqldumpslow-s r-t 20 host-slow . log

上面的命令可以顯示20條被訪問(wèn)最多的sql語(yǔ)句和20條返回最多記錄集的sql語(yǔ)句。

myqldumslow-T10-t-g "左連接 "host-slow.log這是根據(jù)時(shí)間返回左連接的前10個(gè)sql語(yǔ)句。

然后是解釋。

如何使用:

執(zhí)行explain select * from RES _ user order by modified time limit 0,1000以獲得以下結(jié)果:

顯示結(jié)果分析:

表|類(lèi)型|可能的關(guān)鍵字|關(guān)鍵字|關(guān)鍵字|引用|行|額外

解釋欄的解釋:

桌子

顯示該行中的數(shù)據(jù)是關(guān)于哪個(gè)表的。

類(lèi)型

這是顯示所使用的連接類(lèi)型的重要列。連接類(lèi)型從最好到最差依次為const、eq_reg、ref、range、indexhe和ALL。

可能的鍵

顯示可能應(yīng)用于此表的索引。如果為空,則沒(méi)有可能的索引。您可以從相關(guān)域的WHERE語(yǔ)句中選擇適當(dāng)?shù)恼Z(yǔ)句。

實(shí)際使用的索引。如果為NULL,則不使用索引。在極少數(shù)情況下,MYSQL會(huì)選擇一個(gè)不夠優(yōu)化的索引。在這種情況下,可以在SELECT語(yǔ)句中使用US:#)

沒(méi)有找到理想的索引,所以對(duì)于上一個(gè)表中的每個(gè)行組合,MYSQL檢查使用哪個(gè)索引,并使用它從表中返回行。這是使用索引的最慢的連接之一。

使用文件排序

當(dāng)您看到這種情況時(shí),查詢需要優(yōu)化。MYSQL需要采取額外的步驟來(lái)找出如何對(duì)返回的行進(jìn)行排序。它根據(jù)存儲(chǔ)排序鍵值和匹配條件的所有行的連接類(lèi)型和行指針對(duì)所有行進(jìn)行排序。

使用索引

從只使用索引中的信息而不讀取實(shí)際操作的表中返回列數(shù)據(jù),當(dāng)表中所有請(qǐng)求的列都是同一索引的一部分時(shí),會(huì)發(fā)生這種情況。

使用臨時(shí)

當(dāng)您看到這種情況時(shí),查詢需要優(yōu)化。這里,MYSQL需要?jiǎng)?chuàng)建一個(gè)臨時(shí)的

表來(lái)存儲(chǔ)結(jié)果,這通常發(fā)生在不同的列集上,而不是ORDER BY上。

使用位置

WHERE子句用于限制哪些行將匹配下一個(gè)表或返回給用戶。這將會(huì)發(fā)生,如果你不 我不想返回表中的所有行,并且連接類(lèi)型是ALL或index,或者查詢有問(wèn)題。

不同連接類(lèi)型的說(shuō)明(按效率順序)

系統(tǒng)

該表只有一行:系統(tǒng)表。這是const連接類(lèi)型的特殊情況。

常數(shù)

表中記錄的最大值可以匹配該查詢(索引可以是主鍵或唯一索引)。因?yàn)橹挥幸恍?,所以這個(gè)值實(shí)際上是一個(gè)常量,因?yàn)镸YSQL先讀取這個(gè)值,然后把它當(dāng)作一個(gè)常量。

eq_ref

在連接中,MYSQL在查詢時(shí)從前面的表中讀取一條記錄,在查詢索引為主鍵或唯一鍵的所有記錄時(shí)使用。

裁判員

只有當(dāng)查詢使用非唯一鍵、主鍵或這些類(lèi)型的一部分(例如,使用最左邊的前綴)時(shí),才會(huì)出現(xiàn)這種連接類(lèi)型。對(duì)于前一個(gè)表的每個(gè)行聯(lián)合,將從該表中讀取所有記錄。這種類(lèi)型很大程度上取決于根據(jù)索引匹配了多少記錄——越少越好。

范圍

這種連接類(lèi)型使用索引返回某個(gè)范圍內(nèi)的行,如gt或lt;當(dāng)你尋找某物時(shí)會(huì)發(fā)生什么。

指數(shù)

這種連接類(lèi)型聯(lián)合掃描前一個(gè)表中的每一條記錄(比全部掃描更好,因?yàn)樗饕ǔP∮诒頂?shù)據(jù))

全部

這對(duì)于一種連接類(lèi)型來(lái)說(shuō),聯(lián)合掃描每個(gè)先前的記錄通常是不好的,應(yīng)該盡可能避免這種情況。

然后是側(cè)寫(xiě)。

我們可以先用它

mysqlgt選擇@ @分析

-

| @ @剖析|

-

| 0 |

-

集合中的1行(0.00秒),查看是否已啟用profile,以及profile ng。

該值為0,可通過(guò)以下方法獲得

mysqlgt集合分析1

查詢正常,0行受影響(0.00秒)

mysqlgt選擇@ @分析

-

| @ @剖析|

-

| 1 |

-

集合中的1行(0.00秒)

啟用。啟用概要分析后,我們執(zhí)行一個(gè)查詢語(yǔ)句,例如:

SELECT * FROM res_user ORDER BY修改的時(shí)間限制

0,1000

mysqlgt顯示個(gè)人資料

- - -

-

|查詢ID |持續(xù)時(shí)間|查詢|

- - -

-

| 1 | 0.00012200 |選擇@@profiling |

| 2 | 1.54582000 |從res_user中選擇res_id

按修改的時(shí)間限制0,3 |排序

- - -

-

集合中的2行(0.00秒)注意:Query_ID表示剛剛執(zhí)行的查詢語(yǔ)句。

mysqlgt顯示個(gè)人資料f或查詢2

- -

|狀態(tài)|持續(xù)時(shí)間|

- -

|開(kāi)始| 0.000013 |

|檢查查詢| 0.000035 |的查詢緩存

|打開(kāi)表格| 0.000009 |

|系統(tǒng)鎖定| 0.000002 |

|表鎖| 0.000015 |

| init | 0.000011 |

|優(yōu)化| 0.000003 |

|統(tǒng)計(jì)| 0.000006 |

|正在準(zhǔn)備| 0.000006 |

|正在執(zhí)行| 0.000001 |

|排序結(jié)果| 1.545565 |

|發(fā)送數(shù)據(jù)| 0.000038 |

| end | 0.000003 |

|查詢結(jié)束| 0.000003 |

|正在釋放項(xiàng)目| 0.000069 |

|將結(jié)果存儲(chǔ)在查詢緩存中| 0.000004 |

|記錄慢速查詢| 0.000001 |

|記錄慢速查詢| 0.000033 |

|清理| 0.000003 |

- -

集合中有19行(0.00秒)

結(jié)論:我們可以看到這條查詢語(yǔ)句的執(zhí)行過(guò)程和時(shí)間,總時(shí)間約為1.545s,此時(shí)我們?cè)賵?zhí)行一次。

mysqlgt通過(guò)修改時(shí)間限制0,3從res_user ORDER中選擇res_id

-

| res_id |

-

| 1000305 |

| 1000322 |

| 1000323 |

-

集合中的3行(0.00秒)

mysqlgt顯示個(gè)人資料

-- - -

|查詢ID |持續(xù)時(shí)間|查詢|

- - -

| 1 | 0.00012200 |選擇@@profiling |

| 2 | 1.54582000 |根據(jù)修改的時(shí)間限制0,3 |從res_user ORDER中選擇res_id

| 3 | 0.00006500 | SELECT R

數(shù)據(jù)庫(kù)數(shù)據(jù)量有多大?

這會(huì)占用文件系統(tǒng)的空間。例如,表空間的大小是10g,使用1g。你的統(tǒng)計(jì)是按照10g計(jì)算的。select sum(bytes)/1024/1024/1024 from DBA _ segments有多少數(shù)據(jù)?