02.8 电脑配置要求
工欲善其事,必先利其器 我们已经知道,DAX是性能强大的数据分析语言,在Excel里就可以轻松处理几百万行数据。但在实际使用的时候,很多人并没有体验到这种酣畅淋漓的感觉,反而是经常遇到莫名奇妙的报错和闪退,造成这种情况的原因是忽视了DAX对硬件配置和软件的基本要求。一般来说,面向个人用户的自助BI工具对软硬件的要求并不高,市面上的主流配置足够流畅运行,但仍然有一些事项需要注意。这篇文章总结一下安装和运行Excel PowerPivot和Power BI的一些注意事项,分为两个部分,最低要求和硬件选择指南。## 硬件最低要求 官方推荐的最低硬件要求是:内存 1GB,CPU主频1GHz,这个标准太低,不具备参考价值。如果以保证最基础的使用体验为原则,建议配置:
- 内存不低于4GB
- CPU主频2GHz左右
- 硬盘没有特殊要求 目前市面上低端笔记本都能达到这个标准。## 软件最低要求 满足硬件要求很容易,软件要求相对隐性一些,但一样重要,如果硬件达标了,软件不合适,最终体验还是受影响。### 操作系统 Windows 7以上,不支持XP,不支持Mac系统,Mac版Excel不能使用Power Pivot。目前微软还没有在Mac系统适配Power BI的迹象。使用64位系统。32位虽然运行程序没有问题,但可用内存只有3G,如果运算量较大很有可能出现闪退或假死的情况。### Excel Excel 2013、2016或Office 365 E3以上版本。其他版本office不支持Power Pivot。微软未来会陆续在Office 365所有版本中支持Power Pivot,具体时间以软件更新为准。使用64位版本,原因同上。在32位的Excel中,PowerPivot的最大可用内存只有大约1GB,非常容易假死和闪退。如果受条件限制无法安装64位软件,要尽量避免大计算量的任务,并且注意随时保存文件,防止意外丢失。定期安装Office更新,这一点对使用离线版Excel的用户非常重要。微软会通过打补丁的方式升级Power Pivot和PowerQuery,如果你安装了Excel 2016但从来没有更新过Excel,内置的Power Pivot实际上还是N年前的版本,功能少而且非常不稳定。更新Office有两种方式:Excel内更新和随系统更新,具体方法百度可以找到。使用Office365的用户自动获得最新版本
Power BI Desktop
可以从官网页面和Windows商店下载安装,功能相同。商店版每月自动更新,省去了手动下载安装的麻烦,建议优先考虑。建议安装64位版本,原因同上## 硬件选择指南 硬件配置容易走两个极端,一种是配置太低,带不动,随着硬件发展和价格的降低,手机的配置都快超过电脑了,除了一些企业还在用老旧的电脑,个人电脑基本上不用担心这个问题。另一个极端是堆硬件,追求高配置。当硬件水平超过软件自身的运算能力之后,多出来的部分其实都是浪费,比如你花17000元装了一个18核心36线程的i9处理器,和普通的i7处理器相比,Excel的使用体验并不会提升多少。当然,高配置在运行多任务、大型游戏以及视频渲染的时候体验更好,但这个超出本文讨论的范畴。如果你想配置一台高效运行DAX的主机/笔记本/服务器,并且预算有限,想把钱花在刀刃上,请优先考虑以下几项硬件配置,按重要程度排序:
- CPU主频和型号
- 内存速度
- 核心数量
- 内存大小 磁盘I/O性能不在列表中,也就是你不需要考虑硬盘的类型。在表格模型中,查询期间没有直接的硬盘读写操作。唯一产生I/O的情况是内存不足的时候。但是,在可用内存不足导致系统分页时,你应该调整系统的RAM大小以避免分页。把预算花在CPU、内存速度和内存大小方面,硬盘不重要。### CPU主频和型号 影响DAX引擎代码运行速度的最重要因素是CPU主频和型号。在相同的主频下,不同的CPU型号可能具有不同的性能,因此仅考虑主频是不够的。最佳实践是在自己的环境中运行基准测试,通过对公式引擎进行压力测试以评估性能。在Adventure Works派生的模型上,这样一个查询的示例如下:EVALUATEROW(“Test”,COUNTROWS(GENERATE(TOPN(8000,CROSSJOIN(ALL(Reseller[ResellerKey]),ALL(Reseller[GeographyKey])),Reseller[ResellerKey]),ADDCOLUMNS(SUMMARIZE(Sales,OrderDate[FullDate],Products[ProductKey]),”Sales”,CALCULATE(SUM(Sales[SalesAmount]))))))你可以从这里下载样例工作簿到你的电脑上测试这个查询。打开Excel工作簿并在DAX Studio中运行前面的查询,即可测量公式在本地的运算性能这个查询在Intel i7-4770K 3.5 GHz上运行时间为8.1秒,在Intel i7-2860QM 2.5 GHz上运行时间12.4秒。一个是台式工作站和一个是笔记本。不要假定服务器运行得更快,基于自己测试的结果做判断,因为结果可能会出乎你的意料。如果服务器上没有Excel,可以在Analysis Services表格上恢复Power Pivot模型,如果没有DAX Studio,可以在SQL server Management Studio上运行查询。一般来说,服务器上使用的Intel Xeon处理器是E5和E7系列,即使有非常多的可用内核,在2GHz左右的主频也是非常常见的。如果可能的话,你应该寻找3 GHz或更高的主频。另一个重要因素是L2和L3缓存的大小:它们越大越好。这对于大型表以及基于唯一值超过100万的列建立的关系尤其重要。CPU主频>L2缓存>L3缓存### 内存速度 内存速度是影响DAX引擎性能的一个重要因素。引擎所做的每一个操作都以很高的速度访问内存。当内存带宽成为瓶颈时,你将看到CPU使用率而不是I/O居高不下。遗憾的是目前没有性能计数器来监视等待内存访问所花费的时间。在表格模型中,这段时间耗时可能相当可观,很难观测。一般来说,你应该使用频率至少有1600 MHz的内存,但是如果硬件平台允许,你应该选择更快的RAM(1833、2133、2400 MHz或更多)。顺便提一下,游戏主机的内存频率通常都很高,是运行DAX的不错选择。### 核心数量 对于DAX引擎来说,CPU核心数量并不是越多越好,只有当表被分为多个组时,引擎才在多个线程上拆分执行。默认情况下,每个组包含800万行(在Power Pivot中为100万行)。如果你有八个核心,则除非表至少有6400万行,否则你不会看到所有核心都参与到一个查询中。由于这些原因,增加核心数量仅对非常大的表有效。只有当查询命中一个大表(2亿行或更多行)时,增加核心数才能提高它的性能。但这已经超过了个人电脑运行的上限,进入了服务器和SSAS优化的范畴:在并发用户数的弹性伸缩方面,如果用户访问相同的表,他们会共享内存,较高的核心数量可能不会提高性能。增加并发用户数量的更好方法是在负载平衡配置中使用更多的服务器。最佳实践是在单个插槽上获得最大核心数,获得最高的可用主频。不要在同一台服务器上使用两个或更多插槽。AnalysisServices表格不识别NUMA结构,该结构在不同插槽之间拆分内存。每当一个插槽上运行的线程访问由另一个插槽分配的内存时,NUMA需要更耗时的槽间通信-你可以在硬件调整表格解决方案(SQL Server Analysis Services)中找到有关NUMA体系结构的更多详细信息,访问?redirectedfrom=MSDN)这里了解详情。### 内存大小 内存用于存储表格模型的所有数据,你还需要内存来执行进程操作和执行查询任务。拥有足够的内存只能保证查询最终可以返回结果,但是请注意增加可用内存并不能提高性能。模型式使用的缓存不会仅仅因为更多的可用内存而增加。但是,如果服务器开始分页数据,那么低可用内存的情况可能会以负面的方式影响查询性能。你需要有足够的内存来存储数据库中的所有数据,并避免在查询执行期间物化(Materialization)因为数据库表具有很高的压缩率,而物化会生成未压缩的数据。### 硬盘I/O和分页 不必为表格模型的存储I/O分配预算。它和多维模型非常不同,在多维模型中,磁盘上的随机I/O操作非常频繁,特别是在某些度量值中。在表格模型中,查询期间没有直接的存储I/O操作。可能发生这种情况的唯一事件是内存不足的情况。但是,在可用内存不足导致系统分页时,向服务器提供更多内存比增加存储I/O吞吐量来提高性能更经济、更有效。### 结论 对个人用户而言,CPU>内存速度>核心数量>内存大小,游戏主机更适合DAX引擎。