我正在尝试将mssql数据库(托管在客户办公室)与mysql数据库同步,mysql数据库位于客户网站所在的托管平台上。
我已经成功地同步了数据库的四个表(结构和数据)中的三个。当我尝试同步第四个表时,麻烦来了,这个表有大约2300条记录,每个产品的图像都有2个BLOB字段。我尝试的第一件事是
SELECT * FROM chunkyTable
但许多超时都被触发了(尽管我将"mssql.timeout“设置为7200。
因此,我设置了一个分页同步,每次查询读取10条记录并将它们插入到mysql数据库中。
对于前150条记录,一切都很顺利。从我制作的日志中,我可以看到,对于前15页,同步10条记录大约需要2到6秒(考虑一下,我从网站连接到mssql服务器,该服务器连接到一个普通的ADSL,这构成了一个相当大的瓶颈)。从第16页开始,同步10条记录所需的时间上升到5:30秒。我起初认为这是因为前150条记录没有存储任何图像,所以我检查了插入到mysql中的内容,发现没有插入任何内容!
这让我想到,也许mysql对传递给mysql_query()函数的参数长度有一定的限制。查询的组成方式是:
INSERT INTO chunckyTable(field1,field2,...fieldN)
VALUES (val1,val2,val3,...,valN),(val4,val5,val6,...,valM),诸若此类
重复10条记录。
您知道传递给mysql_query函数的sql字符串的最大长度是否有一些限制(我查看了phpinfo()的输出,但没有关于此主题的任何配置)?
你对这种同步有过类似的经验吗?任何帮助都将不胜感激!
谢谢,卢克
发布于 2011-11-25 17:11:04
我找到了触发错误的原因。实际上有两件事。
无论如何,谢谢你给我的建议!
发布于 2011-11-24 20:19:58
如果您手动将mssql/insert转储到mysql一行,会发生什么情况?另外,你可以尝试mysqli (注意,我的意思是改进的mysql扩展),在任何情况下,它都应该比旧的mysql扩展更好。
https://stackoverflow.com/questions/8256718
复制相似问题