Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как отключить reuse of prepared statements / 7 сообщений из 7, страница 1 из 1
04.04.2007, 19:09:33
    #34438685
Lennier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отключить reuse of prepared statements
дока JDBCReuse of prepared statements--PreparedStatements can be used with different pooled connections. This is an important performance improvement for middle tier applications.
Подскажите, как отключить эту фичу?
Код: plaintext
((OraclePreparedStatement)_stmt).setDisableStmtCaching(true);
не помогает,
Код: plaintext
1.
2.
((OracleConnection)conn).setImplicitCachingEnabled(false);
((OracleConnection)conn).setExplicitCachingEnabled(false);
тоже...

Проблема, собственно, в том, что два юзера каждый в своем коннекшене делают prepareStatement() с одинаковым SQL-запросом и получают один и тот же экземпляр PreparedStatement, что не есть гуд.

Oracle JDBC Driver version - 10.1.0.2.0
...
Рейтинг: 0 / 0
04.04.2007, 22:49:34
    #34438955
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отключить reuse of prepared statements
А если так?
JDBC Developer’s Guide and ReferencePlain statements are not implicitly cached, because implicit statement caching uses a
SQL string as a key, and plain statements are created without a SQL string.
Therefore, implicit statement caching applies only to the
OraclePreparedStatement and OracleCallableStatement objects, which
are created with a SQL string.
...
Рейтинг: 0 / 0
05.04.2007, 17:12:18
    #34441326
Lennier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отключить reuse of prepared statements
Проблема решилась с помощью
Код: plaintext
((OracleConnection)conn).setStatementCacheSize( 0 );
...
Рейтинг: 0 / 0
06.04.2007, 10:20:11
    #34442442
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отключить reuse of prepared statements
LennierПроблема, собственно, в том, что два юзера каждый в своем коннекшене делают prepareStatement() с одинаковым SQL-запросом и получают один и тот же экземпляр PreparedStatement, что не есть гуд.
Есть готовый тест кейс? это ж явный баг.
...
Рейтинг: 0 / 0
06.04.2007, 10:47:30
    #34442575
Lennier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отключить reuse of prepared statements
Насколько я понял, кэширование стейтментов это не баг, а фича JDBC 3.0. По крайней мере, преподносится как фича.
Тест-кейз лениво выдирать, кто захочет протестить - написать не сложно. Берутся 2 соединения, в каждом делается prepareStatement(String sql) и проверяется, что вернулся один и тот же экземпляр стейтмента.
...
Рейтинг: 0 / 0
06.04.2007, 13:00:37
    #34443213
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отключить reuse of prepared statements
фича причём очень даже замечательная? нужно только помнить что
JDBC Developer’s Guide and Referenceexplicit statement caching retains statement data and state as well as
metadata
для implicit statement caching
JDBC Developer’s Guide and Reference state and data information are automatically re-initialized
and reset to default values, while metadata is saved. The Least Recently Used (LRU)
scheme performs the statement cache operation.
...
Рейтинг: 0 / 0
06.04.2007, 13:01:21
    #34443217
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отключить reuse of prepared statements
? читать как ,
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как отключить reuse of prepared statements / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]