我使用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还可以使用吗?
问题不是"Erlang能处理非常大的消息吗?" (它可以),它是"你准备好处理非常大的消息的后果吗?"
所有消息都被复制(一些较大的二进制文件除外):这意味着如果您正在进行大量消息的大量消息,内存使用的稳定性要小于使用小消息等,则必须为减速做准备.
在分布式Erlang的,需要被"上传"到远程节点可能会阻止心跳,使其能够了解虚拟机是活着还是没有,如果延迟过短,或者邮件过大非常大的消息的情况下你发送它们的频率.
无论如何,解决方案是衡量您能够或不能处理的内容.关于邮件大小,我不知道硬编码限制.但是,要知道较小的消息通常是一般的经验法则.