wiki:QueryOptimization

Оптимизација на прашалници и погледи

1. Анализа на поглед 1, добивање на бројот на следбеници и бројот на профили кои ги следи даден корисник

  • Доколку сакаме да видиме за конкретен артист извршуваме:

  • Времето потребно за извршување за овој прашалник е ~6ms. Нема потреба од дополнителни индекси.
  • Доколку сакаме да извршиме некаква анализа, на пример да ги земеме најдобрите 10 корисници според број на следбеници, можеме да извршиме:

  • Потребно време за извршување на овој прашалник е ~200ms. Нема индекс кој може да се додаде за да ги подобри перформансите на овој прашалник.
  • Query plan:

2. Анализа на поглед 2, најактивни корисници на платформата според бројот на слушања во изминатите 30 дена

  • Доколку сакаме да видиме кои се најактивните корисници на платформата изминатите 30 дена, извршуваме:

  • Времето потребно за пребарување:

  • ~250ms
  • Можеме да додадеме индекс на streamed_at колоната со цел да избегнеме sequential scan на song_streams табелата:

  • Време на извршување по додавање на индекс:

  • ~200ms -> ~20% подобри перформанси

3. Анализа на поглед 3, рангирање на песни по нивните просечни оценки и бројот на вкупни оценки, соодветно

  • Доколку сакаме да ги видиме најдобро оценуваните песни на платформата, извршуваме:

  • Време потребно за пребарување:

  • ~260ms
  • Можеме да додадеме индекс на song_id, grade со цел да избегнеме sequential scan на songs:

  • Време на извршување по додавање на индекс:

  • ~200ms -> ~20% подобри перформанси
  • Време потребно за внесување на нов запис без индекс:

  • Со индекс:

  • Време потребно за ажурирање на запис без индекс:

  • Со индекс:

  • Во двата случаи (запишување и ажурирање) нема никаков ефект врз перформансите додавање на индексот

4. Анализа на поглед 4, рангирање на артистите по слушања (популарност) во изминатите 30 дена

  • Доколку сакаме да видиме како одреден артист се рангира во споредба со остнатите артисти, извршуваме:

  • Време потребно за пребарување:

  • ~5-6sec. Бавната операција е секвенцијално пребарување на Song_streams табелата што би можеле да го оптимизираме со индекс:

  • Време на извршување со индекс:

  • ~2sec. Со индекс добивме ~ 57% побрзо извршување.
  • Време потребно за внес на запис во Song_streams без индекс:

  • 0.2ms
  • Време потребно за внес на запис во Song_streams со индекс:

  • ~3ms
  • Време потребно за ажурирање запис во Song_streams без индекс:

  • ~0.7ms
  • Време потребно за ажурирање запис во Song_streams со индекс:

  • ~0.2ms
Last modified 16 hours ago Last modified on 05/06/26 10:35:43

Attachments (30)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.