Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:如何使用多连接?_Mysql_Database_Iis_Asp Classic_Iis 7.5 - Fatal编程技术网

MySQL:如何使用多连接?

MySQL:如何使用多连接?,mysql,database,iis,asp-classic,iis-7.5,Mysql,Database,Iis,Asp Classic,Iis 7.5,我开发了一个用于大型MySQL数据库的脚本。该脚本适用于IIS、MySQL和ASP Classic。脚本选择10000或100000条记录,并逐个处理这些记录并更新数据库。一切正常,但性能非常缓慢。缓慢的原因不是因为select或update语句或服务器速度慢,而是因为逐个处理这些记录并进行一些更改,然后进行更新 比如说 SELECT * from mytable WHERE isempty(title) ORDER BY length(title) DESC LIMIT 100000; 然后

我开发了一个用于大型MySQL数据库的脚本。该脚本适用于IIS、MySQL和ASP Classic。脚本选择10000或100000条记录,并逐个处理这些记录并更新数据库。一切正常,但性能非常缓慢。缓慢的原因不是因为select或update语句或服务器速度慢,而是因为逐个处理这些记录并进行一些更改,然后进行更新

比如说

SELECT * from mytable
WHERE isempty(title)
ORDER BY length(title) DESC LIMIT 100000;
然后逐一处理这100000条记录需要花费10万分钟。所以,我想在2或3个浏览器上运行相同的脚本,比如IE、Chrome、FireFox

我想这样做,但我不确定这是否可能

在IIS上,当在浏览器1上运行脚本时,它会选择100000条记录并开始处理这些记录并开始进行一些更改。在浏览器2上,它选择100000条,但在条件相同的数据库较少的记录上,它可能选择90000条并开始工作。由于浏览器启动得不早,它可能会做一些更改,因此当两个线程都工作时,彼此必须看到这些更改并处理这些更改。例如,标题在当前记录上完成,然后传递该记录并选择另一个记录。可能吗?我不确定,也从未使用过光标位置和光标类型或任何东西

假设数据库中有101000条记录,脚本1首先启动并选择100000行。100分钟后,浏览器2启动。但当浏览器2选择100000行时,此时浏览器1已经完成10000行,因此浏览器2将只获得91000条记录。但是,既然这两个浏览器在同一条记录上工作,它们怎么能看到彼此的变化呢

我目前的处境有什么解决办法吗?我不是MySQL专家,所以我不知道该怎么做

对不起,我的英语不好,但我希望你能理解我的问题

更新


这不是因为任何脚本问题、服务器速度慢或任何其他问题。这很慢,因为在“DO WHILE RS.EOF”和“LOOP”之间,我做了很多事情,而且每个记录实际上并不需要一分钟,只是举个例子。但是我想同时有2到3个实例运行脚本。

ASP Classic不支持您正在寻找的多线程类型,但是您可以编写COM组件或类似的组件,并从页面调用它

除非用户需要某种类型的输入,否则您也可以使用VBScript/PowerShell/Python/等编写服务器端任务,以便偶尔运行数据并执行您试图完成的任务。当问题不是很具体时,很难具体

话虽如此,听起来代码中的问题确实比您意识到的要多。这很难指出,因为我们面前缺乏一个具体的例子。如果你还没有,我会仔细检查,确保瓶颈在你认为的地方

在过去,我使用了一个粗略的方法来查找我仍然维护的ASP/VBScript站点中的具体瓶颈所在,有几次我发现问题出现在最不可能出现的地方


底线是,你的问题缺少了大量的信息来提供有用的答案,并且似乎做出了一些不一定是真的假设。向我们展示一些代码,向我们提供一些数据,您可能会得到更好的答案。

试着问更多关于这一点的精确问题。这个很宽。另外:为什么要从webbrowser运行SQL查询?也许你可以发布你的脚本?使用mysql的“解释”功能查看脚本为什么需要这么长时间。你真的需要从数据库复制100k条记录吗?谢谢你的回复。我可以再次告诉您,这不是因为任何脚本问题、服务器速度慢或任何其他问题。这很慢,因为在“DO WHILE RS.EOF”和“LOOP”之间,我做了很多事情,而且每个记录实际上并不需要一分钟,只是举个例子。但我同时考虑了2到3个运行脚本的实例。如果我是你,我会关闭并删除此问题(请参阅本网站关于如何提问的常见问题),然后打开一个新问题:在新问题中,确切说明你正在尝试实现的目标,列出脚本的相关部分以及你尝试过的内容。当前的问题非常广泛,提供的信息非常少,大多数用户都会觉得其他更精确的问题可能更值得他们自愿花更多的时间。@cfi结案不一定是必要的,像这样的问题可以(并且已经)重新组合成更有成效的问题。话虽如此,我同意这一点将需要一点工作。谢谢你的答复。事实上,它不是代码慢或机器慢,只是需要多线程来更快地完成工作。我读了很多文章,发现我与db的连接会锁定这些记录,直到工作完成。然后我用动态锁和服务器端游标更改了连接,并用两个浏览器打开,两个脚本(刚刚重命名为copy)工作。似乎快了一点,但我仍然需要更多的测试。