Version 2 (modified by 3 weeks ago) ( diff ) | ,
---|
Профилирање и оптимизација на извршувањето на прашалниците
Оптимизација преку користење на: Materialized summary table (via stored procedure)
На сликата го имаме погледот од Фаза 1:
Користењето на View во оваа ситуација не е доволно, поради тоа што погледите при секој нивен повик повторно се процесираат, а тоа одзима многу време. За дополнителна оптимизација би можеле да користеме MATERIALIZED VIEW, но такво нешто не постои во MSSQL. Најблиско нешто до тоа ни е INDEX VIEW кое исто како и MATERIALIZED VIEW е precomputed, но поради тоа што таквиот поглед има голем број на рестрикции и постои шанса да не работи добро кога имаме агрегирачки функции ќе се обидеме на поинаков начин да стигнеме до посакуваната цел.
Можно решение:
Креирање на нова табела во која што ќе ги чуваме агрегираните податоци.
CREATE TABLE [dbo].[TopItemsInOrderForBusiness_MV] ( [BusinessId] INT NOT NULL, [BusinessName] NVARCHAR(255), [OrderYear] INT NOT NULL, [OrderMonth] INT NOT NULL, [FoodItemId] INT NOT NULL, [FoodItemName] NVARCHAR(255), [TotalQuantitySold] BIGINT NOT NULL, [LastUpdatedAt] DATETIME NOT NULL DEFAULT GETDATE(), CONSTRAINT PK_TopItems PRIMARY KEY ( [BusinessId], [OrderYear], [OrderMonth], [FoodItemId] ) );
За менаџирање со оваа табела ги креираме и следните stored procedures:
- Со оваа процедура ги пополнуваме податоците од претходните месеци кои што ги имаме во базата поради тоа што тие повеќе не можат да се менуваат.
- Додека пак преку оваа процедура ќе ги пополнуваме податоците за тековниот месец. Оваа процедура можеме да ја ставиме да се извшува на секој час или пак еднаш во денот во зависност од тоа колку ние битно податоците да се up to date.
По направената оптимизација, истиот прашалник на кому претходно му беше потребно нешто повеќе од 5 секунди, сега се извшува за 150-200 ms.
Attachments (5)
- sp_Initialize_TopItemsInOrderForBusiness_History.png (253.7 KB ) - added by 3 weeks ago.
- sp_RefreshTopItemsInOrderForBusiness.png (251.9 KB ) - added by 3 weeks ago.
- query_1_test_time.png (94.0 KB ) - added by 3 weeks ago.
- top_items_in_order_for_business_create_view.png (170.5 KB ) - added by 3 weeks ago.
- query_1_test_performance.png (15.7 KB ) - added by 3 weeks ago.
Download all attachments as: .zip