Mysql
 sql >> база данни >  >> RDS >> Mysql

Хибернация Картографиране на релациите/Ускоряване на партидни вмъквания

Стратегията за генериране на ID е от решаващо значение за партидно вмъкване в Hibernate. По-специално генерирането на IDENTITY обикновено не работа (имайте предвид, че AUTO обикновено се съпоставя и с IDENTITY). Това е така, защото по време на пакетно вмъкване Hibernate има флаг, наречен "requiresImmediateIdAccess", който казва дали генерираните идентификатори са незабавно необходими или не; ако е така, пакетната обработка е деактивирана.

Можете лесно да забележите това в регистрационните файлове на ниво DEBUG, когато пише „изпълняване на идентификация-вмъкване незабавно“ – това означава, че е пропуснала пакетна обработка, защото е било казано, че генерираните идентификатори са необходими веднага след вмъкването.

Стратегии за генериране, които обикновеноправят Работата е TABLE и SEQUENCE, тъй като Hibernate може предварително да генерира идентификаторите, като по този начин позволява партидно вмъкване.

Бърз начин да разберете дали вмъкването на партида работи е да активирате регистрационните файлове на ниво DEBUG, тъй като BatchingBatcher изрично ще ви каже размера на партидата, която изпълнява („Размер на партида за изпълнение:„ + batchSize ).

Освен това следните свойства са важни за постигане на партидно вмъкване. Не смея да твърдя, че са необходими, тъй като не съм достатъчен експерт по Hibernate, за да го направя – може би това е само моята конкретна конфигурация – но според моя опит те все пак бяха необходими:

hibernate.order_inserts = true
hibernate.order_updates = true

Тези свойства са доста лошо документирани, но вярвам, че това, което направиха, беше да позволи на SQL INSERT и UPDATE изразите да бъдат правилно групирани за пакетно изпълнение; Мисля, че това може да са многоредовите вложки, които търсите. Не ме стреляйте, ако греша в това, припомням си.

Ще продължа и ще приема, че сте задали следното свойство; ако не, това трябва да служи като напомняне:

hibernate.jdbc.batch_size = xx

Където xx е желаният от вас размер на партидата, естествено.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на MySQL с Django - Достъпът е отказан за потребител '@'localhost

  2. Как да променя паролата на root потребителя в MySQL?

  3. Разграничители в MySQL

  4. CONVERT_TZ() Примери – MySQL

  5. MySQL LIKE + php sprintf