Поделиться через


Управление размером транзакций

Скачать драйвер JDBC

При работе с транзакциями важно, чтобы транзакции были как можно более короткими. Применяемый по умолчанию режим автофиксации, который можно включить или отключить с использованием метода setAutoCommit, будет фиксировать каждое действие. Это самый простой режим работы для большинства разработчиков.

При использовании ручных транзакций убедитесь, что код фиксирует транзакцию как можно скорее. Будучи открытой, транзакция блокирует доступ к данным для остальных пользователей. Например, хорошим приемом программирования считается помещение вызова rollback в блок catch, а вызова commit — в блок finally. Но это зависит от конструкции вашего приложения.

Чтобы повысить степень параллелизма, необходимо уменьшить размер транзакций. Например, если вы запускаете транзакцию вручную и изменяете 10 000 строк в таблице с 20 000 строками, половина таблицы будет заблокирована для других пользователей, даже если они будут только читать данные. Сокращение же модификаций до 2 000 строк оставит таблицу доступной на 90 процентов.

Кроме того, обязательно используйте параметр истечения времени блокировки, если в приложении ожидаются проблемы с блокировками. Для этого можно использовать метод setLockTimeout. Установленное по умолчанию значение истечения времени блокировки равно –1. Это означает блокировку на неопределенно долгое время в ожидании блокировки. Можно установить время ожидания блокировки в 30 секунд, чтобы настроить истечение времени ожидания заблокированного соединения через 30 секунд в случае блокировки другим подключением.

См. также

Повышение производительности и надежности с помощью JDBC Driver