C3P0数据库连接池属性(导入hibernate-release-4.2.4.final\lib\optional\c3p0\*.jar):
— hibernate.c3p0.max_size:数据库连接池的最大连接数
— hibernate.c3p0.min_size:数据库连接池的最小连接数
— hibernate.c3p0.timeout: 数据库连接池中连接对象在多长时间没有使用过后,就应该被销毁
— hibernate.c3p0.max_statements:缓存Statements对象的数量
— hibernate.c3p0.idle_test_period:表示连接池检测线程多长时间检测一次池内的多有链接对象是否超时,连接池本身不会把自己从连接池中移除,而是专门有一个线程按照一定的时间间隔来做这件事,这个线程通过比较连接对象最后一次被使用时间和当前时间的时间差来和timeout做对比,进而决定是否销毁这个连接对象。
— hibernate.c3p0.acquire_increment:当连接池中的连接耗尽时,同一时刻获取多少个数据库连接
jdbc.fetch_size和jdbc.batch_size(对mysql无效,对oracle有效)
hibernate.jdbc.fetch_size:实质是调用Statement.setFetchSize()方法设定jdbc的Statement读取数据的时候每次从数据库中读取的记录条数。fetch_size值设的越大,读数据库的次数越少,速度越快,web服务器的压力越大;fetch_size值设的越小,读数据库次数越多,速度越慢,web服务器压力越小;一般取值100适合。
hibernate.jdbc.batch_size:设定对数据库进行批量删除,批量更新、批量插入的时候批次大小。类似于设置缓冲区大小的意思。batch_size值越大,批量操作向数据库发送sql的次数越少,速度就越快。测试结果:当batch_size为0时,使用hibernate对oracle数据库删除1万条记录需要25秒,batch-size为50时,只需5秒。oracle数据库设置batch_size为30时比较合适。