mysql大查询问题

标签 mysql vb.net

嘿伙计们,我已经在另一个问题中发布了这个问题,但我没有得到有用的答复。部分原因是我认为我没有正确解释自己。所以我要再试一次。

我一直在用 vb.net 编写后端服务器,它使用 mysql 数据库来存储信息。直到几天前我才使用网络主机的 mysql 服务器来执行此操作。

我不想续订我的虚拟主机,因此我将所有内容移至家庭服务器以继续处理我的程序。我已经安装了 mysql 5.5(这是一个比我以前的虚拟主机上的版本更新的版本),除了到目前为止的一件事之外,一切都运行良好。

该程序在第一次启动时发送一个关于一百万个大表插入的查询。该查询看起来类似于“INSERT into blah VALUES(1,1,1,1,1);INSERT into...”等等。这过去在我的虚拟主机上需要大约 5-10 分钟左右(我的服务器程序在我的家庭服务器计算机上运行,​​并且它通过网络将信息发送到虚拟主机的 mysql。)

现在在本地做所有事情,我希望这能更快,但这并不重要,我只是需要它工作。因此,当我发送此查询时,它只会锁定一分钟左右,然后返回超时。当我检查数据库中的表时,每次尝试此操作时,它都加载了 1000 个项目。

现在我假设这是某种设置问题,但是我已经使用我的“my.ini”来查看它是否有帮助,但没有。我曾尝试切换到一些预先打包的 my-huge 或 my-innodb 等,但这些也没有帮助。我认为如果有的话,它只会花费更长的时间或其他什么,而不仅仅是在 1000 次插入后立即超时。

仅提供一些背景信息,我使用的服务器机器有一个四核 i7、8GB RAM 和一个运行 Windows 7 的 1TB 硬盘。

任何帮助都会非常感谢。

最佳答案

可能您的查询太大,您可以通过 max_allowed_packet 调整 MySQL 行为选项。 您还可以通过将多个插入查询合并为一个来节省一些字节,如下所示:INSERT INTO blah VALUES(1,1,1,1,1),VALUES(2,2,2,2,2),VALUES(3,3,3,3,3) 。但如果这个大型组合查询失败,那么该插入中的数据也将失败。 但在我看来,这不是最明智的方法。如果您的应用程序应该在启动时导入巨大的 sql 转储,则可以使用像这样的 mysql 可执行文件 mysql -uroot -ppassword db_name < dump.sql你就完成了。这可能是完成此任务的最有效方法。

关于mysql大查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5765614/

相关文章:

html - 使用html在jsp中显示查询

mysql - MySQL 中的嵌套 if 语句

java - MySQL更新触发错误;在更新的记录中设置值

php - 多个内部联接和一对一//一对多关系

javascript - AJAX 发布后追加 Div

MySQL:如何列出一列并对另一列求和?

vb.net - 具有多个参数的 LINQ 分组依据

c# - 如何使用内置的 .NET 功能检测输入的字符串字符语言?

正则表达式获取字符串后的文本

vb.net - 你如何找到 For Each (VB.NET) 中的最后一个循环?