我开发了一个适用于大型 MySQL 数据库的脚本。该脚本适用于 IIS、MySQL、ASP Classic。该脚本选择 10,000 或 100,000 条记录,并逐条处理记录并更新数据库。一切正常,但性能非常慢。缓慢的原因不是因为 select 或 update 语句或服务器速度慢,而是因为一一处理这些记录并进行一些更改,然后更新。
例如
SELECT * from mytable
WHERE isempty(title)
ORDER BY length(title) DESC LIMIT 100000;
然后逐一处理这 100,000 条记录需要,例如 100,000 分钟。所以,我想用 2 或 3 个浏览器运行相同的脚本,比如说 IE、Chrome、FireFox..
我想这样做,但我不确定它是否可能。
在 IIS 上,当在浏览器 1 上运行脚本时,它会选择 100,000 条记录并开始处理它们并开始进行一些更改。在浏览器 2 上,它选择 100,000,但在具有相同条件的数据库较少的记录上,它可能会选择 90,000 并开始工作。由于浏览器启动的时间很早,它可能会进行一些更改,因此当两个线程都工作时,彼此必须看到这些更改并处理这些更改。例如,在当前记录上完成的标题,然后通过该记录并选择另一条记录。那可能吗?我不确定也从未使用过光标位置和光标类型或其他任何东西..
假设数据库中有 101,000 条记录,脚本 1 首先启动并选择 100,000 行。100 分钟后,浏览器 2 启动。但是当浏览器 2 选择了 100,000 行时,那个时候浏览器 1 已经完成了 10,000 行,所以浏览器 2 将只获得 91,000 条记录。但是由于这两个浏览器在同一个记录上工作,他们怎么能看到彼此的变化呢?
我现在的情况有什么解决办法吗?我不是 MySQL 专家,这就是为什么我不知道该怎么做。
对不起我的英语,但我希望你能理解我的问题。
更新;
这不是因为任何脚本问题、服务器缓慢问题或任何其他问题。这很慢,因为在“DO WHILE RS.EOF”和“LOOP”之间我做了很多事情,而且每条记录实际上并不需要一分钟,只是举个例子。但我正在考虑同时运行脚本的 2 或 3 个实例。