做关系型数据库数据迁移的时候,为了加快速度,要注意以下几点。

充分利用数据库的能力

关系型数据库被设计成善于做查找,比较,排序等操作。在大数据量的时候,重新写个程序去对数据做查找排序等,效率往往比不过数据库。所以在数据迁移的时 候,应该尽量将此类操作交给数据库来完成。另外数据库往往都有自己的一些工具,比如导入导出工具,如果你的迁移过程要做类似的工作,也应当交给数据库来完 成。假如你要取出数据库里的一些数据,将格式做些转换,再插入到另一个数据库。你可以写个程序读一条,转换一条,写一条,但是这样很慢,还不如把数据导出 成csv等文件,然后再对文本处理生成新的另一个数据库的导入文件,然后再用另一个数据库的导入工具导入。我曾经做过这样的工作,将数据从sql server 2000迁移到 mysql,要对数据做些简单的格式转换,前一种方案用时40分钟,而后一种只要一分钟。

减少IO操作

现代计算机的CPU,总线和内存的速度都远超过各种IO的速度,所以减少IO操作就可以大幅提升数据迁移时的速度。使用连接池重复使用连接,减少新建连接 的次数可以减少IO操作。使用缓存将可能会被多次查询的数据缓存起来,减少查询数据库次数,可以显著减少IO操作。将中间结果缓存到内存或临时表中,非常 有用。最近在工作中遇到的数据迁移,通过大量的应用内存缓存,成功的将数据迁移时间有原来的近一周缩短到一个小时。

注意索引

也许你在做数据迁移时的很多查询操作是平时用不到的,所以并没有适合于做迁移查询的索引,那么你一定要记得在迁移前加上它。同样,需要被插入数据的表的索引还是先删掉吧,迁移完后再加上。

经常维护数据

不完整的数据,在迁移过程中是最让人头痛的。平时经常清理数据中的垃圾,如果垃圾成山了,数据迁移将是恶梦。

Share/Save/Bookmark