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