Erlang如何处理非常大的消息?

Hey*_*Joy 2 erlang

我使用ODBC从数据库中查询表:

getTable(Ref,SearchKey) ->
Q = "SELECT * FROM TestDescription WHERE NProduct = " ++ SearchKey,
case odbc:sql_query(Ref,Q) of 
    {_,_,Data} ->
        %io:format("GetTable Query ok ~n"),
        {ok, Data};     
    {error,_Reason} ->
        %io:format("Gettable Query error ~p ~n",[_Reason]),
        {stop, odbc_query_failed};
    _-> 
        io:format("Error Logic in getTable function ~n")
end.
Run Code Online (Sandbox Code Playgroud)

此函数将返回包含所有db数据的元组.将此发送到另一个进程:

 OtherProcessPid!{ok,Data};
Run Code Online (Sandbox Code Playgroud)

它可以在少量行中正常工作,但是如果一个非常大的数字,超过一百万呢?erlang还可以使用吗?

I G*_*ICE 7

问题不是"Erlang能处理非常大的消息吗?" (它可以),它是"你准备好处理非常大的消息的后果吗?"

所有消息都被复制(一些较大的二进制文件除外):这意味着如果您正在进行大量消息的大量消息,内存使用的稳定性要小于使用小消息等,则必须为减速做准备.

在分布式Erlang的,需要被"上传"到远程节点可能会阻止心跳,使其能够了解虚拟机是活着还是没有,如果延迟过短,或者邮件过大非常大的消息的情况下你发送它们的频率.

无论如何,解决方案是衡量您能够或不能处理的内容.关于邮件大小,我不知道硬编码限制.但是,要知道较小的消息通常是一般的经验法则.