【问题标题】:Which is better: single or multiple database connections?哪个更好:单个或多个数据库连接?
【发布时间】:2014-06-01 13:23:48
【问题描述】:

我正在使用 AngularJS SPApplication 和 mySQL 为后端制作 NodeJS。问题是我对后端部分不是那么好,我想知道一件事。与数据库建立一个大连接并使用其中的所有信息或将连接分成较小的一次并在不同的视图上使用它们会更好吗?这个例子是这样的。我可以说超级英雄数据库 SPAplication 的多个视图。呈现单个超级英雄的视图由 4 个选项卡组成 - 传记、历史、权力、敌人。哪个更好:为单个超级英雄视图执行此操作(仅作为示例):

var query = '';
    query += 'SELECT s.id, s.nick_name, s.real_name, s.clean_name, s.alignment, s.gender, s.race, s.history, ';
    query += 'p.id AS power_id, p.name AS power_name, p.description AS power_description, ';
    query += 'b.address, zc.city, zc.state ';
    query += 'FROM superhero s ';
    query += 'INNER JOIN superhero_powers sp ON s.id=sp.superhero_id ';
    query += 'INNER JOIN powers p ON p.id=sp.power_id ';
    query += 'INNER JOIN bases b ON s.base_id=b.id ';
    query += 'INNER JOIN zip_codes zc ON b.zip_id=zc.id ';
    query += 'INNER JOIN superhero_enemies se ON s.id=se.good_sh_id ';
    query += 'INNER JOIN superhero sh_enemy ON sh_enemy.id=se.bad_sh_id ';
    query += 'WHERE s.clean_name="'+req.params.sh_clean_name+'"';

并拥有每个选项卡的信息,或者将其划分为与数据库和每个选项卡的多个连接,当单击它以调用连接以获取信息时,比如说权力

【问题讨论】:

  • 这是关于单查询/多查询而不是与数据库的连接。

标签: mysql database node.js angularjs connection


【解决方案1】:

数据库连接是一种有限的资源,开发人员通常会打开尽可能少的连接。

传统上,应用程序会定义一些初始预定义大小的连接池。并且每个请求都将被授予来自该池的连接。当请求完成连接后,它会关闭它,这实际上将它返回到池中并使其可供其他人使用。

在一个请求中,您很少需要多个连接到同一个数据库。

你的应用程序的视图看起来如何并不重要,因为在这种情况下,它可能有多个选项卡(正如你所说的那样),但最终你将不得不通过你的 http 服务器与你的数据库服务器进行通信来执行请求.因此,该请求将被授予来自池的连接,并将使用它来访问数据库并最终为您提供一些结果。与此同时,您的 Web 应用程序可能已经发出了另一个异步请求,该请求将以几乎相同的方式处理,来自池的另一个连接,以及所有相同的故事。

【讨论】:

  • 对不起,我没有让你很好。那么对所有这些东西提出一个请求然后在用户单击链接(选项卡)时使用它们是不是很好,或者我应该根据用户单击的链接为每次单击提出单独的请求。 (例如单独请求获得超级英雄或敌人等的力量,或者一个请求获得所有内容)?
  • @iceless 我认为你把事情搞糊涂了。您的问题是关于数据库连接的,现在您的问题是关于来自客户端的 http 请求。这些是完全不同的主题。您的问题原始问题不清楚。你应该再问一遍,但写得正确。
  • 我想我的意思是连接 sry。我说我对后端不太熟悉——术语也是如此。我有mysqlPool.getConnection我应该做一个还是分开?
猜你喜欢
  • 1970-01-01
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-23
  • 2010-12-28
  • 2013-03-01
相关资源
最近更新 更多