1
li24361 2015-11-04 09:56:01 +08:00
参照 spring 等框架,一般是初始化的时候,就建立的
|
2
hyy 2015-11-04 09:56:38 +08:00
我觉得用的时候再建比较好,不然耽误服务器启动时间,毕竟服务器启动后,可以马上服务其他不需要连接数据库的功能。
|
3
ryanking8215 2015-11-04 10:30:27 +08:00
@hyy 创建快的话,也不会耽误多少服务器启动时间; 创建慢的话,到用的时候不就响应慢了。所以无论快慢在服务器起来的时候就创建啊。数据库对象池创建很慢吗?!
|
4
awanabe 2015-11-04 10:31:56 +08:00
启动服务的时候.
理由如下: 1. 如何判断 用户第一次使用到数据库? 2. 第一次使用初始化时间消耗. 3. 启动服务没有启用数据库连接池, 如何判断连接池可以正常启用? 等到需要的时候发现不能启用, 那就哭. 4. 连接池都说了是池了... 目的就是用于不过度重建+释放资源, 有效利用资源. 这种 pool 不都应该提前应用准备好么... |
5
Kisesy 2015-11-04 13:21:19 +08:00
你卖东西的时候,是先摆好商品还是等顾客来时再摆呢?
|
6
yuezhimsolo 2015-11-04 13:46:53 +08:00
预热
|
7
beneo 2015-11-04 14:16:41 +08:00
启动的时候难道不检查一下数据库到底能不能连得上么,呵呵
|
8
iyaozhen 2015-11-04 14:40:53 +08:00
@Kisesy 我觉得楼主的意思是,并不知道这次请求会不会用上数据库,想等需要用的时候在连接。
不过个人建议 init 的时候就连接吧,所有的初始操作都放进去,有利于 cache ,也方便别的阅读代码。万一连接方法有个啥调整,也好调整。 |
9
jhdxr 2015-11-04 18:46:52 +08:00
这个问题得分语言讨论。。。比如 java 之类的,那毫无疑问是启动时建好;而对于 php (每次请求会完整的走一遍创建到销毁这种生命周期的),楼主这问题才有讨论的价值,因为有可能有些请求我根本不涉及到数据库,那在创建时候建立就浪费了。。。
|
10
haozhang 2015-11-04 20:37:22 +08:00
像池这类东西都应该是全局的啊...所以都应该在程序刚刚加载的时候创建,程序结束的时候销毁。是看程序的生命周期...
|
11
xiaolee59 2015-11-05 10:44:41 +08:00
连接池的话一般是程序启动的时候就开出来。
但如果是全局的单个连接的对象的话,其实就没必要占用程序启动的时间,在代码里按需启动即可,由第一个需要数据库连接的来初始化,然后大家共享就行。 要考虑下你们的实际服务部署方式,想象一下一台物理机上开多个服务器进程的时候,假如太多东西都在程序初始化的时候启动的话,你的服务得多长时间才能启动完毕? |