[20190524]淺談模糊查詢.txt
--//一臺生產系統遇到監聽進程莫名down的狀況,3月份曾經遇到的狀況,連接:http://blog.itpub.net/267265/viewspace-2638863/
--//當時的分析:內存不足(機器內存4G相對偏小),磁盤IO不足,sql語句沒有很好優化,沒有使用hugepages。
--//實際上最本質的問題是SQL語句,這套系統已經運行6年以上,裏面一些sql採用模糊查詢也就是使用like '%姓名%'之類的查詢條件.
--//首先提一下監聽進程莫名down的問題,該版本10.2.0.4有1個bug,致使監聽down掉.要打p6139856_10204_Linux-x86-64.zip補丁.
--//實際上這個bug通常出如今內存不足CPU資源不足的狀況下才會激發。
1.關於模糊查詢:
--//實際上這套系統上線我就針對這個問題提出本身的建議,開發每每拿用戶的需求搪塞,從用戶角度講,確實須要這樣的功能.
--//好比像姓名的模糊查詢,操做用戶難道不知道查詢的姓嗎?非也,實際上大部分狀況下是知道的,最多的狀況下就是一些姓不會讀
--//或者讀不對,還有就是拼音開頭是z,c,s,zh,ch,sh,j之類的翻許多頁能找到(注:大部分操做人員使用紫光拼音),一些常常打的字自
--//動調整到前面)。因此講操做人員輸入姓不會打的機率很低。徹底沒有必要千篇一概的查詢like '%姓名%'。
--//再好比查詢體檢編號的問題,也是使用模糊查詢,這套系統是體檢系統,爲了與住院病人編號相互區別。編碼時在開頭加入'tj'標識.
--//開發爲了體驗用戶操做的方便,也是使用模糊查詢,也就是不用輸入tj也能夠查詢。而實際上操做用戶根本不領你這個情,查詢條件
--//都是like '%tjNNNNN%',我一掃描共享池就能看到這樣的狀況。
2.個人建議:
--//實際就是給模糊查詢設置一點門檻。
--//就是在邊上設計一個按鈕,選上就是模糊查詢,執行條件變成相似就是like '%姓名%'的模糊查詢,不選就是like '姓名%'的查詢。這
--//樣等於給用戶增長一點點"難度"。並且隨着數據量增長,操做人員會慢慢體會模糊查詢的"很慢".
--//還有一種方式就是讓操做人員直接輸入%做爲模糊查詢,僅僅在一些地方提示用戶如何操做就ok了,這樣改動更小,僅僅在於一點點操
--//做人員的培訓,讓他們知道如何輸入查詢條件。
3.給開發建議:
--//從我我的角度講我不多提出沒法完成的工做,或者工做量很大的改動,即便我發現一些設計不合理,若是改動過大,我基本不提。
--//就是提也都是浪費時間。
--//有時候我想是否是開發根本不知道仍是故意而爲之,這樣的改動很難嗎?像這樣的系統即便我改用hugepages,也就是支撐1,2年.
--//說不定根本撐不到那個時間,硬件已經壞了。我見過許多項目若是從性能優化或者可持續運行角度講.基本上屬於豆腐渣工程。
--//更加不能理解的是,用戶最終會把這些問題莫名其妙的問題歸到網絡信息中心... 無語...
--//也許拯救整個系統最好的選擇就是購買更好的硬件,來掩蓋軟件設計開發的缺陷,良好的硬件就是一塊遮羞布,如此反覆出現。sql