Far*_*rad 5 database database-connection typeorm nestjs
在我的第一个项目,我们使用express
和mysql
图书馆没有任何ORM,我们打开连接时,控制器启动和关闭在这方面finaly
块。我一直认为这个方法是对的。
但是现在我开始用 NestJS + TypeORM 做一个应用程序,当我的服务器启动时 - 连接已准备好打开!我想知道是否可以,开始谷歌但更困惑。
例如人们说
“你必须只在需要的时候打开连接,使用后立即关闭它,因为你不应该保持 1 个打开的连接,其他用户可能需要它”。
他们还说:
“你必须使用连接池。连接池打开 1+ 个连接并保持它们打开。当你的应用程序中的某个线程需要它时,它不会浪费时间打开”..
什么?这两个句子互相排斥。
所以,
问题1:谁是对的?
问题2:
如果 TypeORM 使用“连接池”,那么它的优势是什么,如果我的控制器将始终使用“默认连接”?
@Injectable()
export class UsersService {
constructor(
@InjectRepository(User)
private usersRepository: Repository<User>,
) {}
findAll(): Promise<User[]> {
return this.usersRepository.find();
}
}
Run Code Online (Sandbox Code Playgroud)
如果 1kk 用户同时请求此控制器 - TypeORM 不会在用户池中创建额外连接以防止一个连接过载。那么,TypeORM 连接池有什么意义呢?
小智 0
问题 1:这取决于逻辑和应用程序的上下文,对我来说既不正确也不正确。
问题 2:连接池将在需要时打开数据库连接以最大化性能。如果您的应用程序有并发用户,则使用许多与数据库的连接是有意义的。您应该将数据库连接的打开和关闭委托给连接池管理器。您可以限制与数据库的连接数量(https://github.com/typeorm/typeorm/blob/master/docs/connection-options.md#common-connection-options)。
问候
归档时间: |
|
查看次数: |
640 次 |
最近记录: |