Я использую hibernate и c3p0 для базы данных, и у меня есть Java-приложение с ThreadPoolExecutor.То, что я делаю, я задаю различные задачи, каждая из которых связана с hibernate, для хранения данных в Hibernate с использованием транзакций и getCurrentSession.Таким образом, у меня есть
new ThreadPoolExecutor(CORE_POOL_SIZE, MAX_POOL_SIZE, KEEP_ALIVE_TIME, TimeUnit.MINUTES,taskQueue);
Runnable
{
@Override
public void run() {
Session session = HibernateDAO.getInstance().getCurrentSession();
Transaction tx = null;
try
{tx = session.beginTransaction(); .....
}
И поток hibernate.cfg org.hibernate.connection.C3P0ConnectionProvider 1
<!-- Database c3p0 settings -->
<property name="hibernate.c3p0.min_size">3</property>
<property name="hibernate.c3p0.max_size">3</property>
<property name="hibernate.c3p0.initialPoolSize">3</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.timeout">5000</property>
<property name="hibernate.c3p0.acquire_increment">2</property>
Моя цель - получить для каждого потока от исполнителя, чтобы получить соединение, используяgetCurrentSession и выполните session.saveOrUpdate (item), теперь у меня есть пара вопросов.Какой уровень изоляции я должен использовать, потому что у меня 95% операций записи / обновления и 5% операций чтения и чтения не прерываются операциями записи.Я получаю в журнале HTML от log4j
905 pool-1-thread-1 DEBUG com.mchange.v2.resourcepool.BasicResourcePool trace com.mchange.v2.resourcepool.BasicResourcePool@434cb775 [managed: 3, unused: 0, excluded: 0] (e.g. com.mchange.v2.c3p0.impl.NewPooledConnection@697506e6)
905 pool-1-thread-5 DEBUG com.mchange.v2.resourcepool.BasicResourcePool trace com.mchange.v2.resourcepool.BasicResourcePool@434cb775 [managed: 3, unused: 0, excluded: 0] (e.g. com.mchange.v2.c3p0.impl.NewPooledConnection@697506e6)
965 pool-1-thread-4 DEBUG com.mchange.v2.resourcepool.BasicResourcePool trace com.mchange.v2.resourcepool.BasicResourcePool@434cb775 [managed: 3, unused: 0, excluded: 0] (e.g. com.mchange.v2.c3p0.impl.NewPooledConnection@697506e6)
Означает ли это, что у меня есть только 1 соединение в c3p0 или несколько соединений в одном пуле?
Я использую это как следуетUSED ????
какой уровень изоляции будет наилучшим для одновременных записей?
Заранее спасибо всем, если кому-то нужны дополнительные данные и объяснения, просто нажмите.
- РЕДАКТИРОВАТЬ: ответил
Как подсказано в ответе, я проверил администратора сервера mysql, и есть больше соединений, которые используются для запроса ... так что это правильный путьиспользуйте это: D ... Что касается уровней изоляции, я постараюсь позволить