Changes between Version 67 and Version 68 of QueryOptimization
- Timestamp:
- 05/17/26 13:53:19 (3 weeks ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
QueryOptimization
v67 v68 1075 1075 }}} 1076 1076 1077 ==== Без индекс: 1077 ==== 1. Примарен филтер: 1078 1079 Примарен филтер за овој поглед е `event_id`. Овој поглед е наменет за организаторите на настани кои сакаат да видат прецизен финансиски извештај за одреден настан во реално време. 1080 1081 ==== 2. Случај на употреба: 1082 1083 Овој поглед се користи за пресметка на чистата заработка откако ќе се одбијат сите рефундирани средства, како и за следење на профитот остварен од административните такси при рефундација. Поради комплексноста на агрегациите врз милиони редови, оптимизацијата тука е критична за да не се блокира работата на финансискиот сектор. 1084 1085 ==== 3. Иницијално време: 1086 1087 Иницијалното време за извршување изнесува 319.320 s (околу 5.3 минути). Ова е најбавното време во целиот проект, што го прави погледот неупотреблив во реални услови без индексирање. 1088 1089 ==== 4. Анализа на планот на извршување (без индекси): 1090 1091 Најголемиот товар паѓа на '''Parallel Seq Scan''' врз табелата `Ticket_Purchase` (над 315 s). Базата мора да ги помине сите 16 милиони записи за да ги пресмета сумите. 1092 1093 Се користи '''Parallel Hash Join''' кој бара огромна количина на меморија и процесорска моќ за да ги поврзе трансакциите со билетите и нивните соодветни настани. 1078 1094 1079 1095 * '''SELECT''' … … 1167 1183 Овој поглед има критично време на извршување од над 5 минути поради обработка на милиони трансакции. Индексите на `ticket_id` го намалуваат времето за 99%, овозможувајќи моментален преглед на приходите и рефундациите за секој настан. 1168 1184 1169 ==== Оптимизација: 1185 ==== 5. Оптимизација и индексирање: 1186 1187 За да се овозможи побрзо филтрирање и поврзување на трансакциите, воведени се: 1188 1189 * `idx_ticket_purchase_ticket_id`: Клучен за брзо поврзување на трансакциите со табелата на билети. 1190 1191 * `idx_ticket_event_happening_id`: Овозможува базата веднаш да ги групира билетите според термините на настанот. 1192 1193 * `idx_ticket_refund_purchase_id`: Го забрзува '''LEFT JOIN''' делот каде што се проверува дали за одредена трансакција постои рефундација. 1170 1194 1171 1195 {{{ … … 1182 1206 }}} 1183 1207 1184 ==== Со индекс: 1208 ==== 6. Резултат по оптимизација: 1209 1210 Времето на извршување е намалено на 1.510 s (1510 ms). 1211 1212 Подобрување: Ова е забрзување од 211 пати. 1213 1214 Иако 1.5 s се уште изгледа како „многу“ во споредба со претходните погледи, за анализа на 16 милиони трансакции со комплексни '''SUM''' и '''CASE''' операции, ова е извонреден резултат. 1185 1215 1186 1216 * '''SELECT'''
