嘿,伙计们,我在另一个问题中发布了这个问题,但是我没有得到有帮助的回复。部分原因是我认为我没有正确地解释自己。所以我会再试一次。
我一直在用vb.net编写一个后端服务器,它一直使用mysql数据库来存储信息。直到几天前,我还在使用一个网络主机的mysql服务器来做这件事。
我不想更新我的网络主机,所以我把所有的东西都移到了一个家庭服务器上,以继续我的程序。我已经安装了MySQL5.5(这是一个比我之前的网络主机上的版本更新的版本),到目前为止,除了一件事之外,一切都运行得很好。
这个程序在第一次启动时发送一个关于一百万个表插入大的查询。该查询类似于"INSERT into blah VALUES(1,1,1,1,1);INSERT into...“诸若此类。这通常需要在我的网络主机上运行5-10分钟左右(我在我的家庭服务器上运行了我的服务器程序,它通过网络将信息发送到网络主机的mysql)。
现在在本地做所有的事情,我希望它能更快,但这并不重要,我只是需要它工作。因此,当我发送这个查询时,它只会锁定一分钟左右,然后返回一个超时。当我检查数据库中的表时,每次我尝试这样做时,它都恰好加载了1000项。
现在我假设这是某种设置问题,但是我玩了一下我的"my.ini“,看看它是否有帮助,它没有。我试着切换到一些预先打包好的my- those或my-innodb等,但它们也没有帮助。我认为,如果有什么不同的话,那就是需要更长的时间,而不仅仅是在1000次插入后立即超时。
仅作为一些背景信息,im使用的服务器机器有一个四核i7,8 8gb内存,以及一个运行Windows7的1tb硬盘。
任何帮助都会很好,谢谢。
发布于 2011-04-24 01:18:28
可能你的查询太大了,你可以通过max_allowed_packet选项来调整MySQL的行为。还可以通过将多个insert查询合并为一个来节省一些字节,例如:INSERT INTO blah VALUES(1,1,1,1,1),VALUES(2,2,2,2,2),VALUES(3,3,3,3,3)。但是如果这个大型组合查询失败,那么insert中的数据也会失败。但在我看来,这不是最聪明的方式。如果您应用程序应该在启动时导入大量的sql dump,则可以像这样使用mysql可执行文件,这样就完成了。这可能是完成这项任务的最有效的方法。
https://stackoverflow.com/questions/5765614
复制相似问题