簡體   English   中英

使用ets函數讀取mnesia表(erlang)

[英]Using ets function to read mnesia table (erlang)

使用mnesia處理一個erlang項目(一些表是ram副本,一些表是磁盤副本,某些表兩者都)。 為了優化某個讀取(內存表),我使用了ets查找而不是我一直在使用的mnesiadirty_read,並為例程的兩個版本計時。 ets查找的速度明顯快於mnesia的dirty_read。

我的問題是使用ets vs mnesia讀取某張記憶表是否有一些“陷阱”或“捕捉”(必須存在,否則就沒有理由存在讀取速度較慢的記憶)。 如果有什么不同,我不需要,也沒有使用任何“扭曲的”或“節點”。 換句話說,我現在將僅在單台計算機上使用單個節點。

即使表是本地的,mnesia:dirty_read也會執行rpc調用。 此外,它還會檢查當前的活動上下文並維護它,甚至進行臟查找。 這將導致查找所需的額外時間。

在您的情況下(只有一個帶有局部記憶的節點),直接ets查找應該可以工作,但不建議這樣做,因為它將依賴於實現。 最好使用mnesia:ets(Fun,[,Args])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM