许多有经验的数据库开发或者DBA都曾经头痛于并行查询计划,尤其在较老版本的数据库中(如sqlserver2000、oracle 7、mysql等)。但是随着硬件的提升,尤其是多核处理器的提升,并行处理成为了一个提高大数据处理的高效方案尤其针对OLAP的数据处理起到了很好的作用。

    充分高效地利用并行查询需要对调度、查询优化和引擎工作等有一个比较好的了解,但是针对一般场景的应用我们只需要如何常规使用即可,这里也就不深入描述了,感兴趣可以一起讨论。

    那么这里我就简单介绍下SQLServer中并行的应用?

什么是并行?

我们从小就听说过“人多力量大”、“人多好办事”等,其思想核心就是把一个任务分给许多人,这样每个人只需要做很少的事情就能完成整个任务。更重要的是,如果额外的人专门负责分配工作,那么任务的完成时间就可以大幅减少了。

数糖豆

    设想你正面对一个装满各式各样糖豆的罐子,并且要求书有多少个。假设你能平均每秒数出五个,需要大于十分钟才能数完这个盒子里的3027个糖豆。

    如果你有四个朋友帮助你去做这个任务。你就有了多种策略来安排这个数糖豆任务,那让我们模仿SQLServer 将会采取的策略来完成这个任务。你和4个朋友围坐在一个桌子四周,糖果盒在中心,用勺子从盒子中拿出糖豆分给大家去计数。每个朋友还有一个笔和纸去记录数完的糖豆的而数量。

    一旦一个人输完了并且盒子空了,他们就把自己的纸给你。当你收集完每个人的计数,然后把所有的数字加在一起就是糖豆的数量。这个任务也就完成了。大概1-2分钟,完成的效率提高了四倍多。当然四个人累加也是十分钟左右甚至还要多

网友评论