一、SQL執(zhí)行過程
1、用戶連接數(shù)據(jù)庫,執(zhí)行SQL語句;
2、先在內(nèi)存進(jìn)行內(nèi)存讀,找到了所需數(shù)據(jù)就直接交給用戶工作空間;
3、內(nèi)存讀失敗,也就說在內(nèi)存中沒找到支持SQL所需數(shù)據(jù),就進(jìn)行物理讀,也就是到磁盤中查找;
4、找到的數(shù)據(jù)放到內(nèi)存中,在內(nèi)存進(jìn)行數(shù)據(jù)過濾再放到會(huì)話工作空間。
5、假設(shè)會(huì)話工作空間需要暫存結(jié)果集進(jìn)行排序,但空間不足的話,就會(huì)借用磁盤tmpdir,最后再將結(jié)果返回給用戶。
注:
用戶會(huì)話空間是內(nèi)存中分配出來的一個(gè)工作空間,而innodb_buffer_pool是innodb存儲(chǔ)引擎在內(nèi)存中的一個(gè)緩沖池。
一個(gè)SQL執(zhí)行速度快并不能說明這個(gè)SQL沒有性能問題,SQL性能不是一定需要利用并發(fā)來測(cè)試,主要是看其資源消耗點(diǎn)。