我做的是一个生产监控系统,VC6+mysql5.0,客户机和服务器都是Windows XP
现在的需求是每月定时自动将生产数据上传到中心数据库,每月的数据量大概是200000~2000000条之间。客户要求不使用mysql的同步功能。
我考虑是下面两种实现方式:
1.如果用程序实现(逐条读出来,写到中心服务器),是不是数据量过大,效率会比较低,影响数据库系统正常使用?因为在上传数据的同时,系统还在向数据库中写数据。
2.如果用mysqldump或者用其他工具,先导出成.sql的文件,然后再从服务器端导入,是不是效率能高些?(另mysqldump能实现增量导出吗?)如果各位还有什么其他好的方法,希望不吝赐教。本人初次接触这方面的项目,希望有经验的高手给予点拨!非常感谢

解决方案 »

  1.   

    数据量大概是200,000~2,000,000条之间。客户要求不使用mysql的同步功能。1.如果用程序实现(逐条读出来,写到中心服务器),是不是数据量过大,效率会比较低,影响数据库系统正常使用?因为在上传数据的同时,系统还在向数据库中写数据。
    可以用 select * from yourTable where tid >100000 INTO OUTFILE 'aaa.dat' 这种通过上次同步后的最大时标来取出所有最新的本月数据。然后再用 LOAD DATA INFILE 把数据加载到服务器数据库。
    效率没什么可比的,因为你的用户禁止你用同步。但在 select 时会产生锁表动作。如果你的客户机上只是做 select 和 insert 则影响不大,但对 update 会有影响。


    2.如果用mysqldump或者用其他工具,先导出成.sql的文件,然后再从服务器端导入,是不是效率能高些?(另mysqldump能实现增量导出吗?)
    mysqldump 是逻辑全备,无法实现增备或差备, 效率和方法一比起来没什么大的差别。
    如果各位还有什么其他好的方法,希望不吝赐教。
    3. 把客户机 上的二进制日志复制到服务器,然后通过mysqlbinlog 来取得SQL语句并执行。(对客户机基本没什么影响)
    4. 直接复制相关的表文件 *.frm, *.myd,*.myi 到 服务器的临时数据库文件夹中,然后在服务器慢慢做同步。(对客户机基本没什么影响)

    当您的问题得到解答后请及时结贴.
    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html