Add fadvise help to scan
This commit is contained in:
parent
d5babe0c29
commit
62a84b95bb
1 changed files with 21 additions and 11 deletions
|
@ -649,19 +649,29 @@ handle_sync_event({cdb_scan, FilterFun, Acc, StartPos},
|
||||||
{ok, StartPos}
|
{ok, StartPos}
|
||||||
end,
|
end,
|
||||||
file:position(State#state.handle, StartPos0),
|
file:position(State#state.handle, StartPos0),
|
||||||
|
file:advise(State#state.handle,
|
||||||
|
StartPos0,
|
||||||
|
EndPos0 - StartPos0,
|
||||||
|
sequential),
|
||||||
MaybeEnd = (check_last_key(State#state.last_key) == empty) or
|
MaybeEnd = (check_last_key(State#state.last_key) == empty) or
|
||||||
(StartPos0 >= (EndPos0 - ?DWORD_SIZE)),
|
(StartPos0 >= (EndPos0 - ?DWORD_SIZE)),
|
||||||
|
{LastPosition, Acc2} =
|
||||||
case MaybeEnd of
|
case MaybeEnd of
|
||||||
true ->
|
true ->
|
||||||
{reply, {eof, Acc}, StateName, State};
|
{eof, Acc};
|
||||||
false ->
|
false ->
|
||||||
{LastPosition, Acc2} = scan_over_file(State#state.handle,
|
scan_over_file(State#state.handle,
|
||||||
StartPos0,
|
StartPos0,
|
||||||
FilterFun,
|
FilterFun,
|
||||||
Acc,
|
Acc,
|
||||||
State#state.last_key),
|
State#state.last_key)
|
||||||
{reply, {LastPosition, Acc2}, StateName, State}
|
end,
|
||||||
end;
|
{ok, LastReadPos} = file:position(State#state.handle, cur),
|
||||||
|
file:advise(State#state.handle,
|
||||||
|
StartPos0,
|
||||||
|
LastReadPos - StartPos0,
|
||||||
|
dont_need),
|
||||||
|
{reply, {LastPosition, Acc2}, StateName, State};
|
||||||
handle_sync_event(cdb_lastkey, _From, StateName, State) ->
|
handle_sync_event(cdb_lastkey, _From, StateName, State) ->
|
||||||
{reply, State#state.last_key, StateName, State};
|
{reply, State#state.last_key, StateName, State};
|
||||||
handle_sync_event(cdb_firstkey, _From, StateName, State) ->
|
handle_sync_event(cdb_firstkey, _From, StateName, State) ->
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue