1.緩沖日志I/O會經(jīng)歷局部塊寫。因為重做寫隨機的日志塊號并且日志塊相對于文件系統(tǒng)緩沖較小。通常重做寫的最后一個日志塊不會分配到文件系統(tǒng)緩沖結(jié)尾。因此,除非日志文件舊映像所在的目標文件塊仍在緩存中,否則在重做拷貝到其文件系統(tǒng)緩沖的另一部分前必須將那個塊從磁盤讀取到內(nèi)存。從日志文件預(yù)讀主要用于緩沖重做寫。
如果磁盤陣列有很大的緩存并且在日志文件上具有高效的預(yù)推進算法,那么預(yù)讀花費的時間可能非常小,并且不會推遲重做寫。但是如果預(yù)讀和重做寫要求物理磁盤服務(wù),則肯定會有額外的延遲,并且等于磁盤全旋轉(zhuǎn)的延遲。
2.緩沖日志I/O也會經(jīng)歷I/O碎片。當重做寫到多個文件系統(tǒng)緩沖時,每個緩沖的物理寫無法排隊為并行的,因此不能被硬件流水線操作。相反,組件物理寫串行執(zhí)行,并且在每對寫之間維持一個完全的旋轉(zhuǎn)延遲。
這些問題都可以通過使用文件系統(tǒng)直接I/O或者使用裸日志文件解決。裸I/O通常比直接I/O更好,因為其允許更有效的使用異步I/O。
LGWR需要異步I/O并行化寫多個日志文件成員以及在事務(wù)提交時迭代重做寫。可以使用硬件鏡像重做日志以避免串行寫到多個日志文件成員,并且可以使用硬件鏡像最小化重做寫的CPU代價。但是異步I/O需要迭代隨后的重做寫,因為LGWR I/O slaves不會一致的做該工作。裸I/O使得異步I/O有可能實現(xiàn),而其他的需要LGWR依賴線程異步I/O或LGWR I/O slaves。
注:部分塊寫,I/O碎片和同步I/O寫都會嚴重影響LGWR's I/O的性能及可擴展性。
新聞熱點
疑難解答
圖片精選