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