当我在那里是一个很大的AIX主机上运行的主系统。 要设施的报告和操作有从主机每晚转储到SQL Server,使得我们每一个50上下的客户在自己的数据库具有相同的模式。 这转储需要约7小时,每天晚上完成,真的有没有什么我们可以做些什么:我们坚持与应用程序供应商提供什么。
转储到SQL Server之后,我们用它来运行一些其他日常程序。 其中的一个方法是将数据导入到一种管理报表沙箱表的,它结合了记录从一个特别重要的表来自全国各地的不同的数据库到一个表,经理谁不知道SQL所以可以用它来运行特定的报告不冲水了系统的其余部分。 这又是一个企业的事情:管理者想要的话,他们有能力看到我们实现它。
此表的导入过程需要它自己的几个小时。 它可以过滤下来约40万条记录,分布在50个数据库为约4万条记录,然后索引他们对某些列进行搜索。 即使在coupld小时它仍然超过三分之一只要初始负荷少,但我们的时间不多了过夜的处理,我们不控制主机转储,我们做进行控制。 所以,我一直在负责寻找各种方法来改善一个现有的程序。
目前,该理念是,它的速度更快,从每一个客户数据库中加载的所有数据,然后建立索引后一步到位。 此外,在避免案件陷入停顿等重要系统的利益,它运行长,一对夫妇更多的客户机都设置为总是先运行(在表上的主要指标是由一个clientId场)。 我们开始做的另一件事是从一些客户的负载数据在并行一段时间,而不是每个客户端顺序。
所以我的问题是,什么是先装载此表中的最有效的方法是什么? 难道我们就在后认为索引是更好吗? 或者我们应该在导入数据之前创建索引? 我们应该加载表索引顺序,避免大量的页面重新排序,而不是大客户第一? 可以装载在并行使事情变得更糟造成多大的磁盘访问一次全部或删除我们的控制秩序的能力? 任何其他的想法?
更新
那么,什么是了。 我能够在白天做一些基准测试,并没有什么区别,在所有不管是在开头或操作结束创建索引的加载时间,但我们节省了时间建立索引本身(它的课程建立近即时与表中没有任何数据)。