Here to sposób na zwiększenie wydajności wsadu wsadowego. Czy można ustawić programowo rewriteBatchedStatements
, , a nie za pośrednictwem adresu URL?Jak programowo ustawić rewriteBatchedStatements dla sterownika jdbc mysql?
Odpowiedz
Jeśli nie chcesz to zrobić za pośrednictwem adresu URL, można użyć obiektu Properties
z DriverManager
:
Properties props = new Properties();
props.setProperty("user", ...);
props.setProperty("password", ...);
props.setProperty("rewriteBatchedStatements", "true");
Connection connection = DriverManager.getConnection(url, props);
Jeśli używasz MysqlDataSource
lub MysqlConnectionPoolDataSource
, musisz ustawić właściwość rewriteBatchedStatements
(lub ustawiający ustawiający setRewriteBatchedStatements(boolean)
Aby to zmienić w czasie działania po uzyskaniu połączenia, powinien mieć możliwość korzystania z:
((com.mysql.jdbc.ConnectionProperties) connection).setRewriteBatchedStatements(true);
Uwaga: Mam tylko spojrzał na źródłach MySQL Connector/J, dla tej ostatniej opcji, nie mam przetestowałem to.
AKTUALIZACJA
Dla C3P0 można użyć następujących:
ComboPooledDataSource cpds = ...
Connection connection = cpds.getConnection();
connection.unwrap(com.mysql.jdbc.ConnectionProperties.class).setRewriteBatchedStatements(true);
C3P0 powinny być com.mchange:c3p0:0.9.5.2
, należy zachować ostrożność z com.mchange
- z drugiej GroupID kod ten nie działa.
@Cherry Dzięki za edycję. Całkowicie zapomniałem wspomnieć o "unwrap", prawdopodobnie będzie działać dla normalnego połączenia MySQL i dla zawiniętych połączeń MySQL innych źródeł danych. –
Powinieneś być w stanie to zrobić przy użyciu Connection.setClientInfo
:
Connection c = ...;
c.setClientInfo("rewriteBatchedStatements", "true");
Czy wiesz na pewno, że to działa? Po prostu rzuciłem okiem na kod źródłowy MySQL/kod źródłowy J, ale setClientInfo wydaje się tylko ustawiać informacje po stronie serwera dotyczące bieżącego połączenia. –
Moje to istniejące pytanie w SO pomoże ci. http://stackoverflow.com/questions/26307760/mysql-and-jdbc-with-rewritebatchedstatements-true –