SAP性能優化(一)- 匯總
SAP的透明表中,數據量一旦達到千萬、億級,我們不得不考慮數據庫優化的問題。
1. Data Archiving數據歸檔
這個是最行之有效的方法。
Tcode :
SARA 數據歸檔主要的Tcode
DB02 性能分析,主要是Performance,sapce等。
2. 建立索引
SE11,在表中,Create index。這里創建索引的依據是Where條件后面的字段,肯定不全是key fields了,一般關鍵字已經被sap默認創建為Primary Index。犧牲一些空間,達到性能的提高。
3. 建立View
此機制不是很理解,有知道的可以指點一下,先謝謝咯。
4. 用Hint指定Index
Hint是Oracle提供的一種SQL語法,它允許用戶在SQL語句中插入相關的語法,從而影響SQL的執行方式,如果你的Hint寫錯了,在Oracle層會當作注釋處理掉。
ABAP中常見有兩種用法:(注:在SQL代碼中加入Hint,特別是性能相關的Hint是很危險的做法,寫得不匹配反而拖累Performance。)
1.全表掃描:%_HINTS ORACLE 'FULL("table_name")'
2.指定索引:%_HINTS ORACLE 'INDEX("table_name" " index_name")'
寫Select建議:
1.多表查詢,盡量維護一個View,千萬不要嵌套,如Select套Select、Loop兩層嵌套Loop或Loop嵌套Select;
2.使用Inner Join;
SELECT H~LGNUM H~TANUM I~TAPOS
INTO TABLE IT_DATA
FROM LTAK AS H
INNER JOIN LTAP AS I
ON H~LGNUM EQ I~LGNUM
AND H~TANUM EQ I~TANUM
WHERE BDATU EQ '20120412'.
3.使用子查詢
SELECT *
INTO TABLE IT_DATA
FROM LTAP AS I
WHERE WERKS EQ '1000'
AND EXISTS ( SELECT * FROM LTAK
WHERE LGNUM EQ I~LGNUM
AND TANUM EQ I~TANUM
AND DRUCK EQ 'X' )
AND TAPOS EQ '1'.
相關Transaction Code:
ST05 性能分析,追蹤SQL,分析哪條SQL Statement語句,最耗時間
STAD 得到某個程序或事務運行時的總體分析數據,系統時間,CPU時間等
SE30 分析某個事務或程序的執行時間,有一些性能分析的例子