Changes between Initial Version and Version 1 of Phase4


Ignore:
Timestamp:
09/04/25 10:53:22 (3 weeks ago)
Author:
213280
Comment:

Creation of phase4

Legend:

Unmodified
Added
Removed
Modified
  • Phase4

    v1 v1  
     1= Профилирање и оптимизација на извршувањето на прашалниците =
     2
     3=== Оптимизација преку користење на: Materialized summary table (via stored procedure) ===
     4
     5На сликата го имаме погледот од '''Фаза 1''':
     6
     7[[Image(top_items_in_order_for_business_create_view.png, 600px)]]
     8
     9Користењето на View во оваа ситуација не е доволно, поради тоа што погледите при секој нивен повик повторно се процесираат, а тоа одзима многу време. За дополнителна оптимизација би можеле да користеме MATERIALIZED VIEW, но такво нешто не постои во MSSQL. Најблиско нешто до тоа ни е INDEX VIEW кое исто како и MATERIALIZED VIEW е precomputed, но поради тоа што таквиот поглед има голем број на рестрикции и постои шанса да не работи добро кога имаме агрегирачки функции ќе се обидеме на поинаков начин да стигнеме до посакуваната цел.
     10
     11===== Можно решение: =====
     12
     13''Креирање на нова табела во која што ќе ги чуваме агрегираните податоци.''
     14
     15{{{
     16#!sql
     17
     18    CREATE TABLE [dbo].[TopItemsInOrderForBusiness_MV] (
     19     [BusinessId] INT NOT NULL,
     20     [BusinessName] NVARCHAR(255),
     21     [OrderYear] INT NOT NULL,
     22     [OrderMonth] INT NOT NULL,
     23     [FoodItemId] INT NOT NULL,
     24     [FoodItemName] NVARCHAR(255),
     25     [TotalQuantitySold] BIGINT NOT NULL,
     26     [LastUpdatedAt] DATETIME NOT NULL DEFAULT GETDATE(),
     27     CONSTRAINT PK_TopItems PRIMARY KEY (
     28        [BusinessId], [OrderYear], [OrderMonth], [FoodItemId]
     29     )
     30    );
     31}}}
     32
     33----
     34
     35''За менаџирање со оваа табела ги креираме и следните stored procedures:''
     36
     37----
     38
     39[[Image(sp_Initialize_TopItemsInOrderForBusiness_History.png, 600px)]]
     40
     41
     42- Со оваа процедура ги пополнуваме податоците од претходните месеци кои што ги имаме во базата поради тоа што тие повеќе не можат да се менуваат.
     43
     44----
     45
     46[[Image(sp_RefreshTopItemsInOrderForBusiness.png, 600px)]]
     47
     48- Додека пак преку оваа процедура ќе ги пополнуваме податоците за тековниот месец. Оваа процедура можеме да ја ставиме да се извшува на секој час или пак еднаш во денот во зависност од тоа колку ние битно податоците да се up to date.
     49
     50По направената оптимизација, истиот прашалник на кому претходно му беше потребно нешто повеќе од 5 секунди, сега се извшува за 150-200 ms.
     51
     52[[Image(query_1_test_time.png, 500px)]]