(相關(guān)資料圖)
sql語(yǔ)句: "show global status like "Com_______";"結(jié)果: +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Com_binlog | 0 | | Com_commit | 7 | | Com_delete | 2 | | Com_insert | 10 | | Com_repair | 0 | | Com_revoke | 0 | | Com_select | 1400 | | Com_signal | 0 | | Com_update | 2 | | Com_xa_end | 0 | +---------------+-------+即: 當(dāng)前數(shù)據(jù)庫(kù)查詢了1400次數(shù),插入了1條數(shù)據(jù),刪除了2條,更新了條;針對(duì)數(shù)據(jù)庫(kù)優(yōu)化 我們只需要關(guān)注查詢次數(shù)即可,因?yàn)槲覀儾僮髯疃嗟囊簿褪遣樵? 慢查詢?nèi)罩居涗浟怂袌?zhí)行時(shí)間超過(guò)指定參數(shù)(long_query_time,單位:秒,默認(rèn)10秒)的所有SQL語(yǔ)句的日志。
MySQL的慢查詢?nèi)罩灸J(rèn)沒(méi)有開(kāi)啟,需要在MySQL的配置文件(/etc/my,cnf)中配置如下信息:
SQL語(yǔ)句: show variables like "slow_query_log";結(jié)果:+----------------+-------+ | Variable_name | Value | +----------------+-------+ | slow_query_log | OFF | +----------------+-------+ 1 row in set (0.00 sec) # 我們可以看到日志默認(rèn)為 關(guān)閉狀態(tài)! 如需開(kāi)啟 修改配置文件(/etc/my,cnf)#開(kāi)啟MySQL慢日志查詢開(kāi)關(guān)show_query_log=1#設(shè)置慢日志的時(shí)間為2秒,SQL語(yǔ)句執(zhí)行超過(guò)2s即為慢查詢,然后就會(huì)記錄慢查詢?nèi)罩緇ong_query_time=2"“”配置文件中加入如上參數(shù)即可!"“”注意?。?!# 修改完配置文件需要重啟MySQL服務(wù)!執(zhí)行SQL語(yǔ)句查看是否支持profiling select @@have_profiling; # 結(jié)果: +------------------+ | @@have_profiling | +------------------+ | YES | +------------------+ # 可以看到我們當(dāng)前數(shù)據(jù)庫(kù)是支持profile操作的# 1。查看是否開(kāi)啟profiling select @@profiling; 結(jié)果: +-------------+ | @@profiling | +-------------+ | 0 | +-------------+# 2.開(kāi)啟profiling set profiling=1;# 查看每一條SQL的耗時(shí)基本情況show profiles;# 查看指定query_id的SQL語(yǔ)句各個(gè)階段的耗時(shí)情況show profile for query query_id;# 查看指定query_id的SQL語(yǔ)句CPU的使用情況show profile cpu for query query_id;注意:query_id 為日志中記錄的id號(hào) 可通過(guò)第一條指令看到!explain 或者 desc命令獲取MySQL如何執(zhí)行select語(yǔ)句的信息,包括在select語(yǔ)句執(zhí)行過(guò)程中表如何連接和連接的順序。
語(yǔ)法:
# 直接在select語(yǔ)句之前加上關(guān)鍵字explain/descexplain select 字段列表 from 表名 where 條件;# 例如:explain select name from t1 where id=1;# 結(jié)果:+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------------+| 1 | SIMPLE | t1 | NULL | ALL | NULL | NULL | NULL | NULL | 3 | 33.33 | Using where |+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------------+# explain 執(zhí)行計(jì)劃中各字段的含義1、idselect查詢的序列號(hào),表示查詢中執(zhí)行select的子句或者是操作表的順序(id相同,執(zhí)行順序從上到下;id不同。值越大越先執(zhí)行!)。2、select_type表示select的類(lèi)型,常見(jiàn)的取值有:simple(簡(jiǎn)單表,即不使用表連接或者子查詢)、primary (主查詢,即外層的查詢)、union (union中的第二個(gè)或者后面的查詢語(yǔ)句)、subquery (select/where之后包含子查詢)等3、type表示連接類(lèi)型,性能由好到差的連接類(lèi)型為NULL、system、const、eq_ref、ref、range、index、all。4、possible_key顯示可能應(yīng)用在這張表上的索引、一個(gè)或者多個(gè)。5、key實(shí)際使用的索引,如果為NULL、則沒(méi)有使用索引。6、key_len表示索引中使用的字節(jié)數(shù),該值為索引字段最大可能長(zhǎng)度,并非實(shí)際使用長(zhǎng)度、在不損失精確性的前提下、長(zhǎng)度越短越好。8、rowsmysql認(rèn)為必須要執(zhí)行查詢的行數(shù),在innodb引擎的表中,是一個(gè)估計(jì)值,可能是并不總是準(zhǔn)確的。9、filtered表示返回結(jié)果的行數(shù)占需要讀取行數(shù)的百分比,filtered的值越大越好。10、extra代表前邊字段中的值沒(méi)有展示出來(lái)的信息會(huì)在這個(gè)地方展示!# 重點(diǎn)關(guān)注:type、possible_key、key、key_len# 參考字段:rows、extra
[MySQL 如何分析性能]-天天快看點(diǎn)
環(huán)球微動(dòng)態(tài)丨Python從零到壹丨圖像
知識(shí)拷問(wèn):工作站和服務(wù)器哪個(gè)更適
今日播報(bào)!許昌召開(kāi)全市普惠養(yǎng)老再貸
這樣的暑假規(guī)劃,讓你的美本申請(qǐng)變
中國(guó)星辰|“+北斗”應(yīng)用規(guī)?;l(fā)展
北斗路上那些事——貴陽(yáng)衛(wèi)星觀測(cè)站
匈牙利布達(dá)佩斯城市大學(xué)校長(zhǎng)巴赫曼
西安海棠職業(yè)學(xué)院召開(kāi)月度安全管理
全球速讀:時(shí)政Vlog丨機(jī)場(chǎng)接機(jī)直播