当前位置:  开发笔记 > 前端 > 正文

在服务器或客户端上排序?

如何解决《在服务器或客户端上排序?》经验,为你挑选了3个好方法。

我在工作中与同事讨论过,它是关于SQL查询和排序的.他认为在将行返回给客户端之前,应该让服务器进行任何排序.另一方面,我认为服务器可能很忙,并且在获取行之后让客户端处理排序必须更好.

任何哪种策略最适合多用户系统的整体性能?



1> Robert Gambl..:

通常,您应该让数据库进行排序; 如果它没有足够的资源来有效地处理这个问题,则需要升级数据库服务器.

首先,数据库可能已经在您想要的字段上有索引,因此它可能无法按排序顺序检索数据.其次,客户端无法对结果进行排序,直到结果全部为止; 如果服务器对结果进行排序,则可以一次处理一行,已经排序.最后,数据库可能比客户端计算机更强大,并且可能更有效地执行排序.


拥有超级强大的数据库服务器,如果你有1000个客户端连接它就没有任何意义.应用服务器或客户端可能功能较弱,但对它们的要求较少,因此总体上可能更快.否则,索引的响应是非常正确的.

2> Charles Bret..:

这取决于...是否涉及寻呼?数据集的最大大小是多少?整个数据集是否需要始终以相同的方式排序?还是根据用户选择?或者,(如果涉及分页),是否只需要对客户端屏幕上单页中的记录进行排序?(通常不可接受)或是否需要对整个数据集进行排序,并重新显示新排序集的第一页?

与此排序操作的处理要求相比,客户端硬件的分布是什么?

底线是; 这是整体用户体验(当然是根据成本衡量),应该控制您的决策......通常,客户端计算机比服务器慢,并且可能导致额外的延迟.......但是,在初始页面加载后,客户端多久会请求一次额外的自定义排序操作​​?(已经在客户端上的客户端数据类型比往返更快...)但是在客户端上排序总是要求在初始加载时将整个数据集发送到客户端...这会延迟首字母页面显示...这可能需要延迟加载,或AJAX,或其他技术复杂性,以减轻...

在服务器上进行排序,引入了额外的可伸缩性问题,并且可能需要向服务器场添加更多框以处理额外的负载...如果您在数据库中进行排序并达到该阈值,则可能会变得复杂.(要在数据库上扩展,您必须实现一些只读复制方案,或允许多个服务器(每个进行处理)共享只读数据的其他解决方案).


用"依赖"开始答案的+1 - 它总是取决于.

3> Mitchel Sell..:

我赞成罗伯茨的回答,但我想补充一点.

我也赞成在SQL Server中对数据进行排序,我曾在许多尝试在客户端进行此操作的系统上工作,几乎在每种情况下我们都必须重新编写进程以在SQL Server中完成它.你为什么这么问?我们有两个主要原因.

    正在排序的数据量

    由于#1,需要实现正确的寻呼

我们处理向用户显示非常大的数据集的接口,并且利用SQL Server的功能来处理排序和分页比在客户端执行要好得多.

为了给这个添加一些数字,SQL Server Side在我们的环境中排序到客户端排序,没有任何分页.客户端28秒使用XML进行排序,而Server端排序总加载时间为3秒.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有