欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

mysql性能報(bào)告怎么看,mysql性能分析語(yǔ)句

Mysql-性能分析-Profiling

Show Profile 是mysql提供可以用來(lái)分析 當(dāng)前會(huì)話(huà) 中語(yǔ)句執(zhí)行的資源消耗情況,可以用于Sql調(diào)優(yōu)的測(cè)量。

創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比冀州網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式冀州網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋冀州地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴(lài)。

請(qǐng)讀者繼續(xù)看前面的圖 SQL執(zhí)行具體細(xì)節(jié) ,左邊 Status 列展示了一條SQL執(zhí)行的從開(kāi)始到清理的整個(gè)生命周期中執(zhí)行的操作。如果在其生命周期階段出現(xiàn)如下的情況的就要重視了:

開(kāi)啟 Profiling 后,mysql會(huì)留下15條最近執(zhí)行的sql的 現(xiàn)場(chǎng) , 便于我們發(fā)現(xiàn)問(wèn)題。

Show profiles 用來(lái)查最近的15條。

Show profile 用來(lái)展示每一個(gè)SQL執(zhí)行階段的耗時(shí)清單,便于我們發(fā)現(xiàn)耗時(shí)最多的地方,然后以此為依據(jù)查找問(wèn)題所在,最后優(yōu)化SQL或者優(yōu)化mysql參數(shù)。比如耗時(shí)清單創(chuàng)建了臨時(shí)表,就要考慮表是否創(chuàng)建索引,如果創(chuàng)建了那么是否沒(méi)有用到或者失效了。

總的來(lái)說(shuō) Profiling 是一個(gè)很不錯(cuò)的mysql性能分析工具。

mysql 怎么看sql的效率

用Explain語(yǔ)法:

explain select … from … [where ...]

1、id:這是SELECT的查詢(xún)序列號(hào)

2、select_type:select_type就是select的類(lèi)型

3、table:顯示這一行的數(shù)據(jù)是關(guān)于哪張表的

4、type:這列最重要,顯示了連接使用了哪種類(lèi)別,有無(wú)使用索引,是使用Explain命令分析性能瓶頸的關(guān)鍵項(xiàng)之一。

5、possible_keys:列指出MySQL能使用哪個(gè)索引在該表中找到行

6、key:顯示MySQL實(shí)際決定使用的鍵(索引)。如果沒(méi)有選擇索引,鍵是NULL

7、key_len:顯示MySQL決定使用的鍵長(zhǎng)度。如果鍵是NULL,則長(zhǎng)度為NULL。使用的索引的長(zhǎng)度。在不損失精確性的情況下,長(zhǎng)度越短越好

8、ref:顯示使用哪個(gè)列或常數(shù)與key一起從表中選擇行。

9、rows:顯示MySQL認(rèn)為它執(zhí)行查詢(xún)時(shí)必須檢查的行數(shù)。

10、Extra:包含MySQL解決查詢(xún)的詳細(xì)信息,也是關(guān)鍵參考項(xiàng)之一。

如何查看mysql 腳本的性能

可以使用EXPLAIN語(yǔ)句查看SQL腳本性能:

EXPLAIN SELECT 語(yǔ)句;

例如學(xué)生表,其中電話(huà)字段建立了索引

學(xué)生表有6條記錄

查詢(xún)SQL語(yǔ)句的運(yùn)行效率

explain select * from students where phone like '%34%'\G

下圖rows為6,顯示該查詢(xún)掃描了6行記錄,沒(méi)有利用到索引

explain select * from students where phone like '45%'\G

下圖rows為1,顯示該查詢(xún)掃描了1行記錄,利用到了索引

兩圖比較like匹配查詢(xún)

第一種寫(xiě)法 '%34%'?掃描了6行,索引未被利用;第二種寫(xiě)法?'45%' 掃描1行,索引發(fā)揮作用,效率更高。

如何查看mysql數(shù)據(jù)庫(kù)的性能

如何提高M(jìn)ySQL Limit查詢(xún)的性能?

在MySQL數(shù)據(jù)庫(kù)操作中,我們?cè)谧鲆恍┎樵?xún)的時(shí)候總希望能避免數(shù)據(jù)庫(kù)引擎做全表掃描,因?yàn)槿頀呙钑r(shí)間長(zhǎng),而且其中大部分掃描對(duì)客戶(hù)端而言是沒(méi)有意義的。其實(shí)我們可以使用Limit關(guān)鍵字來(lái)避免全表掃描的情況,從而提高效率。

有個(gè)幾千萬(wàn)條記錄的表 on MySQL 5.0.x,現(xiàn)在要讀出其中幾十萬(wàn)萬(wàn)條左右的記錄。常用方法,依次循環(huán):

select * from mytable where index_col = xxx limit offset, limit;

經(jīng)驗(yàn):如果沒(méi)有blob/text字段,單行記錄比較小,可以把 limit 設(shè)大點(diǎn),會(huì)加快速度。

問(wèn)題:頭幾萬(wàn)條讀取很快,但是速度呈線(xiàn)性下降,同時(shí) mysql server cpu 99% ,速度不可接受。

調(diào)用 explain select * from mytable where index_col = xxx limit offset, limit;

顯示 type = ALL

在 MySQL optimization 的文檔寫(xiě)到"All"的解釋

A full table scan is done for each combination of rows from the previous tables. This is normally not good if the table is the first table not marked const, and usually very bad in all other cases. Normally, you can avoid ALL by adding indexes that allow row retrieval from the table based on constant values or column values from earlier tables.

看樣子對(duì)于 all, mysql 就使用比較笨的方法,那就改用 range 方式? 因?yàn)?id 是遞增的,也很好修改 sql 。

select * from mytable where id offset and id offset + limit and index_col = xxx

explain 顯示 type = range,結(jié)果速度非常理想,返回結(jié)果快了幾十倍。

Limit語(yǔ)法:

SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset

LIMIT子句可以被用于強(qiáng)制 SELECT 語(yǔ)句返回指定的記錄數(shù)。LIMIT接受一個(gè)或兩個(gè)數(shù)字參數(shù)。參數(shù)必須是一個(gè)整數(shù)常量。

如果給定兩個(gè)參數(shù),第一個(gè)參數(shù)指定第一個(gè)返回記錄行的偏移量,第二個(gè)參數(shù)指定返回記錄行的最大數(shù)目。初始記錄行的偏移量是 0(而不是 1)。

為了與 PostgreSQL 兼容,MySQL 也支持句法:LIMIT # OFFSET #。

mysql SELECT * FROM table LIMIT 5,10; //檢索記錄行6-15

//為了檢索從某一個(gè)偏移量到記錄集的結(jié)束所有的記錄行,可以指定第二個(gè)參數(shù)為-1

mysql SELECT * FROM table LIMIT 95,-1; //檢索記錄行96-last

//如果只給定一個(gè)參數(shù),它表示返回最大的記錄行數(shù)目,換句話(huà)說(shuō),LIMIT n 等價(jià)于 LIMIT 0,n

mysql SELECT * FROM table LIMIT 5; //檢索前5個(gè)記錄行

MySQL的limit給分頁(yè)帶來(lái)了極大的方便,但數(shù)據(jù)量一大的時(shí)候,limit的性能就急劇下降。同樣是取10條數(shù)據(jù),下面兩句就不是一個(gè)數(shù)量級(jí)別的。

select * from table limit 10000,10

select * from table limit 0,10

文中不是直接使用limit,而是首先獲取到offset的id然后直接使用limit size來(lái)獲取數(shù)據(jù)。根據(jù)他的數(shù)據(jù),明顯要好于直接使用limit。

這里我具體使用數(shù)據(jù)分兩種情況進(jìn)行測(cè)試。

1、offset比較小的時(shí)候:

select * from table limit 10,10

//多次運(yùn)行,時(shí)間保持在0.0004-0.0005之間

Select * From table Where vid >=(Select vid From table Order By vid limit 10,1) limit 10

//多次運(yùn)行,時(shí)間保持在0.0005-0.0006之間,主要是0.0006

結(jié)論:偏移offset較小的時(shí)候,直接使用limit較優(yōu)。這個(gè)顯然是子查詢(xún)的原因。

2、offset大的時(shí)候:

select * from table limit 10000,10

//多次運(yùn)行,時(shí)間保持在0.0187左右

Select * From table Where vid >=(Select vid From table Order By vid limit 10000,1) limit 10

//多次運(yùn)行,時(shí)間保持在0.0061左右,只有前者的1/3。可以預(yù)計(jì)offset越大,后者越優(yōu)。

分享標(biāo)題:mysql性能報(bào)告怎么看,mysql性能分析語(yǔ)句
標(biāo)題路徑:http://chinadenli.net/article33/dseigps.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)網(wǎng)站導(dǎo)航品牌網(wǎng)站設(shè)計(jì)品牌網(wǎng)站制作關(guān)鍵詞優(yōu)化

廣告

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

h5響應(yīng)式網(wǎng)站建設(shè)