SAP 关于ABAP TABLE BUFFER的解释
Index可以被看成是表記錄的特殊幾個字段的copy。這個copy是排序的,這樣可以提高查詢表的性能。Index中含有指針用于指向其在表中所在的位置。
使用index時的注意事項:
l?????????要利用Index提升性能,索引字段必須位于where子句的最前面。
l?????????只用那些可以明顯的減少記錄數量的字段才適合作為索引。
l?????????當修改表中的記錄時,索引的順序就會被改變,所以對于頻繁修改的表不適合建索引。
l?????????一個表中不同的索引的耦合要盡量松散
當要去表中的記錄時database optimizer會決定應當使用那個index。用戶可以創建自己的index但是必須以Y或Z開始。在創建索引是你可以選擇在那些類型的數據庫中創建索引。
Table buffer可以大大提高訪問表的性能。隨著數據的增加對緩存的空間要求越來越多較長時間沒有被訪問到得數據就會被置換掉。只有當緩存剩余的空間小于閥值或訪問性能沒有達到要求時緩存中的數據才會被置換掉。可以再command field中敲入/$TAB來清空所在application server上的緩存。/$SYNC可以清空所在application server上的所有緩存。
SAP系統在每個application server上管理和同步緩存。當程序讀取表的數據時database interface首先到application server得緩存中去查看是否有符合條件的數據如果有就直接從換從中讀取,如果沒有就到數據庫中去讀取,然后把讀取到的數據放到緩存中。
按照往換從放數據方式的不同可以分成三種緩沖類型:
l?????????Full buffer:當表中的一條記錄被訪問時,所有的記錄都會被放到緩存中
l?????????Genric buffer:訪問到得記錄的key的左連接(left join)被緩存。
l?????????Single-record buffer:只有被訪問到得記錄被緩存。
Fully buffer:比較小的表,很少被修改適合fully buffer。對于那種場景是表中的記錄不存在的查詢經常被使用的表也適合做fully buffer。另外對于fully buffer由于buffer中的記錄是按照key排序的所以查詢條件要充分利用索引,否則的話很有可能性能還沒有直接從數據庫中訪問利用secondary index好。
Single-record buffer適合于select single語句對于select single找不到記錄的情況,buffer中也會記錄這種情況下找不到,下次使用這個語句時就不會再讀取數據庫了。
由于buffer是在服務器本地管理的,buffer中的數據必須與數據庫同步。同步的動作在一定周期內發生,這個周期是有參數rdisp/bufreftime設置的。
Buffer在application server本地保存的有點時減少了網絡流量,缺點是在buffer中可能存在臟數據。所以使用buffer時應當注意這幾點。
總結
以上是生活随笔為你收集整理的SAP 关于ABAP TABLE BUFFER的解释的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Segment-段(SAP)
- 下一篇: 以人致胜 SAP开启HR云端变革之旅