最近幾天看了有關(guān)SQL優(yōu)化的知識(shí),當(dāng)我們SQL語(yǔ)句在數(shù)據(jù)庫(kù)中做查詢操作的時(shí)候,隨著數(shù)據(jù)表中的數(shù)據(jù)量越來(lái)越大,查詢起來(lái)耗費(fèi)的時(shí)間也越來(lái)越長(zhǎng),這個(gè)時(shí)候就需要我們對(duì)數(shù)據(jù)庫(kù)來(lái)做一些優(yōu)化,以便數(shù)據(jù)庫(kù)能快速的執(zhí)行出結(jié)果。涉及的概念大致有:索引、分區(qū)、執(zhí)行計(jì)劃、SQL語(yǔ)句的編寫(xiě)規(guī)則、數(shù)據(jù)庫(kù)本身的優(yōu)化等等。
在大多數(shù)情況下,緩慢的延遲是由查詢或鎖引起的。通過(guò)監(jiān)控查詢和鎖,您可以深入和隔離SQL語(yǔ)句和鎖,這將耗費(fèi)大量時(shí)間。也可使用云吶數(shù)據(jù)庫(kù)監(jiān)控和數(shù)據(jù)庫(kù)查詢監(jiān)控自定義查詢。
盲注就是在sql注入過(guò)程中,sql語(yǔ)句執(zhí)行的選擇后,選擇的數(shù)據(jù)不能回顯到前端頁(yè)面。此時(shí),我們需要利用一些方法進(jìn)行判斷或者嘗試,這個(gè)過(guò)程稱之為盲注。
我們通過(guò)一套白名單機(jī)制來(lái)實(shí)現(xiàn)兼容性目標(biāo)。使用白名單機(jī)制是基于如下幾點(diǎn)考量。第一點(diǎn)考慮到系統(tǒng)可用資源(主要是內(nèi)存)的限制,一般不會(huì)在所有的表的所有上都創(chuàng)建列索引,當(dāng)一個(gè)查詢語(yǔ)句需要使用到列不在列存中存在時(shí),其不能在列存上執(zhí)行。第二點(diǎn),基于性能的的考量,我們完全重寫(xiě)了一套面向列存的SQL執(zhí)行引擎,包括其中所有的物理執(zhí)行算子和表達(dá)式計(jì)算,其所覆蓋的場(chǎng)景相對(duì)MySQL原生行存能夠支持的范圍有欠缺。當(dāng)下發(fā)的SQL中包含一些IMCI執(zhí)行引擎不能支持的算子片段或者列類型時(shí),需要能能夠識(shí)別攔截并切換回行存執(zhí)行。