• Feed RSS

Pages

છેલ્લા ૧૦ વર્ષ થી હું એસ કયું એલ સર્વર ના વિવિધ વર્ઝન પર કામ કરું છું અને મોટા ભાગે પેરફોરમન્સ ટ્યુનીંગ નું કામ સૌથી વધુ વખત કરવાનું આવ્યું છે. જયારે પરફોરમન્સ ટ્યુનીંગ કરતી વખતે સૌથી પેહલા ક્વિક ફિક્ષ કરવું પડે જેથી કામ શરુ થઇ જાય અને ત્યારબાદ આપણે અને પર્મેનંટ સોલ્યુશન કરી શકીએ. મોટા ભાગે એવું જોવા મળે છે કે ડેટાબેઝ ની સાઈઝ એમની અપેક્ષા કરતા વધી ગઈ હોય, ક્યારેક ૩૦૦ ગણી. ક્યારેક તકલીફ ખોટા ડેટા ટાઇપ ને કારણે હોય છે તો ક્યારેક ઈન્ડેક્ષ ને કારણે. તેથીજ આપણે જયારે પણ એપ્લિકેશન ડીઝાઇન કરીએ ત્યારે ખુબજ કાળજી રાખવી જેથી ભવિષ્ય માં આપણને તકલીફ ના પડે.

અહી, હું એવા કોમન પોઈન્ટ્સ ની વાત કરું છું કે જે એટલા સામાન્ય છે કે આપણે એના તરફ ધ્યાન નથી આપતા અને આગળ જઈ ને આપણે હેરાન થવું પડે છે.

તો, આપણે સામાન્ય એવી ગણાતી કઈ ભૂલ કરીએ છીએ?

મારા અનુભવ ને આધારે મેં ૧૦ પોઈન્ટ્સ તારવ્યા છે, જે માટે હું આર્ટીકલ ની સીરીઝ લખવાનો છું અને આ એનો પહેલો ભાગ છે.

આશા છે કે આ આર્ટીકલ તમારા ૨ પ્રશ્ન નો ઉત્તર આપી શકશે:
૧. કયા ડેટાટાઈપ યુઝ કરવા ?
૨. વેરકેર અને એનવેરકેર માં શું તફાવત છે?

સૌથી પહેલી વાત જે ધ્યાન પર આવે છે તે એ છે "ડેટાટાઈપ ની લેન્ગ્થ". જયારે આપણે ટેબલ ડીઝાઇન કરીએ છીએ ત્યારે ડેટાટાઈપ ની લેન્ગ્થ સમજી વિચારી ને પસંદ કરવી જોઈએ. જયારે આપણને ખાતરી નાં હોય કે ડેટા ની લેન્ગ્થ શું હશે ત્યારે હંમેશા "વેરીએબલ લેન્ગ્થ" ના ડેટાટાઈપ યુઝ કરવા જોઈએ, જેમકે "એડ્રેસ" માટે  એનવેરકેર યુઝ કરી શકીએ અને, જયારે આપણને ખાતરી હોય કે ડેટા ની લેન્ગ્થ શું હશે ત્યારે "ફિક્ષ લેન્ગ્થ" ના ડેટાટાઈપ યુઝ કરવા જોઇયે,જેમકે "જેન્ડર" માટે વેરકેર.


મેં  એવા ઘણા કેસ જોયા છે કે જ્યાં "યુનિકોડ" ડેટાટાઈપ યુઝ કરવામાં આવ્યો હોય પરંતુ ખરેખર એની જરૂર નથી હોતી. આના કારણે ડેટાબેઝ ની સાઈઝ  અણધારી રીતે અને અપેક્ષા બહાર ની વધી જાય છે; કહેવાની જરૂર નથી કે આ ખોટા ડેટાટાઈપ યુઝ  કરવાથી થઇ હોય શકે. એસ કયું એલ  સર્વર મુરભૂત રીતે બે પ્રકાર ના ડેટાટાઈપ સપોર્ટ કરે છે એક "યુનિકોડ" અને "નોન-યુનિકોડ". યુનિકોડ એટલે યુટીએફ -૧૬ (૧૬ બિટ પર કેરેક્ટર) જયારે નોન-યુનિકોડ એટલે યુટીએફ - ૮ (૮ બિટ પર કેરેક્ટર); હવે સ્વભાવીક છે કે જયારે તમે "યુનિકોડ" (એનવેરકેર કે એનકેર) યુઝ કરો છો ત્યારે તે ડબલ સ્પેસ રોકે છે.  યુનિકોડ ત્યારેજ યુઝ કરવા જોઈએ જયારે તમારી અપ્લીકેશન અથવા વેબસાઈત માં તમે "મલ્ટી લીન્ગ્વ્લ" સપોર્ટ આપવા માંગતા હોવ.

 તો હવે આપણે એક ઉદાહરણ જોઈએ; એક ટેબલ બનાવીશું જેમાં ૨ કોલમ હશે ૧ વેરકેર અને ૧ એનવેરકેર, પછી તેમાં ૨~૩ રેકોર્ડ ઇન્સર્ટ કરો અને len() ફન્કશન નો ઉપયોગ કરી કેરેક્ટર કાઉન્ટ કરો, અને datalength()  ફન્કશન નો ઉપયોગ કરી કેટલી સ્પેસ રોકાઇ છે તે જાણો. તમે સ્ક્રીપ્ટ અહીંથી ડાઉનલોડ કરી શકો છો.

બીજી એક વાત, આપણે જયારે ડેટા ઇન્સર્ટ કરાવીએ ત્યારે તેને ટ્રીમ કરવા જોઈએ જેથી "વ્હાઈટ સ્પેસ" જગ્યા રોકી ના લે, આ આપણે એપ્લીકેશન લેયર અથવા તો ડેટાબેઝ લેયર દ્વારા કરી શકીએ.

અહિયાં, આ દ્વારા હું એવી સલાહ આપી રહ્યો છું કે યુનિકોડ ડેટાટાઈપ ત્યારેજ યુઝ કરવા જોઈએ જયારે તમારી અપ્લીકેશન અથવા વેબસાઈત માં તમે "મલ્ટી લીન્ગ્વ્લ" સપોર્ટ આપવા માંગતા હોવ; અને ત્યારે પણ યુનિકોડ ડેટાટાઈપ ને કાળજી પૂર્વક તે કોલમ પુરતી સીમિત રાખો. એટલા માટેજ આ સૌથી અગત્ય નો અને કાળજી માંગી લેતો વિષય છે.

જેમ મેં શરૂઆત માં કહ્યું તેમ, આતો સીરીઝ નો ૧લો આર્ટીકલ છે.....માટે અહી મુલાકાત લેતા રહો.  


એસક્યુંએલ ક્લસ્ટર સર્વર માટે બેસ્ટ પ્રેક્ટીસ શું છે?


એસક્યુંએલ ક્લસ્ટર સર્વર પર સર્વિસ પેક ઇન્સ્ટોલ કરતી વખતે ક્યાં સ્ટેપ ફોલો કરવા જોઈયે ?

એસક્યુંએલ ક્લસ્ટર સર્વર નું કોન્ફિગરેશન નું રીવ્યુ કરવું હોય તો કઈ રીતે થાય?

એસક્યુંએલ ક્લસ્ટર સર્વર માટે ચેકલીસ્ટ ક્યાંથી મળશે ?

આ બધા પ્રશ્ન મોટે ભાગે દરેક ફોરુમ્સ માં જોવા મળે છે, અહિયાં તમારા રેફરન્સ માટે અમુક લીંક આપું છું જે તમારા ઉપરના પ્રશ્ન ના ઉત્તર આપશે :

http://technet.microsoft.com/en-us/library/cc785714(WS.10).aspx

http://blogs.msdn.com/jorgepc/archive/2009/01/21/how-to-quickly-check-your-sql-server-cluster-configuration-on-windows-server-2003.aspx

http://www.sql-server-performance.com/articles/clustering/clustering_best_practices_p1.aspx


અને આ બે લીંક જ્યાંથી તમે એસક્યુંએલ ક્લસ્ટર સર્વર વીશે દરેક પ્રકાર ની માહિતી મેળવી આપશે,

http://www.sql-server-performance.com/articles/clustering/index.aspx


http://technet.microsoft.com/en-us/library/cc917693.aspx

અંગ્રજી વર્સન અહી ઉપલબ્ધ છે http://www.sql-server-citation.com/2009/11/sql-server-cluster-best-practices.html
ટ્રનઝેક્શન લોગ ફૂલ શા માટે થાય છે અને તેના ઉપાય શા છે?
આ એક એવો સવાલ છે કે જેના માટે દરેક ફોરુમ્સ માં પુછાય છે જેના માટે વધુ માં વધુ બ્લોગ લખવામાં આવ્યા છે, હું પોતે પણ આ વીશે અગાઉ મારા બ્લોગ માં લખી ચુક્યો છું! આ અગાઉ જ્યારે લખ્યું હતું એ ફક્ત લીંક અને ટુંકાણ માં માહિતી હતી પરંતુ આ વખતે મારો પ્રયાસ આવો છે કે વીગતે માહિતી પ્રસ્તુત કરું.

ટ્રનઝેક્શન લોગ નું ફૂલ થઈ જવું એ એક એવી સમસ્યા છે કે જે સામાન્ય છે અને લગભગ દરેક ડેતાબેઝ એડમીન પોતાની કરિયર માં એક વખત તો આ આનુંભાવે જ છે. તો હવે તમને થતું હશે કે
૧ આ ટ્રનઝેક્શન લોગ શું છે ?
૨ શા માટે ટ્રનઝેક્શન લોગ ફૂલ થાય છે?
૩ શા માટે મારા સર્વર પર આ સમસ્યા છે?
૪ આ સમસ્યા નો ઉપાય શું છે?

અહા, આ બધું મને સમાજ નથી પડી, વારુ તો હવે આને વિગતે સમજીએ અને આ માટે એ સમજવું અનિવાર્ય છે કે "ટ્રનઝેક્શન લોગ" શું છે? અને એનું મહત્વ શું છે? "ટ્રનઝેક્શન લોગ" આ શબ્દ માજ "એનો અર્થ છે, "ટ્રનઝેક્શન" એટલે "આપ - લે" - "માહિતી ની આપલે" જ્યારે "લોગ" નો અર્થ થાય છે "નોધવું"
"ટ્રનઝેક્શન લોગ" નું કાર્ય એ છે કે જયારે જ્યારે આપને એસ કયું એલ સર્વર પર કોઈ પણ ટ્રનઝેક્શન કરીએ તે દરેક ની નોંધ રાખવી। આમ કરવા માટે નું કારણ એ છે કે આપણા જે કોઈ પણ ડેટા સ્ટોર કરીએ તે "કન્સીસટંત સ્ટેત" માં હોવા જોઈયે, તદુપરાંત "ટ્રનઝેક્શન લોગ" ની મદદ થી આપણે "ડીઝાસ્ટર રીકવરી" પ્લાન કરી શકીએ છીએ; દાખલા તરીકે "લોગ શીપીંગ", " ડેટાબેઝ મીરરીંગ" તેમજ "પોઈન્ટ ઇન ટાઈમ રીકવરી" (આ બધા વિષે હું નવા આર્ટીકલ માં વિગતે જણાવીશ)


તો હવે આપણે જાણીએ છે કે "ટ્રનઝેક્શન લોગ" નું મહત્વ શું છે અને તે શું કરે છે, હવે જાણીએ કે તે ફૂલ શા માટે થાય છે અને કઈ રીતે એને અટકાવી શકાય.

"ટ્રનઝેક્શન લોગ ફૂલ થાય જવાના કારણ અને એના ઉપાય"

૧ "ટ્રનઝેક્શન કમિટેડ નથી"
-> એપ્લીકેશન કોડીંગ કરતી વખતે એ વાત નું ખાસ ધ્યાન રાખો કે દરેક "ટ્રનઝેક્શન" ને તમે બીગીન અને કમીટ માં આવરી લો। આમ કરવાથી તમારા દરેક "ટ્રનઝેક્શન" કમીટ થશે અને "કન્સીસટંત" રહેશે, અને તમને "બ્લોકીંગ" ની મુસીબત થી પણ છુટકારો મળશે

૨. "ટ્રનઝેક્શન ઓપન નથી પણ લાંબા સમય થી એક્ટીવ છે"

--> આ એવા ટ્રનઝેક્શન છે કે, જયારે યુઝર કોઈ ક્વેરી કરી રહ્યો હતો અને કોઈ કારણવશ એનું કમ્પ્યુટર હેંગ થઇ ગયું અથવાતો રીબુટ કે શટડાઉન થઇ ગયું હોઈ અને નેટવર્ક આ માહિતી એસ કયું એલ સર્વર ને પહોચાડી શકતું નથી જેથી ડેટાબેઝ સર્વર એવું સમજે છે કે "ટ્રનઝેક્શન ઓપન નથી પણ લાંબા સમય થી એક્ટીવ છે" આવા પ્રકાર ના સેશન ડીબીસીસી ઈનપુટબફર(એસ્પિઆઇડિ) થી કિલ કરી શકાય છે પરંતુ સાવચેતી થી કેમકે ઘણી વખત આ પ્રોસેસ ૪ ગણો સમય લે છે ખાસ કરી ને જ્યારે રોલબેક થાય છે. કિલ કમાંડ કેવી રીતે કામ કરે છે તે જાણ વા માટે વાંચો


૩. "ઇન્ડેક્ષ્ ક્રિએટ કરતી વખતે કે મોડીફાઇ કરતી વખતે"

--> મારા મત મુજબ આ સૌથી અગત્ય નો મુદ્દો છે; ઇન્ડેક્ષ્ ક્રિએટ કરતી વખતે કે મોડીફાઇ કરતી વખતે ખાસ ધ્યાન રાખો કારણકે આ ઓપરેશન ફુલ્લી લોગ્ડ છે અને ૧૫૦% જગ્યા હોવી જરૂરી છે દાખલા તરીકે જો તમારા ટેબલ ની સાઈઝ ૧ જીબી છે તો તમારી પાસે ૧.૫ જીબી જગ્યા ફ્રિ હોવી જરૂરી છે. તદુપરાંત, જયારે પણ તમે ડીબીસીસી ડીબીરીઇન્ડેક્ષ્ એક્ઝીક્યુંટ કરો છો ત્યારે એ ઇન્ડેક્ષ્ ને ડ્રોપ કરી ને રીક્રીએટ કરે છે* (જો તમે ઇન્ડેક્ષ્ નું નામ નથી આપતા તો આ ટેબલ ના બધાજ ઇન્ડેક્ષ્ પર આ ઓપરેશન થશે). હું એવી સલાહ આપીશ કે તમે જયારે રીઇન્ડેક્ષ્ કરવાના હોઉં તે પહેલા ડીબીસીસી શોકોન્તીગ અથવા તો સીસ.ડીમ_ડીબી_ઇન્ડેક્ષ્_ફીઝીકલ_સ્ટેટસ નું આઉટપુટ વાંચો અને આ માહિતી ના આધારે ઇન્ડેક્ષ્ રીક્રિએટ અથવા તો ડીબીરીઇન્ડેક્ષ્ કરો.

૪. "બલ્ક ઓપરેશન"

--> બલ્ક ઓપરેશન લોગ્ડ ઓપરેશન હોવાના કારણે લોગ ફાઈલ ની સાઈઝ વધે છે, માટે જયારે પણ બલ્ક ઓપરેશન કરો ત્યારે તમે આ નાના ચંક માં કરી શકો તો ઘણું સારું.

૫. "ઓટો ગ્રોથ"

--> ઓટો ગ્રોથ ઓપ્શન જો કાળજી પૂર્વક કન્ફિગર કરવામાં નહી આવ્યું હોય તો આ ખરેખર એક મોટી મુશ્કેલી છે કેમકે જો ડેટાબેઝ સાઈઝ હ્યુજ હોઈ જેમકે ૧૦૦+ગીગ્સ અથવા વધારે હોઈ અને જો તમે ઓટો ગ્રોથ ઓપ્શન % માં રાખ્યું હોઈ તો તમે તમરી ડિસ્ક આઈ/ઓ વધી જશે અને પરફોર્મન્સ માં નોંધપાત્ર ઘટાડો વર્તાશે, વધુ અહી વાંચો


૬. "ગ્રુપ બાય અથવા ઓર્ડર બાય "

--> આપને બધાજ જાણીએ છે કે ગ્રુપ બાય અથવા ઓર્ડર બાય રીઝુલ્ત ને રિસોર્ટ કરે છે જે અને આ માટે પણ જગ્યા રોકાય છે અને માટે જો અનિવાર્ય હોય તો j ગ્રુપ બાય અથવા ઓર્ડર બાય નો ઉપયોગ કરો

૭. " ટ્રનઝેક્શન રેપ્લીકેશન"

--> જો તમે ટ્રનઝેક્શન રેપ્લીકેશન ક્ન્ફીગર કર્યું હોઈ અને કોઈ કારણવશ અમુક ટ્રનઝેક્શન કે જે રેપ્લીકેશન માટે માર્ક છે પણ રેપ્લીકેટ નથી થયા તે બધા જ તમારા ટ્રનઝેક્શન લોગ માં હોઈ છે અને જગ્યા રોકે છે, માટે ટ્રનઝેક્શન રેપ્લીકેશન મોનીટર ઓપન કરો અને રેપ્લીકેશન સિંક કરો.

૮. "ટ્રનઝેક્શન લોગ બેકઅપ નથી થયું"

--> ટ્રનઝેક્શન લોગ બેકઅપ એ સૌથી અસરકારક ઉપાય છે કે જે ટ્રનઝેક્શન લોગ ને શેપ માં રાખે છે દાખલા તરીકે દર ૧૫ મિનીટ બાદ ટ્રનઝેક્શન લોગ બેકઅપ શીડ્યુલ કરો.


સાર: ટ્રનઝેક્શન લોગ, દરેક ટ્રનઝેક્શન ને લોગ કરે છે અને જો તમે તમારા ડેટાબેઝ ને ફૂલ રીકવરી મોડ માં રાખ્યો હોઈ તો ટ્રનઝેક્શન લોગ ફૂલ થઇ જવાની શક્યતા ઘણી વધુ છે, માટે હમેશા ટ્રનઝેક્શન લોગ બેકઅપ શેડ્યુલ કરો.

અંગ્રેજી વર્ઝન: http://www.sql-server-citation.com/2009/08/how-to-get-rid-off-from-transaction-log.html

વાચક મિત્રો,

આજે હું નવો બ્લોગ શરુ કરું છું અને આ માટે ઘણા ઉત્સાહ અને આનંદ ની લાગણી અનુભવું છું, કેમકે આ બ્લોગ હું ગુજરાતી માં લખવાનો છું કે જે કદાચ પહેલો ગુજરાતી બ્લોગ હશે જે એસ કયું એલ સરવર માટે લખાતો હશે. ભવિષ્ય માં હું એસ કયું એલ સરવર માટે એક પુસ્તક પણ પ્રકાશિત કરવાની ઈચ્છા ધરાવું છું. મારો એક બ્લોગ કે જે હું એસ કયું એલ સરવર (અંગ્રેજી માં) પર લખું છું http://www.sql-server-citation.com/ અને ઘણો જ પોપ્યુલર છે તેને ૨૦૦૭ થી અત્યાર સુધી આ બ્લોગ પર ૧૬૫૦૦ કરતા પણ વધુ હીટ મળી છે.

આશા રાખું કે મારો આ પ્રયાસ પણ સફળ રહે, અને મારા એસ કયું એલ સરવર (ગુજરાતી) બ્લોગ કે જે સર્વ પ્રથમ ગુજરાતી બ્લોગ છે ને વાચકો પસંદ કરે.

-- હેમંતગીરી એસ. ગોસ્વામી
About me