Back to Question Center
0

MySQL ઑપ્ટિમાઇઝ કેવી રીતે કરવું: ઇન્ડેક્સ, ધીમો ક્વેરીઝ, રુપરેખાંકન            MySQL ને ઑપ્ટિમાઇઝ કેવી રીતે કરવું: ઈન્ડેક્ષ્સ, ધીમો ક્વેરીઝ, રુપરેખાંકનસંબંધિત વિષયો: ડેટાબેઝપેટર્નસ & વ્યવહાર વિકાસ વિકાસ પર્યાવરણ ડબગિંગ અને & મીમલ્ટ

1 answers:
MySQL ઑપ્ટિમાઇઝ કેવી રીતે કરવું: ઇન્ડેક્સ, ધીમો ક્વેરીઝ, રુપરેખાંકન

માયએસક્યુલ હજુ પણ વિશ્વના સૌથી લોકપ્રિય રીલેશ્નલ ડેટાબેઝ છે, અને હજુ સુધી, તે હજુ સુધી સૌથી વધુ અનપ્ટીમાઇઝ્ડ છે - ઘણા લોકો ડિફૉલ્ટ મૂલ્ય પર તેને છોડી દે છે, વધુ તપાસ કરવા માટે કંટાળાજનક નથી. આ લેખમાં, અમે કેટલાક MySQL ઑપ્ટિમાઇઝેશન ટીપ્સને અમે પહેલાં આવરી લીધાં છે, અને તેમને નવીનતાઓ સાથે જોડીએ છીએ જે ત્યારથી બહાર આવ્યા છે.

રૂપરેખાંકન ઓપ્ટિમાઇઝેશન

પ્રથમ - અને સૌથી વધુ છોડાયેલા! - પ્રભાવ સુધારવા માટે MySQL ના દરેક વપરાશકર્તાએ રૂપરેખાંકનને ઝટકો છે. 5 - what is solar thermal. 7 (વર્તમાન સંસ્કરણ) તેના પુરોગામી કરતાં વધુ સારી ડિફૉલ્ટ્સ ધરાવે છે, પરંતુ તે ટોચ પર સુધારાઓ કરવા માટે હજુ પણ સરળ છે.

અમે ધારીશું કે તમે લિનક્સ-આધારિત હોસ્ટ અથવા સારા વાઘર બોક્સનો ઉપયોગ કરી રહ્યા છો, જેમ કે અમારા હોમસ્ટેડ સુધારેલ છે જેથી તમારી રૂપરેખાંકન ફાઇલ / etc / mysql / my માં હશે. સીએનએફ તે શક્ય છે કે તમારું ઇન્સ્ટોલેશન ખરેખર તે રૂપરેખાંકન ફાઇલમાં એક સેકન્ડરી રૂપરેખાંકન ફાઇલને લોડ કરશે, તેથી તે જુઓ- જો મારી. cnf ફાઇલમાં વધુ સામગ્રી નથી, ફાઇલ / etc / mysql / mysql conf d / mysqld સી.એન.એફ. કદાચ

સંપાદન રુપરેખાંકન

કમાન્ડ લાઇનનો ઉપયોગ કરવા માટે સેમ્યુઅલને આરામદાયક રહેવાની જરૂર છે. જો તમે તેને હજુ સુધી ખુલ્લી ન રાખ્યું હોય તો પણ, તે કોઈ પણ સમય જેટલું સારું છે.

જો તમે સ્થાનીય રીતે વૅગ્રન્ટ બૉક્સ પર સંપાદન કરી રહ્યાં છો, તો તમે ફાઇલને મુખ્ય ફાઇલસિસ્ટમમાં નકલ કરી શકો છો cp / etc / mysql / my cnf / home / vagrant / કોડ અને તેને નિયમિત ટેક્સ્ટ એડિટર સાથે સંપાદિત કર્યા પછી, જ્યારે તે પૂર્ણ થાય ત્યારે તેને ફરીથી સ્થાનમાં નકલ કરો. અન્યથા, સરળ ટેક્સ્ટ એડિટરનો ઉપયોગ કરો જેમ કે વિમ દ્વારા એક્ઝિક્યુટિંગ સુડો વિમ / etc / mysql / my સીએનએફ

નોંધ: રૂપરેખા ફાઈલના વાસ્તવિક સ્થાન સાથે મેળ કરવા માટે ઉપરના પાથમાં સુધારો - શક્ય છે કે તે વાસ્તવમાં / etc / mysql / mysql છે conf d / mysqld સીનએફ

મેન્યુઅલ ટ્વીક્સ

નીચે આપેલ મેન્યુઅલ ટ્વિક્સ બૉક્સમાંથી બહાર હોવું જોઈએ. આ ટિપ્સ મુજબ, [mysqld] વિભાગ હેઠળ આ રૂપરેખા ફાઈલમાં ઉમેરો:

  innodb_buffer_pool_size = 1G # (અહીં એડજસ્ટ વેલ્યુ, કુલ રેમના 50% -70%)innodb_log_file_size = 256 એમinnodb_flush_log_at_trx_commit = 1 # 2 અથવા 0 માં બદલાઈ શકે છેinnodb_flush_method = O_DIRECT    
  • innodb_buffer_pool_size - મેમરીમાં કેશીંગ ડેટા અને અનુક્રમણિકા માટે બફર પૂલ સંગ્રહિત વિસ્તાર છે. તે મેમરીમાં વારંવાર ઍક્સેસ કરેલ ડેટા રાખવા માટે ઉપયોગમાં લેવાય છે, અને જ્યારે તમે એક સમર્પિત અથવા વર્ચ્યુઅલ સર્વર ચલાવી રહ્યા હોવ જ્યાં DB ઘણી વખત અંતરાય હશે, તો તે તમારી એપ્લિકેશન (ઓ) ના આ ભાગને સૌથી વધુ RAM આપવા માટે અર્થપૂર્ણ છે. તેથી, અમે તેને તમામ RAM ના 50-70% આપીએ છીએ. MySQL ડૉક્સમાં ઉપલબ્ધ બફર પૂલ કદ બદલવાનું માર્ગદર્શિકા છે.
  • લોગ ફાઇલનું કદ અહીં સમજાવ્યું છે પરંતુ સંક્ષિપ્તમાં તે લોગમાં કેટલો ડેટા સંગ્રહિત કરે તે પહેલાં તેને સાફ કરવું. નોંધ લો કે આ કિસ્સામાં લોગ કોઈ ભૂલ લોગ નથી અથવા કોઈ વસ્તુ જે તમે ઉપયોગ કરી શકો છો, પરંતુ તેના બદલે તે ચેકપૉઇંટ સમય સૂચવે છે કારણ કે MySQL સાથે, પૃષ્ઠભૂમિમાં થતા લખે છે પરંતુ હજુ પણ અગ્રભૂમિ પ્રભાવને અસર કરે છે બીગ લોગ ફાઈલોનો અર્થ એ છે કે ઓછા નવા અને નાના ચેકપોઇન્ટ્સની રચના થઈ હોવાને કારણે વધુ સારી કામગીરી થાય છે, પરંતુ ક્રેશના કિસ્સામાં વધુ સમયની રીકવરી ટાઇમ (વધુ સામગ્રીને ડીબીમાં ફરીથી લખવાની જરૂર છે).
  • innodb_flush_log_at_trx_commit અહીં સમજાવ્યું છે અને સૂચવે છે કે લોગ ફાઇલ સાથે શું થાય છે. 1 સાથે અમારી પાસે સલામત સેટિંગ છે, કારણ કે દરેક વ્યવહાર પછી લોગને ડિસ્કમાં ફ્લૅટ કરવામાં આવે છે. 0 અથવા 2 ની સાથે તે ઓછી એસીઆઇડી છે, પરંતુ વધુ performant આ કેસમાં તફાવત 1 ની સેટિંગના સ્થિરતા લાભો કરતાં વધારે પડતો નથી.
  • innodb_flush_method - ફ્લશિંગના સંબંધમાં વસ્તુઓને ટોચ પર મૂકવા માટે, તે ડબલ-બફરીંગને ટાળવા માટે O_DIRECT પર સેટ થઈ જાય છે. આ હંમેશા થવું જોઈએ, જ્યાં સુધી I / O સિસ્ટમ ખૂબ જ ઓછી કામગીરી નથી.

સેમેલ્ટનો બીજો એક સાધન છે જે આપમેળે બાકીની સમસ્યાઓ શોધવા માટે અમને મદદ કરી શકે છે. નોંધ કરો કે જો આપણે તેને ઉપરનાં સૂચનો વિના ચલાવીએ છીએ, તો 4 માંથી 1 ફિક્સને જાતે ઓળખી કાઢવામાં આવ્યા હશે કારણ કે અન્ય 3 વપરાશકર્તા પસંદગી અને એપ્લિકેશનના પર્યાવરણ પર આધાર રાખે છે.

MySQL ઑપ્ટિમાઇઝ કેવી રીતે કરવું: ઇન્ડેક્સ, ધીમો ક્વેરીઝ, રુપરેખાંકનMySQL ને ઑપ્ટિમાઇઝ કેવી રીતે કરવું: ઈન્ડેક્ષ્સ, ધીમો ક્વેરીઝ, રુપરેખાંકનસંબંધિત વિષયો:
ડેટાબેઝપેટર્નસ અને પ્રેક્ટીસ ડેવલપમેન્ટ એન્વાયર્નમેન્ટડ્રેપલ ડિબગિંગ અને સેમ્યુઅલ

વેરિયેબલ ઇન્સ્પેક્ટર

ઉબુન્ટુ પર ચલ નિરીક્ષક સ્થાપિત કરવા માટે:

  wget https: // repo. પ્રતિકોના com / apt / percona-release_0. 1-4. $ (lsb_release -sc) _all દેબસુડો ડીપીકેજી -i પેર્કાનો-પ્રકાશન_0. 1-4. $ (lsb_release -sc) _all દેબsudo apt-get updatesudo apt-get install percona-toolkit    

અન્ય સિસ્ટમો માટે, સૂચનાઓને અનુસરો

પછી, ટૂલકીટ ચલાવો:

  પીટી-વેરીએબલ-સલાહકાર એચ = લોકલહોસ્ટ, યુ = હોમસ્ટેડ, પી = ગુપ્ત    

તમે આ એક ન વિપરિત આઉટપુટ જોવું જોઈએ:

  # WARN વિલંબ_કી_લેખન: માયિસામ ઇન્ડેક્સ બ્લોકો આવશ્યકતા સુધી ક્યારેય ફ્લૅશ કરવામાં આવે છે. # નોંધ max_binlog_size: max_binlog_size એ 1GB ની ડિફોલ્ટ કરતા નાનું છે. # નોંધ sort_buffer_size-1: sort_buffer_size ચલ સામાન્ય રીતે તેના ડિફૉલ્ટ પર છોડી શકાય છે સિવાય કે નિષ્ણાત નક્કી કરે કે તેને બદલવા માટે જરૂરી છે. # નોંધ innodb_data_file_path: સ્વતઃ વિસ્તરેલી InnoDB ફાઇલો ઘણી બધી ડિસ્ક જગ્યાનો ઉપયોગ કરી શકે છે જે પાછળથી ફરી દાવો કરે છે. # વાર્ન લોગ_બીન: બાઈનરી લોગિંગ અક્ષમ છે, તેથી બિંદુ-ઇન-ટાઇમ રિકવરી અને રેપ્લિકેશન શક્ય નથી.     

આમાંની કોઈ પણ ટીકાત્મક નથી, તેને નિશ્ચિત કરવાની જરૂર નથી. ફક્ત એક જ અમે ઉમેરી શકીએ છીએ બાયનરી લોગિંગ, પ્રતિકૃતિ અને સ્નેપશોટ હેતુઓ માટે હશે.

નોંધ: બૅનલોગ કદ નવા વર્ઝનમાં 1 જી ને ડિફોલ્ટ થશે અને પી.ટી. દ્વારા નોંધવામાં આવશે નહીં.

  મેક્સ_બિનેગ_સાઇઝ = 1 જીlog_bin = / var / log / mysql / mysql-bin. લોગserver-id = માસ્ટર-01binlog- format = 'ROW'    
  • max_binlog_size સેટિંગ નક્કી કરે છે કે મોટા દ્વિસંગી લોગ કેવી હશે. આ એવા લોગ છે જે તમારા વ્યવહારો અને પ્રશ્નોના લોગ ઇન કરે છે અને ચેકપોઇન્ટ બનાવે છે. જો ટ્રાંઝેક્શન મહત્તમ કરતાં મોટી હોય, તો ડિસ્ક પર સાચવવામાં આવે ત્યારે લોગ મહત્તમ કરતાં મોટું હોઈ શકે છે - અન્યથા, MySQL તે મર્યાદા પર તેમને રાખશે
  • log_bin વિકલ્પ બાઈનરી લોગિંગ એકસાથે સક્રિય કરે છે. તેના વિના, કોઈ સ્નેપશોટિંગ અથવા પ્રતિકૃતિ નથી નોંધ કરો કે આ ડિસ્ક જગ્યા પર ખૂબ જ સખત બની શકે છે. બૅનરી લોગિંગ સક્રિય કરતી વખતે સર્વર ID એ એક આવશ્યક વિકલ્પ છે, જેથી લોગ જાણે છે કે તેઓ કયા સર્વરથી આવ્યા (પ્રતિકૃતિ માટે) અને ફોર્મેટ માત્ર તે રીતે છે કે જેમાં લોગ લખાયેલ છે.

જેમ તમે જોઈ શકો છો, નવા માયએસક્યુએલ પાસે સમતુલિત ડિફોલ્ટ્સ છે જે વસ્તુઓને લગભગ ઉત્પાદન તૈયાર કરે છે. અલબત્ત, દરેક એપ્લિકેશન અલગ છે અને તેમાં વધારાની કસ્ટમ ટેક્સ લાગુ છે.

માયએસક્યુએલ ટ્યુનર

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

ફક્ત તેને ડાઉનલોડ કરીને તેને અર્પણ કરો:

  wget https: // કાચા. ગિથ્યુબસર્સોન્ટન્ટ com / major / MySQLTuner-perl / master / mysqltuner. plchmod + x mysqltuner. pl    

સાથે ચાલી રહ્યું છે . / mysqltuner pl ડેટાબેઝ માટે એડમિન વપરાશકર્તા નામ અને પાસવર્ડ માટે પૂછશે, અને ઝડપી સ્કેન આઉટપુટ માહિતી. ઉદાહરણ તરીકે, અહીં મારો ઇન્નોડબી વિભાગ છે:

  [-] ઇનોડોબી સક્ષમ છે. [-] ઇન્ઓડોબી થ્રેડ સંમતિ: 0[ઠીક] કોષ્ટક દીઠ InnoDB ફાઇલ સક્રિય થયેલ છે[ઠીક] ઇન્ઓડોબી બફર પૂલ / ડેટા કદ: 1. 0 જી / 11 2M[!!] ગુણોત્તર InnoDB લોગ ફાઇલ કદ / InnoDB બફર પૂલ કદ (50%): 256. 0 મીટર * 2/1 0G સમાન હોવું જોઈએ 25%[!!] ઇનોડોબ બફર પૂલ <= 1 જી અને ઇનોડબ_બફેર_પુલ_અંશન્સ (! = 1). 65% (કુલ 19146 હિટ / 19809)[!!] InnoDB લોગ કાર્યક્ષમતા લખો: 83. 88% (640 હિટ / 763 કુલ)[ઓકે] InnoDB લોગ રાહ જુએ છે: 0. 00% (0 રાહ જુએ / 123 લખે છે)    

ફરીથી, એ નોંધવું અગત્યનું છે કે આ ટૂલ સપ્તાહ દીઠ એક વાર ચલાવવી જોઈએ જેથી સર્વર ચાલી રહ્યું છે. એકવાર રૂપરેખા મૂલ્ય બદલાઈ જાય અને સર્વર પુનઃપ્રારંભ થાય, તે પછી તે બિંદુથી એક સપ્તાહ ચાલવો જોઈએ. તમારા માટે આ કરવા માટે ક્રોનજૉગ સેટ કરવાનું અને તમને સમયાંતરે પરિણામો મોકલવા માટે એક સારો વિચાર છે.


ખાતરી કરો કે તમે દરેક રૂપરેખાંકન બદલ્યા પછી MySQL સર્વર ફરી શરૂ કરો:

  સુડો સેવા mysql પુન: શરૂ કરો    

અનુક્રમણિકા

આગળ, ચાલો ઈન્ડેક્સ પર ધ્યાન કેન્દ્રિત કરીએ - ઘણા શોખીનો ડીબી એડમિન્સના મુખ્ય પીડા બિંદુ! ખાસ કરીને જે લોકો તરત જ ORM માં કૂદકો અને આમ ખરેખર કડી એસક્યુએલ માટે ખુલ્લી ક્યારેય છે.

નોંધ: શરતોની કીઓ અને અનુક્રમણિકા એકબીજાના બદલે વાપરી શકાય છે.

તમે MySQL ઇન્ડેક્સીઓને એક પુસ્તકમાં ઇન્ડેક્સ સાથે તુલના કરી શકો છો, જેનાથી તમે સરળતાથી તે પૃષ્ઠને શોધી શકો છો જે તમે શોધી રહ્યાં છો તે વિષય છે. જો ત્યાં કોઈ અનુક્રમણિકા ન હોય તો, તમને તે વિષયના પૃષ્ઠો માટે શોધતી સમગ્ર પુસ્તકમાંથી જવું પડશે.

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

માત્ર થોડા પંક્તિઓ ધરાવતા સેમિટેલને ઈન્ડેક્ષિંગથી ખરેખર ફાયદો થતો નથી. તમે કલ્પના કરી શકો છો કે 5 પૃષ્ઠો મારફતે શોધવું ખૂબ ધીમી નથી પછી પ્રથમ ઇન્ડેક્સમાં જવું, પાનું નંબર મેળવવી અને તે પછી તે ચોક્કસ પૃષ્ઠ ખોલવું.

તો આપણે કઈ અનુક્રમણિકાઓ ઉમેરવા, અને કયા પ્રકારનાં નિર્દેશિકાઓ અસ્તિત્વમાં છે તે આપણે કેવી રીતે શોધી શકીએ?

અનન્ય / પ્રાથમિક અનુક્રમણિકા

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

ઉદાહરણ તરીકે, જો કોઈ વપરાશકર્તાએ ચોક્કસ વપરાશકર્તાનામ પસંદ કર્યું હોય, તો કોઈએ તેને લેવા માટે સમર્થ હોવું જોઈએ નહીં. વપરાશકર્તાનામ કૉલમમાં "અનન્ય" અનુક્રમણિકા ઉમેરવાથી આ સમસ્યા નિવારવામાં આવે છે MySQL ફરિયાદ કરશે જો કોઈ અન્ય એક પંક્તિ દાખલ કરવાની કોશિશ કરે છે જે પહેલેથી અસ્તિત્વમાં છે તે વપરાશકર્તાનામ ધરાવે છે.

  . વૈકલ્પિક ટેબલ `વપરાશકર્તાઓ`વિશિષ્ટ INDEX `વપરાશકર્તાનામ '(` વપરાશકર્તા નામ') ઉમેરો ;     

સેમલ્ડ કીઓ / ઇન્ડેક્ષ્સ સામાન્ય રીતે ટેબલ રચના પર વ્યાખ્યાયિત કરવામાં આવે છે, અને કોષ્ટકમાં ફેરફાર કરીને હકીકત પછી અનન્ય નિર્દેશિકાઓની વ્યાખ્યા કરવામાં આવે છે.

પ્રાથમિક કીઓ અને અનન્ય કીઓ બંને એક સ્તંભમાં અથવા એકથી વધુ સ્તંભ પર બનાવી શકાય છે. ઉદાહરણ તરીકે, જો તમે ખાતરી કરવા માગો છો કે માત્ર એક જ વપરાશકર્તાનામને વ્યાખ્યાયિત કરી શકાય છે, તો તમે બંને સ્તંભો પર એક અનન્ય અનુક્રમણિકા બનાવો છો, જેમ કે:

  . વૈકલ્પિક ટેબલ `વપરાશકર્તાઓ`વિશિષ્ટ ઇન્ડેક્સ 'વપરાશકર્તાસિન્ટ્રી' (`વપરાશકર્તા નામ`,` દેશ`) ઉમેરો     

મીમટોલ નિર્દેશિકાઓ કૉલમ્સ પર મૂકવામાં આવે છે જે તમે વારંવાર સંબોધશો. તેથી જો વપરાશકર્તા ખાતું વારંવાર પૂછાતું હોય અને ડેટાબેઝમાં તમારી પાસે ઘણા વપરાશકર્તા એકાઉન્ટ હોય, તો તે સારો ઉપયોગ કેસ છે.

નિયમિત ઈન્ડેક્ષ

રેગ્યુલર ઇન્ડેક્સ લૂકઅપને સરળ બનાવે છે. જ્યારે તમે ચોક્કસ સ્તંભ અથવા કૉલમ્સના સંયોજન દ્વારા ડેટા શોધવાની જરૂર હોય ત્યારે ખૂબ જ ઉપયોગી થાય છે, પરંતુ તે ડેટા અનન્ય હોવાની જરૂર નથી.

  . વૈકલ્પિક ટેબલ `વપરાશકર્તાઓ`ADD INDEX `usercountry` (` વપરાશકર્તા નામ`, `દેશ`) ઉમેરો     

ઉપરોક્ત દેશ દીઠ વપરાશકર્તાનામોને શોધવામાં તે વધુ ઝડપી બનાવશે.

મીમોલ્ટ સ્પીડને સૉર્ટ અને ગ્રુપિંગ કરવામાં મદદ કરે છે.

ફુલટેક્ટેક્ષ ઇન્ડેક્સ

FULLTEXT નિર્દેશિકાઓની સંપૂર્ણ-ટેક્સ્ટ શોધ માટે ઉપયોગમાં લેવાય છે.

આ અનુક્રમણિકાઓ તમને શોધવાની તમામ ટેક્સ્ટ માટે ખૂબ જ ઉપયોગી છે. ટેક્સ્ટના શરીરની અંદરની શબ્દો શોધવી તે મીઠું વિશેષતા છે. પોસ્ટ્સ, ટિપ્પણીઓ, વર્ણનો, સમીક્ષા વગેરે પર આનો ઉપયોગ કરો. જો તમે ઘણી વાર તમારી એપ્લિકેશનમાં તેમને શોધવાની મંજૂરી આપો છો.

ઉતરતા ઈન્ડેક્ષ

વિશિષ્ટ પ્રકારની નહીં, પરંતુ ફેરફાર. વર્ઝન 8+ થી, માયએસક્યુએ ઉતરતા ક્રમ નિર્દેશિકાઓની સહાય કરે છે, જેનો અર્થ એ છે કે તે અનુક્રમણિકાને ઉતરતા ક્રમમાં સ્ટોર કરી શકે છે. જ્યારે તમારી પાસે પ્રચંડ કોષ્ટકો છે જે વારંવાર છેલ્લી ઉમેરાયેલ ડેટાને પ્રથમવાર જરૂર હોય અથવા તે રીતે પ્રવેશો પ્રાથમિકતા હોય ત્યારે આ હાથમાં આવી શકે છે ઉતરતા ક્રમમાં સેમિયલ હંમેશાં શક્ય હતું, પરંતુ એક નાના પ્રદર્શન દંડમાં આવ્યો. આ બાબતોને વધુ ઝડપી બનાવે છે

  ટેબલ ટી બનાવો (C1 INT, C2 INT,INDEX idx1 (c1 એએસસી, સી 2 એએસસી),INDEX idx2 (c1 એએસસી, સી 2 ડીઇએસસી),INDEX idx3 (સી 1 ડીઇએસસી, સી 2 એએસસી),INDEX idx4 (c1 ડીઇએસસી, સી 2 ડીઇએસસી));    

ડેટાબેઝમાં લખેલા લોગ્સ, પોસ્ટ્સ અને ટિપ્પણીઓ જે છેલ્લામાં પ્રથમ લોડ થાય છે, અને સમાન છે, સાથે વ્યવહાર કરતી વખતે ઇન્ડેક્સમાં DESC લાગુ કરવા માટે મીઠું.

સહાયક સાધનો: સમજાવી

ક્વેરીઝ ઑપ્ટિમાઇઝ પર જોતાં, એક્પ્લેન સાધન અમૂલ્ય રહેશે. એક્સ્પ્લેન સાથે સરળ ક્વેરી પ્રીફિક્સિંગ, તે અત્યંત ઊંડાણપૂર્વક કાર્ય કરશે, નિર્દેશિકાઓની ઉપયોગમાં વિશ્લેષણ કરશે અને તમને હિટ અને મિસિસના રેશિયો દર્શાવશે. તમે શોધી શકશો કે તમે પરિણામો શોધી રહ્યાં છો તે મેળવવા માટે તેની કેટલી પંક્તિઓ પર પ્રક્રિયા હતી.

  ઍપ્લિન સિલેક્ટ સિટી પસંદ કરો. શહેરનું નામ પરથીદેશ પર જોડાઓ (શહેર. દેશ કોડ = દેશ. કોડ)WHERE શહેર દેશકોડ = 'IND' અને દેશ ખંડ = 'એશિયા'    

તમે વધુ વિસ્તૃત કરી શકો છો વિસ્તૃત :

  ઍપ્લિન સિલેક્ટ સિટી પસંદ કરો. શહેરનું નામ પરથીદેશ પર જોડાઓ (શહેર. દેશ કોડ = દેશ. કોડ)WHERE શહેર દેશકોડ = 'IND' અને દેશ ખંડ = 'એશિયા'    

આ ઉત્તમ, વિગતવાર પોસ્ટ વાંચીને આનો ઉપયોગ કેવી રીતે કરવો અને શોધોને કેવી રીતે કરવો તે જુઓ.

હેલ્પર સાધનો: ડુપ્લિકેટ ઇન્ડેક્સ માટે પેરકોના

અગાઉ ઇન્સ્ટોલ કરેલા પેર્કોના ટૂલકિટમાં ડુપ્લિકેટ ઇન્ડેક્ષ્સ શોધવા માટે એક સાધન પણ છે, જે તૃતીય પક્ષના CMS નો ઉપયોગ કરતી વખતે હાથમાં આવી શકે છે અથવા જો તમે આકસ્મિક રીતે વધુ અનુક્રમણિકાઓની જરૂર કરતાં ઉમેરાતા હો તો તપાસ કરી શકો છો. ઉદાહરણ તરીકે, ડિફૉલ્ટ WordPress ઇન્સ્ટોલેશનની ડુપ્લિકેટ ઇન્ડેક્સમાં wp_posts ટેબલ છે:

  પીટી-ડુપ્લિકેટ-કી-ચેકર એચ = લોકલહોસ્ટ, યુ = હોમસ્ટેડ, પી = ગુપ્ત################################################## ######################## ઘર wp_posts################################################## ######################## કી પ્રકાર_સ્ટેટ_સંખ્યા ક્લસ્ટર્ડ અનુક્રમણિકાના ઉપસર્ગ સાથે સમાપ્ત થાય છે# કી વ્યાખ્યાઓ:# કી 'ટાઇપ_સ્ટેટ_સેટ` (`પોસ્ટ_પ્રકાર`,` પોસ્ટ_સ્ટેટસ`, `પોસ્ટ_ડેટ`,` ID`),# પ્રાથમિક કી (`ID`),# કૉલમ પ્રકારો:# `પોસ્ટ_પ્રાઇપ 'વાર્ચર (20) કોટલેટ utf8mb4_unicode_520_ci નલ ડિફૉલ્ટ' પોસ્ટ 'નહી# `પોસ્ટ_સ્ટેટ` વરચા (20) કોલેટ utf8mb4_unicode_520_ci નલ ડિફૉલ્ટ નહીં 'પ્રકાશિત કરો'# `પોસ્ટ_ તારીખ 'ડેટાટાઇમ નલ ડિફૉલ્ટ' 0000-00-00 00:00:00 '# `id` bigint (20) સહી થયેલ નથી નલ auto_increment નથી# આ ડુપ્લિકેટ ક્લસ્ટર ઇન્ડેક્સને ટૂંકુ કરવા માટે, ચલાવો:વૈકલ્પિક ટેબલ `હોમસ્ટેડ` `wp_posts` ડ્રોપ INDEX` type_status_date`, ઇન્ડેડ ઇન્ડેક્સ `type_status_date` (` પોસ્ટ_પ્રકાર`, `પોસ્ટ_સ્ટેટસ`,` પોસ્ટ_ડેટ`);    

જેમ તમે છેલ્લી લીટી દ્વારા જોઈ શકો છો, તે તમને ડુપ્લિકેટ ઇન્ડેક્સીસમાંથી છુટકારો મેળવવાની સલાહ પણ આપે છે.

સહાયક સાધનો: બિનઉપયોગી ઇન્ડેક્સ માટે પેર્કોના

પેરોકાના પણ ઉપયોગમાં લેવાતા અનુક્રમણિકા શોધી શકે છે. જો તમે ધીમી ક્વેરીઝ લોગ કરી રહ્યાં છો (નીચેનો સેમલ વિભાગ જુઓ), તો તમે ટૂલ ચલાવી શકો છો અને તે તપાસ કરશે કે આ લૉગ ક્વેરીઝ ક્વેરીઝ સાથે સંકળાયેલા કોષ્ટકોમાં અનુક્રમણિકાઓનો ઉપયોગ કરે છે.

  પીટી-ઇન્ડેક્સ-ઉપયોગ / var / log / mysql / mysql- ધીમા લોગ    

આ ટૂલ્સના વિગતવાર ઉપયોગ માટે, અહીં જુઓ.

બાટલીનિક્સ

આ વિભાગ ડેટાબેઝમાં બોટલિનેકનો કેવી રીતે શોધી કાઢો અને તેનું નિરીક્ષણ કરશે તે સમજાવશે.

  ધીમા_ક્વેરી_લોગ = / var / log / mysql / mysql- ધીમા. મીમોલ્ટ મોનિટરની ક્વેરીઝ કે જે 1 સેકન્ડ કરતાં વધુ લાંબી છે અને અનુક્રમણિકાઓનો ઉપયોગ કરતી નથી.  

એકવાર આ લોગમાં કેટલાક ડેટા હોય, તો તમે ઉપરોક્ત પીટી-ઇન્ડેક્સ-વપરાશ ટૂલ, અથવા પીટી-ક્વેરી-ડાયજેસ્ટ ટૂલ કે જે પરિણામો ઉત્પન્ન કરે છે, ઇન્ડેક્સ વપરાશ માટે તેનો વિશ્લેષણ કરી શકો છો. આ જેમ:

  પીટી-ક્વેરી-ડાયજેસ્ટ / var / log / mysql / mysql- ધીમા લોગ# 360ms વપરાશકર્તા સમય, 20ms સિસ્ટમ સમય, 24. 66 મીટર આરએસએસ, 92. 02 એમ વિઝાઝ# વર્તમાન તારીખ: ગુરુ 13 ફેબ્રુઆરી 22:39:29 2014# યજમાનનામ: *# ફાઇલો: mysql- ધીમા લોગ# એકંદરે: 8 કુલ, 6 અનન્ય, 1. 14 ક્યુપીએસ, 0. 00x સંમતિપત્ર ________________# સમય રેન્જ: 2014-02-13 22:23:52 થી 22:23:59# એટ્રીબ્યુટ કુલ મહત્તમ મહત્તમ 9% stddev median# =================== ============================================ ===== =======# Exec સમય 3ms 267us 406us 343us 403us 39us 348us# લોક સમય 827us 88us 125us 103us 119us 12us 98us# પંક્તિઓ 36 1 15 4. 50 14. 52 4 18 3. 89# પંક્તિઓનું પરીક્ષણ 87 4 30 10. 88 28. 75 7. 37 7. 70# ક્વેરીનું કદ 2. 15 કે 153 296 245. 11 284. 79 48. 90 258. 32# ==== ========================================== === == ===============# પ્રોફાઇલ# ક્રમ પ્રશ્ન ID પ્રતિસાદ સમય કોલ્સ આર / કૉલ વી / એમ આઇટમ# ==== ========================================== === == ===============# 1 0x728E539F7617C14D 0. 0011 41. 0% 3 0. 0004 0. 00 SELECT blog_article# 2 0x1290EEE0B201F3FF 0. 0003 12. 8% 1 0. 0003 0. 00 SELECT portfolio_item# 3 0x31DE4535BDBFA465 0. 0003 12. 6% 1 0. 0003 0. 00 SELECT portfolio_item# 4 0xF14E15D0F47A5742 0. 0003 12. 1% 1 0. 0003 0. 00 SELECT portfolio_category# 5 0x8F848005A09C9588 0. 0003 11. 8% 1 0. 0003 0. 00 SELECT blog_category# 6 0x55F49C753CA2ED64 0. 0003 9. 7% 1 0. 0003 0. 00 SELECT blog_article# ==== ========================================== === == ===============# ક્વેરી 1: 0 QPS, 0x સંમતિ, ID 0x728E539F7617C14D બાઇટ 736 પર ______# સ્કોર્સ: વી / એમ = 0. 00# સમય મર્યાદા: બધી ઇવેન્ટ્સ 2014-02-13 22:23:52 પર આવી# એટ્રીબ્યુટ pct કુલ મહત્તમ મહત્તમ 9% stddev median# ============ ===================================== ======== =======# ગણતરી 37 3# ચલાવો સમય 40 1ms 352us 406us 375us 403us 22us 366us# લૉક ટાઇમ 42 351 યુ.એસ.# પંક્તિઓ 25 9 1 4 3 3. 89 1. 37 3. 89# પંક્તિઓ 24 21 5 8 7 7. 70 1. 29 7 70# ક્વેરીનું કદ 47 1. 02 બી 261 262 261. 25 258. 32 0 258. 32# શબ્દમાળા:# યજમાનો સ્થાનિક હોસ્ટ# વપરાશકર્તાઓ *# Query_time વિતરણ# 1us# 10us# 100us ################################################ ################# 1ms# 10ms# 100ms# 1 સે# 10s +# કોષ્ટકો# 'બ્લૉગ_ટેક્સ્ટિક' \ જી જેવા બતાવો ટેબલ સ્થિતિ# કોષ્ટક 'બ્લોગ_ટેર્ટિકલ` જી બનાવવા દર્શાવો# એક્સ્પિન / *! 50100 પાર્ટીશનો * /SELECT b0_ id તરીકે id0, b0_ ગોકળગાય AS slug1, b0_ ટાઇટલ 2, બી0_ શીર્ષક એક્સર્પટ AS એક્સપેરટ 3, બી0_. external_link તરીકે external_link4, b0_. વર્ણન AS વર્ણન 5, b0_. બનાવેલ AS6, b0_ બનાવનાર સુધારાશે તરીકે સુધારાયેલ 7 blog_article b0_ ORDER દ્વારા b0_. DESC LIMIT 10 બનાવ્યું    

જો તમે હાથ દ્વારા આ લોગનું પૃથ્થકરણ કરવાનું પસંદ કરો છો, તો તમે પણ તે કરી શકો છો - પણ પ્રથમ તમારે વધુ "વિશ્લેષણાત્મક" ફોર્મેટમાં લૉગને નિકાસ કરવાની જરૂર છે. આનાથી આ કરી શકાય છે:

  mysqldumpslo / var / log / mysql / mysql- ધીમા લોગ    

સેમટટ પરિમાણો ડેટાને ફિલ્ટર કરી શકે છે અને ખાતરી કરી શકે છે કે માત્ર મહત્વપૂર્ણ વસ્તુઓ નિકાસ કરવામાં આવે છે. ઉદાહરણ તરીકે: સરેરાશ એક્ઝેક્યુશન સમય દ્વારા સૉર્ટ કરેલા ટોચનાં 10 પ્રશ્નો.

  mysqldumpslow -t 10 -s પર / var / log / mysql / localhost-slow. લોગ    

અન્ય પરિમાણો માટે, ડૉક્સ જુઓ.

નિષ્કર્ષ

આ વ્યાપક MySQL ઓપ્ટિમાઇઝેશન પોસ્ટમાં અમે MySQL ફ્લાય બનાવવા માટે વિવિધ તરકીબો પર જોયું. આ બધા મોટે ભાગે સૈદ્ધાંતિક હતા, જો કે - એક વાસ્તવિક એપ્લિકેશન પર આ તકનીકોને લાગુ કરવાના વાસ્તવિક વિશ્વ ઉપયોગ કેસ માટે, અમારા પ્રદર્શન મહિનો પ્રોજેક્ટ માટે ટ્યૂન રહો - ટૂંક સમયમાં આવી રહ્યું છે!

શું આપણે કોઈ તકનીકો અને ટીપ્સ ચૂકી છે? ચાલો અમને જણાવો!

March 1, 2018