1. Анализа на view vw_booking_details
Погледот vw_booking_overview се користи за анализа на резервации според нивниот статус, со цел добивање комплетен преглед на сите поврзани информации за секоја резервација (гостин, соба, имот и домаќин). Во оваа операција се користи филтрирање booking_status = ‘COMPLETED’ за да се извлечат само завршените резервации. Иницијалното време за извршување на погледот е 23sec
Ова не е прифатливо време за апликацијата па затоа пристапуваме кон индексирање.
Со креирање на индекс
create index idx_guests_user_id on guests(user_id);
Се добива подобрување:
2. Анализа на view vw_guest_activity
Погледот vw_guest_activity се користи за анализа на активноста на гостите во системот, со цел добивање комплетен преглед на нивното однесување и интеракции. Доколку сакаме да ги прикажеме најактивните гости според број на комплетирани резервации користиме филтер completed_bookings > 3
Времето за извршување: 9 минути
За оптимизација се користи Materialized View со цел да се избегнат повторливи и скапи JOIN операции со табелите bookings, reviews и favorite_listings, како и тешки агрегатни пресметки (COUNT, SUM, AVG) и групирање на големи сетови податоци. Со претходно пресметување и физичко складирање на резултатите се намалува времето на извршување и се подобрува перформансата при анализа на активноста на гостите.
Времето потребно сега е: 213ms
3. Анализа на view vw_revenue_by_property
Овој поглед служи за анализа на приход и перформанси по недвижнина (property). Ги комбинира податоците за резервации, плаќања, локација, тип на оглас и рецензии, и дава агрегирани метрики како вкупен приход, број на резервации и просечен рејтинг. Ако сакаме да видиме заработката по сместување, извршуваме со филтер total_revenue>10 000
Време на извршување: 5 минути
За оптимизација се користи Materialized View со цел да се избегнат скапи JOIN операции со табелите bookings и payments, како и тешки агрегатни пресметки (SUM, COUNT, AVG) и групирање над големи сетови податоци. Со претходно пресметување и физичко складирање на резултатите значително се намалува времето на извршување и се подобрува перформансата при анализа на приходите и статистиките по недвижност. Новото време на извршување: 510ms
4. Aнализа на vw_payment_status
Овој поглед служи за анализа на статусот на плаќањата за секоја резервација. Ги комбинира податоците од резервации, плаќања, методи на плаќање, гости, хостови и недвижнини, со цел да даде целосен преглед на секоја трансакција и нејзината финансиска состојба. Ако сакаме да видиме само успешно платени резервации, користиме филтер payment_status = ‘PAID’ Време на извршување: 16 минути
Ова не е прифатливо време за апликацијата па затоа пристапуваме кон индексирање
Се креира индекс
create index idx_payments_status_booking on payments(payment_status, booking_id);
Со што имаме значително подобрување:
5. Aнализа на vw_host_performance
Овој поглед служи за анализа на перформансите на хостовите (домаќините) на платформата. Ги комбинира податоците за хостови, корисници, недвижнини, соби, резервации, плаќања и рецензии, и дава агрегирани метрики за секој хост. Доколку сакаме да ги анализираме најуспешните хостови, можеме да извршиме пребарување со филтер avg_rating >= 4. Време на извршување: 2 минути
За оптимизација се користи Materialized View со цел да се избегнат скапи JOIN операции помеѓу табелите hosts, users, properties, rooms, bookings, payments и reviews, како и комплексни агрегатни функции како COUNT(DISTINCT), SUM и AVG над големи количини на податоци. Со претходно пресметување и физичко складирање на резултатите значително се намалува времето на извршување и се подобрува перформансата при анализа на успешноста на хостовите.
Новото време на извршување: 389 милисекунди
6. Aнализа на vw_room_details
Овој поглед служи за детална анализа на собите во рамки на објектите. Ги комбинира податоците за соби, нивните типови, припадните недвижнини, локацијата, хостот, како и дополнителни информации како капацитет, цени, удобности и резервации. Доколку сакаме да гледаме собите од активни објекти користиме филтер: property_status = ‘ACTIVE’ Времето: 11 минути
Ова не е прифатливо време за апликацијата па затоа пристапуваме кон индексирање.
Со креирање на индекс
create index idx_bookings_room_status on bookings (room_id, booking_status);
Новото време е 2 минути
7. Анализа на vw_review_summary
Овој поглед служи за анализа на рецензиите и задоволството на гостите за секоја недвижнина. Ги комбинира податоците за рецензии, резервации, гости, хостови и локацијата на сместувањето, со цел да обезбеди детален преглед на оценките и коментарите. Ако сакаме да ги видиме само позитивните рецензии со оцена користиме филтер: rating>=4
Време на извршување: 6 минути
Ова не е прифатливо време за апликацијата па затоа пристапуваме кон индексирање.
Со креирање на индекс
create index idx_bookings_booking_id on bookings (booking_id);
Времето е: 10s
8. Aнализа за vw_property_summary
Овој поглед служи за анализа и преглед на недвижнините (properties) на платформата. Ги комбинира податоците за сместувањата, нивната локација, хостовите, собите, рецензиите и политиките за откажување, со цел да обезбеди детална статистика за секоја недвижнина.Доколку сакаме да видиме недвижини кои има поголем број рецензии користиме филтер: review_count >15 Време: 1 минута
Оптимизација: Погледот е претворен во Materialized View поради големиот број JOIN операции, агрегатни функции (COUNT, AVG, MIN, MAX) и обработка на милиони редови од табелите reviews и rooms. Со физичко зачувување на пресметаните резултати се избегнува повторно извршување на сложените пресметки при секое пребарување, што значително ги подобрува перформансите и го намалува оптоварувањето на базата при аналитички извештаи.
Време: 134ms
9. Aнализа на vw_avalability_windows
Овој поглед служи за анализа на достапноста на собите во одредени временски периоди. Ги комбинира податоците за временските прозорци на достапност и информациите за собите, со цел да прикаже кога и кои соби се слободни за резервација Доколку сакаме да ги прикажеме сите идни достапни термини за резервација, можеме да извршиме пребарување со филтер available_date >= CURRENT_DATE.
Време на извршување: 18 секунди
Со додавање на индекси беше забележано влошување на перформансите, при што времето на извршување се зголеми од 18 на 23 секунди. Поради тоа, заклучено е дека за овој поглед индексите не придонесуваат за подобрување на извршувањето, па затоа не се користени дополнителни индекси.
Attachments (21)
- avalability window query.png (36.7 KB ) - added by 11 days ago.
- booking analysis.png (118.0 KB ) - added by 11 days ago.
- booking query.png (15.2 KB ) - added by 11 days ago.
- guest_activity opt.png (15.1 KB ) - added by 11 days ago.
- guest_activity query.png (14.4 KB ) - added by 11 days ago.
- host performance opt.png (48.2 KB ) - added by 11 days ago.
- host_performance query.png (36.4 KB ) - added by 11 days ago.
- index booking query.png (15.4 KB ) - added by 11 days ago.
- payment_status analysis.png (111.4 KB ) - added by 11 days ago.
- payment_status query.png (14.6 KB ) - added by 11 days ago.
- paymnet status index query.png (14.5 KB ) - added by 11 days ago.
- property summary opt.png (14.8 KB ) - added by 11 days ago.
- property_summary quary.png (14.6 KB ) - added by 11 days ago.
- revenue by property opt.png (14.7 KB ) - added by 11 days ago.
- revenue_by_property query.png (14.2 KB ) - added by 11 days ago.
- review_summary index query.png (14.3 KB ) - added by 11 days ago.
- review_summary_analysis.png (94.6 KB ) - added by 11 days ago.
- review_summary_quary.png (14.0 KB ) - added by 11 days ago.
- room details analysis.png (50.1 KB ) - added by 11 days ago.
- room details index query.png (15.7 KB ) - added by 11 days ago.
- room_details query.png (15.3 KB ) - added by 11 days ago.
Download all attachments as: .zip





















