Order Analytics SQL Migration Scripts
概覽
此目錄包含 Order Analytics 階段性擴展的 SQL migration 腳本。
📁 文件說明
order_analytics_views_phase1.sql
用途: Phase 2 輕量擴展升級腳本 適用: 從 Phase 1 (零擴展) 升級到 Phase 2 包含:
- 5個基礎分析視圖
- 3個效能優化索引
- 1個摘要函數
執行條件:
- 現有系統使用
OrderAnalyticsZeroExpansionService - 查詢效能需要提升 5-10倍
- 支援 10-50 並發用戶
order_analytics_views.sql
用途: Phase 3 完整擴展升級腳本
適用: 從 Phase 2 升級到 Phase 3,或直接從 Phase 1 跳級升級 包含:
- 15個進階分析視圖
- 8個高效能索引
- 2個預計算函數
- 完整的企業級分析能力
執行條件:
- 需要企業級效能(20-50倍提升)
- 支援 100+ 並發用戶
- 資料量超過 100,000 筆訂單
執行指南
Phase 1 → Phase 2 升級
bash
# 1. 備份資料庫
pg_dump -h localhost -U postgres -d your_database > backup_$(date +%Y%m%d).sql
# 2. 執行 Phase 2 升級
psql -h localhost -U postgres -d your_database -f order_analytics_views_phase1.sql
# 3. 驗證升級
psql -h localhost -U postgres -d your_database -c "\\dv order_*"Phase 2 → Phase 3 升級
bash
# 1. 備份資料庫
pg_dump -h localhost -U postgres -d your_database > backup_$(date +%Y%m%d).sql
# 2. 執行 Phase 3 升級
psql -h localhost -U postgres -d your_database -f order_analytics_views.sql
# 3. 驗證升級
psql -h localhost -U postgres -d your_database -c "\\df get_order_*"直接升級到 Phase 3
bash
# 如果想跳過 Phase 2 直接升級到 Phase 3
psql -h localhost -U postgres -d your_database -f order_analytics_views.sql注意事項
執行前檢查
- 資料庫版本: PostgreSQL 12+ (支援 FILTER 語法)
- 權限確認: 需要 CREATE VIEW, CREATE INDEX, CREATE FUNCTION 權限
- 儲存空間: 確保有足夠空間用於索引建立
- 維護窗口: 建議在低峰時段執行
回滾計劃
sql
-- 如需回滾 Phase 2 變更
DROP VIEW IF EXISTS order_basic_funnel_analysis;
DROP VIEW IF EXISTS payment_method_basic_performance;
DROP VIEW IF EXISTS delivery_basic_performance;
DROP VIEW IF EXISTS customer_order_basic_behavior;
DROP VIEW IF EXISTS order_cancellation_basic_analysis;
DROP FUNCTION IF EXISTS get_order_basic_summary;
DROP INDEX IF EXISTS idx_orders_created_at_status;
DROP INDEX IF EXISTS idx_orders_payment_method;
DROP INDEX IF EXISTS idx_orders_user_id_created_at;
-- 如需回滾 Phase 3 變更
DROP VIEW IF EXISTS order_funnel_analysis;
DROP VIEW IF EXISTS order_cancellation_analysis;
DROP VIEW IF EXISTS payment_method_performance;
DROP VIEW IF EXISTS delivery_performance_analysis;
DROP VIEW IF EXISTS customer_order_behavior_analysis;
DROP FUNCTION IF EXISTS get_order_funnel_summary;
DROP FUNCTION IF EXISTS get_cancellation_summary;
-- ... 其他索引效能預期
Phase 2 預期提升
- 查詢回應時間: 3-5秒 → 0.5-1秒
- CPU 使用率: 85% → 35%
- 支援併發: 5用戶 → 10-50用戶
Phase 3 預期提升
- 查詢回應時間: 3-5秒 → 0.1-0.3秒
- CPU 使用率: 85% → 15%
- 支援併發: 5用戶 → 100+用戶
🔍 驗證腳本
功能驗證
sql
-- 檢查視圖是否建立成功
SELECT schemaname, viewname
FROM pg_views
WHERE viewname LIKE 'order_%' OR viewname LIKE '%_performance%';
-- 檢查函數是否建立成功
SELECT proname, pronargs
FROM pg_proc
WHERE proname LIKE 'get_order_%';
-- 檢查索引是否建立成功
SELECT indexname, tablename
FROM pg_indexes
WHERE indexname LIKE 'idx_orders_%';效能驗證
sql
-- 測試查詢效能
EXPLAIN ANALYZE
SELECT * FROM order_basic_funnel_analysis
WHERE analysis_date >= CURRENT_DATE - INTERVAL '30 days';
-- 測試函數效能
EXPLAIN ANALYZE
SELECT * FROM get_order_basic_summary(
CURRENT_DATE - INTERVAL '30 days',
CURRENT_DATE
);相關文檔
最後更新: 2025-07-26