【问题标题】:create connection pool TypeOrm创建连接池 TypeOrm
【发布时间】:2019-05-16 13:47:08
【问题描述】:

如何使用 TypeOrm 创建连接池?在探索 TypeOrm 时,我想创建用于使用 MySql 的连接池

下面是sn-p的代码:

import { createConnection } from 'typeorm';

export const databaseProviders = [
  {
    provide: 'DbConnectionToken',
    useFactory: async () => await createConnection({
      type: 'mysql',
      host: 'localhost',
      port: 8889,
      username: 'root',
      password: 'root',
      database: 'typeorm_test',
      entities: [
        __dirname + '/../**/**.entity{.ts,.js}',
      ],
      autoSchemaSync: true,
      logging: 'all',
    }),
  },
];

【问题讨论】:

    标签: javascript mysql typescript typeorm


    【解决方案1】:

    TypeORM 默认使用默认为 10 个连接的连接池。如果您想要自定义池限制(建议),可以在传递给底层 MySQL 驱动程序的 extra 选项下为 connectionLimit 提及相同的内容。

     [
        {
            "name": "default",
            "type": "mysql",
            "host": "mysql.db",
            "port": 3306,
            "username": "appUser",
            "password": "appRandomPassword",
            "database": "entity_schema",
            "entities": [
                "dist/models/entities/**/*.js"
            ],
            "logging": [
                "error"
            ],
            "extra": {
                "connectionLimit": 5
            }
        }
    ]
    

    TypeORM Docs

    MySQL Connection pooling options,如果需要,可以在extra 下传递。

    【讨论】:

    • 也就是说,如果我有 10 个客户端运行“长”查询,下一个并发客户端将在队列中等待可用连接?
    • so queueLimit = 0 表示无限队列,因此第 11 个并发客户端将在队列中,除非前 10 个客户端之一已经完成,并且它与 db 的连接可以分配给第 11 个,是对吗? :) 谢谢
    【解决方案2】:

    TypeORM 始终为您创建一个开箱即用的连接池,您无需进行任何设置。它对存储库/实体管理器方法的每个请求或每个事务使用来自池的一个连接。

    【讨论】:

      【解决方案3】:

      您需要将extra 参数传递给底层数据库。从official doc看来,在typeorm中,只有mssql和mongo支持连接池。

      【讨论】:

      • 这是真的,但是您仍然可以通过传递正确的(未记录的)选项来设置其他数据库的连接限制。例如,使用 Postgres,您可以通过 extra: { max: 10 } 将池大小设置为 10。请参阅此内容以供参考:PostgresDriver.tspg-pool/index.js
      • 1 年后,仍未记录。非常感谢你
      猜你喜欢
      • 2018-11-12
      • 1970-01-01
      • 2011-11-13
      • 2019-03-28
      • 1970-01-01
      • 2010-12-14
      • 2014-10-28
      • 1970-01-01
      • 2020-11-30
      相关资源
      最近更新 更多