gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 00:30:57 27 4
gpt4 key购买 nike

我使用 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.

此函数将返回一个包含所有数据库数据的元组。将此发送到另一个进程:
 OtherProcessPid!{ok,Data};

它适用于少量行,但对于一个非常大的行,比如大于一百万,怎么样? erlang 还能用它吗?

最佳答案

问题不是“Erlang 能处理非常大的消息吗?” (它可以),而是“您准备好处理非常大的消息的后果了吗?”

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

在分布式 Erlang 的情况下,需要“上传”到远程节点的非常大的消息可能会阻塞心跳,如果延迟太短或消息太大,则可以知道 VM 是否处于事件状态您发送它们的频率。

无论如何,解决方案是衡量您可以或不能处理的事情。我知道关于消息大小没有硬编码限制。但要知道,作为一般经验法则,较小的消息通常更可取。

关于erlang - Erlang 如何处理非常大的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9736465/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com