wiki:QueryOptimization

Version 4 (modified by 231017, 18 hours ago) ( diff )

--

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

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% подобри перформанси
  • Време потребно за внесување на нов запис без индекс:

  • Со индекс:

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

  • Со индекс:

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

Attachments (30)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.