mariadb的explain分析及InnoDB存储引擎
id:?當(dāng)前查詢語句中,每個(gè)SELECT語句的編號(hào), ? ??id: 1 ?表示簡單類型的查詢
復(fù)雜類型的查詢有三種:簡單子查詢,用于FROM中的子查詢,聯(lián)合查詢:UNION
注意:UNION查詢的分析結(jié)果會(huì)出現(xiàn)一張額外匿名臨時(shí)表
select_type:
簡單查詢?yōu)镾IMPLE
復(fù)雜查詢:
SUBQUERY: 簡單子查詢
?DERIVED: 用于FROM中的子查詢
UNION:UNION語句的第一個(gè)之后的SELECT語句
UNION RESULT: 匿名臨時(shí)表
?
簡單子查詢示例:
?
PRIMARY:主查詢或整個(gè)查詢語句的最外層查詢
SUBQUERY:用在where子句中的子查詢
?
聯(lián)合查詢示例:
?
?
table:SELECT語句關(guān)聯(lián)到的表
?
type:關(guān)聯(lián)類型,或訪問類型,即MariaDB決定的如何去查詢表中的行的方式
ALL: 全表掃描
index:根據(jù)索引的次序進(jìn)行全表掃描;如果在Extra列出現(xiàn)“Using index”表示了使用覆蓋索引,而非全表掃描
?range:有范圍限制的根據(jù)索引實(shí)現(xiàn)范圍掃描;掃描位置始于索引中的某一點(diǎn),結(jié)束于另一點(diǎn)
ref: 根據(jù)索引返回表中匹配某單個(gè)值的所有行
eq_ref:僅返回一行,但需要額外與某個(gè)參考值做比較
const, system: 直接返回單個(gè)行
性能從上到下依次提升
possible_keys:查詢可能會(huì)用到的索引
key: 查詢中使用了的索引
key_len: 在索引中使用的字節(jié)數(shù)
ref: 在利用key字段所表示的索引完成查詢時(shí)所有的列或某常量值
rows:MariaDB估計(jì)為找所有的目標(biāo)行而需要讀取的行數(shù)
Extra:額外信息
Using index:MySQL將會(huì)使用覆蓋索引,以避免訪問表
Using where:MySQL服務(wù)器將在存儲(chǔ)引擎檢索后,再進(jìn)行一次過濾
Using temporary:MySQL對(duì)結(jié)果排序時(shí)會(huì)使用臨時(shí)表
Using filesort:對(duì)結(jié)果使用一個(gè)外部索引排序
?
InnoDB:
處理大量的短期事務(wù)
數(shù)據(jù)存儲(chǔ)于“表空間(table space)”中
(1) 所有InnoDB表的數(shù)據(jù)和索引放置于同一個(gè)表空間中
表空間文件:datadir定義的目錄下
數(shù)據(jù)文件:ibddata1, ibddata2, ...
(2) 每個(gè)表單獨(dú)使用一個(gè)表空間存儲(chǔ)表的數(shù)據(jù)和索引
innodb_file_per_table=ON ? 查看是否開啟(show global variables like 'innodb_file_%';)
數(shù)據(jù)文件(存儲(chǔ)數(shù)據(jù)和索引):tbl_name.ibd
表格式定義:tbl_name.frm
lock table students read; 只允許對(duì)students表查詢(不過仍然可以從緩存中取數(shù)據(jù)) ? 釋放:unlock table;
lock table students write; ?連查詢請(qǐng)求都不允許
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/linuxboke/p/5532204.html
總結(jié)
以上是生活随笔為你收集整理的mariadb的explain分析及InnoDB存储引擎的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 广西柳州可种什么品种蓝莓?
- 下一篇: BZOJ3160: 万径人踪灭