服务器并行怎么操作
1. 并行查询让SQL Server加速运行
并行查询其优势就是可以通过多个线程来处理查询作业 从而提高查询的效率 SQL Server数据库为具有多个CPU的山帆或数据库服务器提供并行查询的功能 以优化查询作业的性能 也就是说 只要数据库服务器有多个CPU 则数据库系统就可以使用多个操作系统进程并行执行查询操作 来加速完成查询作业
一 并行查询三步走
并行查询作业在数据库中 主要经过三个步骤
首先 数据库会判断是否需要进行并行查询 在数据库中有一个查询优化器 会对SQL语句进行优化 然后数据库才会去执行查询语句 而这个查询器在对SQL语句进行查询优化时 其中一个动作就是判断是否需要对SQL语句进行查询优化 也就是说 并不是所有的SQL查询语句都可以从并行查询中获取收益 如果查询优化器认为查询语句可以从并行查询中获取收益的话 则就会将交换运算符插入到查询执行计划中 为并行查询做准备 故哪些语句需要采用并行查询 哪些不需要 这不用数据库管理员关心 数据库查询优化器会帮管理员作出这个决定 数据库管理员需要清楚的是 在哪些情况下 数据库SQL优化器会认为不宜采用并行查询 通常情况下 只要满足以下条件的任何一个 则就不会执行并行查询 一是对于特定的查询 查询优化器认为串行查询执行计划要快于任何可能的并行执行计划;二是查询的串行执行成本并不高 不需要进行并行查询;三是查询中包含无法并行运行的标量运算符或者关系运算符 若从数据库管理员的角度讲 第三个条件对我们具有最大的影响 当数据库预计未来可能利用并行查询来提高数据库性能时 则在数据库设计时 就需要注意避免使用那些无法在并行查询功能中使用的运算符 因为某些关系运算符或者逻辑运算符可能会要求查询计划一定要在串行模式中进行 或者部分需要在串行模式下进行 如此的话 查询优化器就不会利用并行查询功能来提高查询语句的性能 这是数据库管理员在数据库设计时必须要考虑到的一个细节问题
其次 确定并行的进程数 当查询优化器在查询语句中插入交叉运算符之后 数据库就会执行并行查询 并行查轿凳询在执行计划时可以使用多个线程 此时 就又遇到了一个问题 数据库会把这个查询作业分成几个进程操作呢?此时 数据库管理员就需要知道上什么叫做并行度 其实 在处理并行查询的时候 数据需要知道最大可使用的进程与实际使用的进程 而最大可使用的进程就叫做并行度 这个并行度的值是在服务器级别中进行设置 也可以通过系统存储过程来进行修改 但是 最大可使用进程数不一定等于实际是用进程数 实际是用进程数是数据库在查询计划执行时初始化的时候确定的 也就是说 这不用数据库管理员去额外的设定 数据库系统会自动根据计划的复杂程度来确定合理的进程数目 当然其实际采用的进程数不能够超过并行度 即最大可以使用的进程数
最后执行查询 当以上内容确定好之后 数据库就会执行具体的查询语句 在这一步中 需要注意一个问题 数据库管理员还可以在查询语句中指定MAXDOP查询提示来修改这个进度值 也就是说 如果某个查询作业数据库管理员认为可能会耗时比较久 就可以为这个查询作业设置比较大的进度值 当利用MAXDOP查询提示设置这个并行进度值之后 它会覆盖预先设置的默认值 从而实现针对单个查询语句设置额外的进度值 以提高某些特殊查询作业的性能
二 并行查询中需要注意的内容
注意点一逗伍 需要注意硬件方面的限制
并行查询是数据库提高查询性能的一个有力举措 不过其往往受到比较大的约束 如上面提高的一些基于成本考虑之外 还有一些硬性的限制 如通常情况下 只有在数据库服务器有多个微处理器(CPU )的情况下数据库才会考虑执行并行查询 也就是受 只有具有多个CPU的计算机才能够使用并行查询 这是一个硬性的限制条件 另外在查询计划执行过程中 数据库还会判断当时是否有足够多的线程可以使用 每个查询操作都要求一定的线程数才能够执行;而且执行并行计划比执行串行计划需要更多的线程 所需要的线程数也会随着并行度的提高而提高 如果在并行计划执行的时候 当时数据库服务器没有足够的线程让并行计划使用的话 数据库引擎就会自动减少并行度 甚至会放弃并行查询而改为串行计划 所以说 数据库是否能够执行并行查询 要受到其硬件的限制 为此 如果企业真的需要通过并行查询来提高数据库性能的话 则管理员就需要根据情况来调整硬件配置
注意点二 不建议对所有查询都使用并行查询
通常情况下 笔者认为最好只对大型表的连接查询 大量数据的聚合操作 大型结果集的重复排序等等操作才应用并行查询的功能 如果在这些操作上执行并行查询的话 那么其改善数据库性能的效果是非常明显的 相反 如果对于简单查询执行并行查询的话 可能执行并行查询所需要的额外协调工作会大于其潜在的性能提升 所以 数据库管理员在确定是否需要执行并行查询功能的话 需要慎重 笔者的建议是 在数据库服务器级别上 最好不要设置并行查询 即把并行度设置为 或者一个比较小的值 然后对于一些特殊的查询操作 利用MAXDOP查询提示来设置最大的可使用进程数 如此的话 可能会更加的合理 如果有时候数据库管理员不知道是否需要采用并行查询功能的话 则可以通过数据库自带的统计功能进行判断 为了区别并行查询计划到底有没有从并行查询中受益 数据库引擎可以将执行查询的估计开销与并行查询的开销阀值进行比较 并行计划只有对需时较长的查询通常更加有益;因为其性能优势将抵消初始化 同步和终止并行计划所需的额外时间开销
注意点三 数据库会根据查询所涉及到的行数来判断是否要并行查询
上面谈到 最好对大型表的连接查询 大量数据的聚合操作 大型结果集的重复排序等等操作才应用并行查询的功能 因为只有如此 并行查询带来的收益才会超过其付出的代价 但是 并不是说连接查询 聚合操作 排序等作业都适合采用并行查询 当数据库在考虑并行查询计划的时候 查询优化器还会去确定所涉及到的行数 如果所涉及到的行数台少 则将不会考虑执行并行查询计划 而会采用串行方式执行查询语句 如此的话 可以避免因为启动 分发 协调的开销大大超过并行执行作业所带来的收益 这本来是一个不错的设计 但是也会给数据库管理员带来一定的麻烦 如现在数据库管理员想要测试并行查询到底可以在多大程度上影响查询操作 就有点麻烦 因为其有数据量的限制 如果数据库管理员需要进行这个测试 还不得不先在数据库系统中导入足够多的数据才行 这就限制了数据库管理员的测试操作 不过话说回来 这个机制仍然是不错的 因为数据库管理员不用去考虑 当数据库规模到多大的时候采用并行查询
注意点四 同一个操作在不同时候会采用不同的进程数
lishixin/Article/program/SQLServer/201311/22469
2. 如何处理大量数据并发操作
处理大量数据并发操作可以采用如下几种方法:
1.使用缓存:使用程序直接保存到内存中。或者使用缓存框架: 用一个特定的类型值来保存,以区别空数据和未缓存的两种状态。
2.数据库优化:表结构优化;SQL语句优化,语法优化和处理逻辑优化;分区;分表;索引优化;使用存储过程代替直接操作。
3.分离活跃数据:可以分为活跃用户和不活跃用户。
4.批量读取和延迟修改: 高并发情况可以将多个查询请求合并到一个。高并发且频繁修改的可以暂存缓存中。
5.读写分离: 数据库服务器配置多个,配置主从数据库。写用主数据库,读用从数据库。
6.分布式数据库: 将不同的表存放到不同的数据库中,然后再放到不同的服务器中。
7.NoSql和Hadoop: NoSql,not only SQL。没有关系型数据库那么多限制,比较灵活高效。Hadoop,将一个表中的数据分层多块,保存到多个节点(分布式)。每一块数据都有多个节点保存(集群)。集群可以并行处理相同的数据,还可以保证数据的完整性。
拓展资料:
大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》中大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。
3. 两台win7电脑如何实现并行运算
.首先确定需要的硬件组件和资源。您将需要一个头节点,至少有十几个相同的计算节点,以太网交换机,配电装置和机架。确定的电力需求,散热和空间要求。又决定您要为您的专用网络IP地址,命名为节点,您要安装的软件包,你想要什么样的技术提供的并行计算能力(更多关于这个版本)。虽然硬件不能随意下载,所有软件中列出的是免费的,大部分都是开源的。 (2)/建立计算节点。您将需要组装的计算节点,或获得预构建服务器。更多的计算节点,建立更强大的超级计算机!选择一台服务器机箱,空间,冷却和能源效率最大化。或者,你可以用十几个这样用的,过时的服务器 - 其整体将超过其部分的总和还为您节省了相当大的一次性现金。为整个系统一起玩的很好,所有的处理器,网络适配器和主板应该是相同的。当然,不要忘了内存和存储每个节点和至少一个光盘驱动器的头节点。
3.服务器安装到机架上。从底部开始,机架不是最重。你需要一个朋友来帮助你这一点 - 高密度服务器可以非常重,并引导他们到机架上的导轨有困难的。
4.以上的服务器机箱中安装的以太网交换机。利用这一时刻对交换机进行配置:允许9000个字节的巨型帧大小,设置IP地址的静态地址,您在步骤1中决定,并关闭不必要的路由协议,如SMTP侦听。
5.安装的PDU(电源分配单元)。您可能需要根据您的节点可能需要多少电流在最大负载,220伏的高性能计算。
6.一切都安装,就可以开始配置过程。 Linux是事实上的OS为HPC集群不仅是科学计算的理想环境,但将它安装到数百甚至上千个节点,它不花费一件事。试想一下,所有这些节点上安装Windows的成本会是多少呢?首先安装最新版本的主板BIOS和固件,这应该是相同的所有节点上。您的首选的Linux发行版,安装在每个节点上,一个图形用户界面的头节点。受欢迎的选择,包括的CentOS,OpenSUSE中,红帽企业Linux和SLES。本文作者强烈建议用Rocks集群分布。除了安装所有必要的工具,计算群集功能,岩石许多情况下本身的节点,速度非常快,使用PXE引导和Red Hat的脚开始“程序”分派“使用一个很好的方法。
7.安装的消息传递接口,资源管理器,以及其他必要的库。如果你没有安装岩石在上一步中,你将不得不手动设置必要的软件,以使并行计算的机制。首先,你将需要一台便携式的bash的管理系统,如Torque资源管理器,它允许你分手,并分发到多台机器的任务。对扭矩的毛伊岛集群调度完成安装。接下来,您将需要安装的消息传递接口,独立的计算节点上的各个进程必须共享相同的数据。 OpenMP是一个没有脑子。不要忘了多线程数学库和编译器来构建并行计算程序。我提到,你应该只安装岩石?
8.网络计算节点。头节点的计算节点,而这又必须将返回的结果,以及发送消息给对方发送计算任务。速度越快越好。接线吧!使用专用的以太网网络连接在集群中的所有节点。头节点也可以作为一个NFS,PXE,DHCP,TFTP,NTP服务器通过以太网网络。从公共网络,确保广播数据包不与其他网络的干扰,在你的局域网,就必须将这个网络。
9.测试群集。过去的事情做之前,你可能要释放所有用户的计算能力是测试它的性能。的HPL(高性能Lynpack)的基准测量的集群的运算速度是一个受欢迎的选择。您需要将自己从源码编译所有可能的优化编译器提供你所选择的体系结构。当然,你必须从源代码编译为您的平台与所有可能的优化选项。例如,如果使用的是AMD的CPU,编译与Open64的与0fast优化水平。 TOP500在世界上最快的500台超级计算机集群的比较,比较的结果!
提示
使用Ganglia监控节点上的计算负载。 IPMI可以提供的KVM-over-IP,远程电源循环,多一个大型的集群管理的一件轻而易举的事。对于非常高的网络速度,到InfiniBand网络接口。准备,但支付较高的价格。