gpt4 book ai didi

mysql - node.js - 我在破坏我的数据库吗?

转载 作者:行者123 更新时间:2023-11-29 00:49:01 24 4
gpt4 key购买 nike

我是 node 的新手,并且编写了一个可以在开发中运行的程序,但我担心它的生产性能。

在下面的代码中,我使用了我自己的 mysqlAsync.queryEach 方法(如果你想让我分享,请告诉我)。它使用通用池、mysql 和 async图书馆。

我使用通用池共享多达 10 个 mysql 连接。

mysqlAsync.queryEach 方法使用文档中的 async.forEach 方法执行以下操作。

Applies an iterator function to each item in an array, in parallel.

function doSomethingWithExercises(callback) {

mysqlAsync.queryEach("SELECT * FROM subjects ORDER BY id", function(subject, done) {

mysqlAsync.queryEach("SELECT * FROM exercises WHERE id = ? ORDER BY id",[subject.id] function(exercise, done) {

//do something with the exercises
},

//then...
function() {

done()

});

},

//then...
function() {
//done
callback()

});
}

因此,对 queryEach 的第一次调用会发出对另一个 queryEach 的另外 x 次调用。它可以同时发出 1000 个同时查询。

在我的特定用例中,此过程用于构建一个 redis 缓存,该缓存很少发生,而不是在每个连接上都发生。

我想知道我是否应该在 Node 上同步处理查询?

我应该限制我的查询吗?

mysql 可以同时处理多少个查询?

人们通常会做所有异步操作以充分利用 Node ,还是您需要限制某些资源?

抱歉,如果这个问题太宽泛,我只是想弄清楚这个异步问题能走多远。

最佳答案

How many simultaneous queries can mysql handle?

32 - 64。这是实际的极限,在达到这个水平之前你应该做很多优化。 Mysql 可以处理更多,但性能将开始下降而不是增加。

SELECT * FROM exercises WHERE id = ? ORDER BY id

这很奇怪。在哪里 ID =?按 ID 订购?你是认真的吗?

我认为你应该加入你的表并立即从 mysql 中获取所有数据,然后开始处理它。数据库很容易成为瓶颈,因此您应该尽可能优化使用它。

我什至不确定您是否需要在 NodeJS 中并行执行。尝试将数据(如您期望的那样多)添加到您的数据库并尝试运行您的查询并衡量性能。

关于mysql - node.js - 我在破坏我的数据库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9286641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com