sql >> Databáze >  >> RDS >> Mysql

Bez ohledu na to nemohu dávkovat příkazy MySQL INSERT v režimu spánku

Je pravděpodobné, že se vaše dotazy přepisují, ale při pohledu na protokoly Hibernate SQL byste to nevěděli. Hibernate nepřepisuje příkazy insert - ovladač MySQL je přepisuje. Jinými slovy, režim spánku odešle ovladači více příkazů vložení a ovladač je poté přepíše. Protokoly Hibernate tedy zobrazují pouze to, co SQL Hibernate odeslal ovladači, nikoli to, co SQL odeslal ovladač do databáze.

Můžete to ověřit povolením parametru profileSQL MySQL v adrese URL připojení:

<b:property name="jdbcUrl" value="jdbc:mysql://server:3306/db?autoReconnect=true&amp;rewriteBatchedStatements=true&amp;profileSQL=true" />

Pomocí příkladu podobného tomu vašemu vypadá můj výstup takto:

insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
Wed Feb 05 13:29:52 MST 2014 INFO: Profiler Event: [QUERY]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) duration: 1 ms, connection-id: 81, statement-id: 33, resultset-id: 0, message: insert into Person (firstName, lastName, id) values ('person1', 'Name', 1),('person2', 'Name', 2),('person3', 'Name', 3),('person4', 'Name', 4),('person5', 'Name', 5),('person6', 'Name', 6),('person7', 'Name', 7),('person8', 'Name', 8),('person9', 'Name', 9),('person10', 'Name', 10)

Prvních 10 řádků zaznamenává Hibernate, i když to není to, co se ve skutečnosti odesílá do databáze MySQL. Poslední řádek pochází z ovladače MySQL a jasně ukazuje jedno dávkové vložení s více hodnotami a to je to, co se ve skutečnosti odesílá do databáze MySQL.




  1. Nelze resetovat heslo uživatele root pomocí --skip-grant-tables na ubuntu 16

  2. formát data v node.JS

  3. Jak spustit více instancí MySQL na stejném počítači

  4. Jak zjistit, kdy byla v Oracle vytvořena konkrétní tabulka?