[20190524]淺談模糊查詢.txt

lfree發表於2019-05-24

[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年.
--//說不定根本撐不到那個時間,硬體已經壞了。我見過許多專案如果從效能最佳化或者可持續執行角度講.基本上屬於豆腐渣工程。
--//更加不能理解的是,使用者最終會把這些問題莫名其妙的問題歸到網路資訊中心... 無語...
--//也許拯救整個系統最好的選擇就是購買更好的硬體,來掩蓋軟體設計開發的缺陷,良好的硬體就是一塊遮羞布,如此反覆出現。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2645470/,如需轉載,請註明出處,否則將追究法律責任。

相關文章