2015-12-11 8 views
18

के साथ बैच आवेषण कैसे सक्षम करें मैं क्रॉस टेबल में बड़ी संख्या में इकाइयों को सम्मिलित करना चाहता हूं। ऐसा करने के लिए, मैं हाइबरनेट के बैच सम्मिलन विकल्प को सक्षम करना चाहता हूं, ताकि प्रत्येक सम्मिलन 1 में नहीं जोड़ा जाएगा, लेकिन एक समय में 20 या 50 पंक्तियां।हाइबरनेट और स्प्रिंग बूट

मैं hibernate's tutorial से परिणामों को पुन: उत्पन्न करने की कोशिश कर रहा हूं।

//Batch inserting test entities 
//This code is inside transaction already, so I'm not creating a new one 
entityManager.flush(); 
for (int i = 0; i < 30; ++i) { 
    Customer customer = new Customer("Customer" + i, (i + 5) * 1000, "Position " + i); 
    entityManager.persist(customer); 
    if (i % 20 == 0) { 
     entityManager.flush(); 
     entityManager.clear(); 
    } 
} 
entityManager.flush(); 
entityManager.clear(); 

ग्राहक वर्ग नहीं उत्पन्न आईडी है: मैं एक परीक्षण समारोह है कि सिर्फ उदाहरण की तरह, 30 ग्राहकों को सम्मिलित करने की कोशिश करेंगे बना लिया है।

@Entity 
public class Customer { 

    @Id 
    private String id; 
    @Column 
    private String name; 
    @Column 
    private long salary; 
    @Column 
    private String position; 

    public Customer() { 

    } 

    public Customer(String name, long salary, String position) { 
     this.id = UUID.randomUUID().toString(); 
     this.name = name; 
     this.salary = salary; 
     this.position = position; 
    } 

} 

जो मैं देखने की उम्मीद कर रहा हूं वह 2 सम्मिलित बयान, 20 रिकॉर्ड के लिए एक और 10 रिकॉर्ड के लिए एक है। हालांकि, जब मैं पोस्टग्रेज़ लॉग खोलता हूं, तो मुझे 30 सम्मिलित कथन दिखाई देता है, प्रत्येक में केवल 1 पंक्ति डालने लगती है। मैंने दो बार जांच की है कि पोस्टग्रेस का उपयोग करके कई पंक्तियां डालना संभव है।

मेरा मानना ​​है कि समस्या hibernate.jdbc.batch_size 20 पैरामीटर के कारण होती है, जिसे मुझे हाइबरनेट में जाना है। हालांकि, चूंकि मैं वसंत बूट का उपयोग कर रहा हूं, मेरे पास केवल एक ही विन्यास फाइल है application.properties। इसलिए मैं यह वहाँ डालने गए हैं की कोशिश की:

hibernate.jdbc.batch_size=20 
hibernate.order_inserts=true 
hibernate.order_updates=true 
hibernate.jdbc.batch_versioned_data=true 
spring.jpa.hibernate.jdbc.batch_size=20 
spring.jpa.hibernate.order_inserts=true 
spring.jpa.hibernate.order_updates=true 
spring.jpa.hibernate.jdbc.batch_versioned_data=true 
spring.jpa.properties.hibernate.jdbc.batch_size=20 
spring.jpa.properties.hibernate.order_inserts=true 
spring.jpa.properties.hibernate.order_updates=true 
spring.jpa.properties.hibernate.jdbc.batch_versioned_data=true 

इस answer के अनुसार, इस के लिए पर्याप्त होना चाहिए, लेकिन मैं अपने जार के अंदर hibernate.properties फाइल करने के लिए इन मानकों को कॉपी करने की कोशिश की और कमांड लाइन के माध्यम से पैरामीटर की आपूर्ति की है : -Dhibernate.jdbc.batch_size=20 जैसा कि इस documentation में बताया गया है।

इनमें से कोई भी मदद नहीं करता है।
मुझे अपने कोड में बैच आकार की संपत्ति पढ़ने का कोई तरीका नहीं मिल रहा है। ऐसा लगता है कि हाइबरनेट के दस्तावेज़ में उल्लिखित अधिकांश वस्तुएं वसंत बूट एप्लिकेशन में मौजूद नहीं हैं।
मैं वसंत बूट एप्लिकेशन के अंदर हाइबरनेट के बैच डालने को कैसे सक्षम कर सकता हूं?

मैं एक न्यूनतम काम कर उदाहरण जो मुद्दा reproduces बना लिया है: https://github.com/Alexey-/spring-boot-batch


व्लाड मिहाल्सिय से जवाब मिलने के मैंने महसूस किया कि हाँ, वास्तव में बैच बयान काम कर रहे हैं के बाद, कम से कम पर हाइबरनेट और जेडीबीसी स्तर।

हालांकि, पोस्टग्रेस लॉग स्वयं को बहुत ही रोचक व्यवहार दिखाते हैं: वे बैच आवेषण और सामान्य आवेषण के मामले के लगभग समान हैं।

क्या मैं शुरू में देखने के लिए कि हाइबरनेट इस तरह के बयानों का उपयोग कर किया जाएगा उम्मीद कर रहा था:

test=# INSERT INTO customer (name, position, salary, id) values ('CustomerX', 'PositionX', '1000', 'idX'), ('CUSTOMERY', 'POSITIONY', '1000', 'idY'); 

कौन सा उत्पादन करेगा समान रिकॉर्ड लॉग इन करें यह करने के लिए:

2015-12-15 11:43:33.238 MSK LOG: statement: INSERT INTO customer (name, position, salary, id) values ('CustomerX', 'PositionX', '1000', 'idX'), ('CUSTOMERY', 'POSITIONY', '1000', 'idY'); 

हालांकि, यह मामला नहीं है ।
जब बैच प्रविष्टि सक्षम है (p6spy पता चलता है कि बयान कर रहे हैं, वास्तव में, batched), postgres इस के समान लॉग उत्पादन करेगा:

2015-12-15 12:07:00.638 MSK LOG: execute <unnamed>: BEGIN 
2015-12-15 12:07:00.638 MSK LOG: duration: 0.000 ms 
2015-12-15 12:07:00.638 MSK LOG: duration: 0.000 ms parse <unnamed>: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:07:00.638 MSK LOG: duration: 0.000 ms bind <unnamed>: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:07:00.638 MSK DETAIL: parameters: $1 = 'Customer0', $2 = 'Position 0', $3 = '0', $4 = '9c6a86fb-c991-4e98-aa65-fa736ef67dd7' 
2015-12-15 12:07:00.638 MSK LOG: execute <unnamed>: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:07:00.638 MSK DETAIL: parameters: $1 = 'Customer0', $2 = 'Position 0', $3 = '0', $4 = '9c6a86fb-c991-4e98-aa65-fa736ef67dd7' 
2015-12-15 12:07:00.639 MSK LOG: duration: 1.000 ms 
2015-12-15 12:07:00.648 MSK LOG: duration: 0.000 ms parse S_1: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:07:00.648 MSK LOG: duration: 0.000 ms bind S_1: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:07:00.648 MSK DETAIL: parameters: $1 = 'Customer1', $2 = 'Position 1', $3 = '10', $4 = 'c8b2669c-044a-4a4d-acbd-31c3bcd9a783' 
2015-12-15 12:07:00.648 MSK LOG: execute S_1: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:07:00.648 MSK DETAIL: parameters: $1 = 'Customer1', $2 = 'Position 1', $3 = '10', $4 = 'c8b2669c-044a-4a4d-acbd-31c3bcd9a783' 
2015-12-15 12:07:00.648 MSK LOG: duration: 0.000 ms 
2015-12-15 12:07:00.648 MSK LOG: duration: 0.000 ms bind S_1: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:07:00.648 MSK DETAIL: parameters: $1 = 'Customer2', $2 = 'Position 2', $3 = '20', $4 = '1c694f41-2ce7-4ee2-a0c0-f359690506f0' 
2015-12-15 12:07:00.649 MSK LOG: execute S_1: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:07:00.649 MSK DETAIL: parameters: $1 = 'Customer2', $2 = 'Position 2', $3 = '20', $4 = '1c694f41-2ce7-4ee2-a0c0-f359690506f0' 
2015-12-15 12:07:00.649 MSK LOG: duration: 0.000 ms 
2015-12-15 12:07:00.649 MSK LOG: duration: 0.000 ms bind S_1: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:07:00.649 MSK DETAIL: parameters: $1 = 'Customer3', $2 = 'Position 3', $3 = '30', $4 = '1815947d-2604-48d4-a6be-43f6905130cf' 
2015-12-15 12:07:00.649 MSK LOG: execute S_1: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:07:00.649 MSK DETAIL: parameters: $1 = 'Customer3', $2 = 'Position 3', $3 = '30', $4 = '1815947d-2604-48d4-a6be-43f6905130cf' 
2015-12-15 12:07:00.649 MSK LOG: duration: 0.000 ms 
2015-12-15 12:07:00.649 MSK LOG: duration: 0.000 ms bind S_1: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:07:00.649 MSK DETAIL: parameters: $1 = 'Customer4', $2 = 'Position 4', $3 = '40', $4 = 'cc521007-820f-4d58-8e1a-16a166aa91cf' 
2015-12-15 12:07:00.649 MSK LOG: execute S_1: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:07:00.649 MSK DETAIL: parameters: $1 = 'Customer4', $2 = 'Position 4', $3 = '40', $4 = 'cc521007-820f-4d58-8e1a-16a166aa91cf' 
2015-12-15 12:07:00.649 MSK LOG: duration: 0.000 ms 
... the rest of the logs is identical and do not provide any valuable information... 

और जब बैच बयान विकलांग (p6spy से पता चलता है कि कोई बैचिंग किया जाता है) कर रहे हैं , लॉग इस तरह दिखता होगा:

2015-12-15 12:09:00.246 MSK LOG: execute <unnamed>: BEGIN 
2015-12-15 12:09:00.246 MSK LOG: duration: 0.000 ms 
2015-12-15 12:09:00.246 MSK LOG: duration: 0.000 ms parse <unnamed>: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:09:00.246 MSK LOG: duration: 0.000 ms bind <unnamed>: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:09:00.246 MSK DETAIL: parameters: $1 = 'Customer0', $2 = 'Position 0', $3 = '0', $4 = '9e085ad0-437f-4d7d-afaa-e342e031cbee' 
2015-12-15 12:09:00.246 MSK LOG: execute <unnamed>: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:09:00.246 MSK DETAIL: parameters: $1 = 'Customer0', $2 = 'Position 0', $3 = '0', $4 = '9e085ad0-437f-4d7d-afaa-e342e031cbee' 
2015-12-15 12:09:00.246 MSK LOG: duration: 0.000 ms 
2015-12-15 12:09:00.248 MSK LOG: duration: 0.000 ms parse <unnamed>: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:09:00.248 MSK LOG: duration: 0.000 ms bind <unnamed>: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:09:00.248 MSK DETAIL: parameters: $1 = 'Customer1', $2 = 'Position 1', $3 = '10', $4 = 'f29cfa40-7d24-49a6-ae5d-2a2021932d80' 
2015-12-15 12:09:00.248 MSK LOG: execute <unnamed>: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:09:00.248 MSK DETAIL: parameters: $1 = 'Customer1', $2 = 'Position 1', $3 = '10', $4 = 'f29cfa40-7d24-49a6-ae5d-2a2021932d80' 
2015-12-15 12:09:00.249 MSK LOG: duration: 1.000 ms 
2015-12-15 12:09:00.250 MSK LOG: duration: 0.000 ms parse <unnamed>: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:09:00.250 MSK LOG: duration: 0.000 ms bind <unnamed>: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:09:00.250 MSK DETAIL: parameters: $1 = 'Customer2', $2 = 'Position 2', $3 = '20', $4 = '067dd6d4-5060-467f-b533-75994ecbaedc' 
2015-12-15 12:09:00.250 MSK LOG: execute <unnamed>: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:09:00.250 MSK DETAIL: parameters: $1 = 'Customer2', $2 = 'Position 2', $3 = '20', $4 = '067dd6d4-5060-467f-b533-75994ecbaedc' 
2015-12-15 12:09:00.250 MSK LOG: duration: 0.000 ms 
2015-12-15 12:09:00.250 MSK LOG: duration: 0.000 ms parse <unnamed>: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:09:00.250 MSK LOG: duration: 0.000 ms bind <unnamed>: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:09:00.251 MSK DETAIL: parameters: $1 = 'Customer3', $2 = 'Position 3', $3 = '30', $4 = '7df32327-f2f5-4011-848d-55aafb3f09fa' 
2015-12-15 12:09:00.251 MSK LOG: execute <unnamed>: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:09:00.251 MSK DETAIL: parameters: $1 = 'Customer3', $2 = 'Position 3', $3 = '30', $4 = '7df32327-f2f5-4011-848d-55aafb3f09fa' 
2015-12-15 12:09:00.251 MSK LOG: duration: 0.000 ms 
2015-12-15 12:09:00.251 MSK LOG: duration: 0.000 ms parse S_1: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:09:00.251 MSK LOG: duration: 0.000 ms bind S_1: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:09:00.251 MSK DETAIL: parameters: $1 = 'Customer4', $2 = 'Position 4', $3 = '40', $4 = '1e55ab6a-8780-4c8f-8af2-2886d954f819' 
2015-12-15 12:09:00.251 MSK LOG: execute S_1: insert into customer (name, position, salary, id) values ($1, $2, $3, $4) 
2015-12-15 12:09:00.251 MSK DETAIL: parameters: $1 = 'Customer4', $2 = 'Position 4', $3 = '40', $4 = '1e55ab6a-8780-4c8f-8af2-2886d954f819' 
2015-12-15 12:09:00.251 MSK LOG: duration: 0.000 ms 
... the rest of the logs is identical and do not provide any valuable information... 

तो, दोनों के बीच फर्क सिर्फ इतना है जब बैच अक्षम है, postgres छोटा सा अधिक समय को एहसास है कि यह तैयार बयान पुनः उपयोग करना चाहिए ले जाएगा है।

इसलिए मैंने इसकी पुष्टि करने के लिए प्रदर्शन परीक्षण चलाने का फैसला किया।
मैंने खाली डेटाबेस में 30,000 रिकॉर्ड डालने का प्रयास किया।
बैचिंग अक्षम होने के साथ, इसमें 334ms लगे।
बैचिंग सक्षम होने के साथ, इसमें 4650ms लगे!

तो मैंने इकाई मैनेजर.फ्लश (केवल इकाई प्रबंधक को छोड़कर) को सभी कॉल हटा दिए और समय 320ms तक गिर गया। मुझे नहीं पता कि क्यों हाइबरनेट के ट्यूटोरियल फ्लश का उपयोग करने की सलाह देते हैं। मुझे लगता है कि यह सिर्फ एक गलती है।

तो मुझे लगता है कि नीचे की रेखा यह है: बैचिंग काम कर रही है, लेकिन यह कोई वास्तविक लाभ प्रदान नहीं करती है (कम से कम पोस्टग्रेस के लिए)। इसके अलावा, इसे अनुचित रूप से उपयोग करना (ट्यूटोरियल में) एक भयानक, भयानक परिणाम हो सकता है। अपने जोखिम पर प्रयोग करें और हमेशा वास्तविक प्रदर्शन वृद्धि को मापें।

+2

क्या आपने पुष्टि की है कि आपका जेडीबीसी ड्राइवर बैच डीडीएल संचालन का समर्थन करता है?जबकि डेटाबेस इसका समर्थन कर सकता है, यदि आपके ड्राइवर का संस्करण नहीं है, तो इसका कोई प्रभाव नहीं पड़ेगा। – Naros

+0

हां, जेडीबीसी चालक बैच का समर्थन करता है। – Alexey

+0

अपनी 'ग्राहक' कक्षा जोड़ें। आप स्प्रिंग बूट का उपयोग कर रहे हैं, इसलिए आपका 'spring.jpa.properties' वह है जिसे आप उपयोग करना चाहिए, अन्य बहुत बेकार हैं। –

उत्तर

10

आपके कोड में कुछ भी गलत नहीं है और यह ठीक से काम कर रहा है।

मैंने इसे डीबग किया और फिर मैंने p6spy इंस्टॉल किया और यह काम कर रहा है।

compile 'p6spy:p6spy:2.1.4' 
  • इस तरह संशोधित कनेक्शन गुण:

    database.driver=com.p6spy.engine.spy.P6SpyDriver 
    database.url=jdbc:p6spy:postgresql://localhost:5432/ 
    
  • resources में spy.properties जोड़े

    1. build.gradle में इस निर्भरता को जोड़ने: यह आप इसे कैसे भी tets कर सकते हैं । आप इसे from here डाउनलोड कर सकते हैं।

    और फिर आप बैच वाक्य दिखायी देंगे:

    2015-12-14 19:38:03.655 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114683655|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer0', 'Position 0', 5000, '9f92ac01-8156-41f1-9bdb-36ff622a99cc') 
    2015-12-14 19:38:03.658 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114683658|2|statement|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer0', 'Position 0', 5000, '9f92ac01-8156-41f1-9bdb-36ff622a99cc') 
    2015-12-14 19:38:04.212 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684212|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer1', 'Position 1', 6000, 'e3a1dc5a-2183-4fb0-aa9a-4fb8cace23a3') 
    2015-12-14 19:38:04.213 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684213|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer2', 'Position 2', 7000, '8824f5be-afe5-4a6a-ab8a-8f266db5973f') 
    2015-12-14 19:38:04.213 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684213|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer3', 'Position 3', 8000, '249304b3-19c5-4376-b5dc-2da685c1db64') 
    2015-12-14 19:38:04.213 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684213|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer4', 'Position 4', 9000, '2bf15945-94c3-45f8-b0d1-e2fedbdcbaca') 
    2015-12-14 19:38:04.214 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684214|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer5', 'Position 5', 10000, '85b2b999-5d84-4181-9c71-1a83b4d20b86') 
    2015-12-14 19:38:04.214 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684214|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer6', 'Position 6', 11000, '8ed6289e-3d04-4ba5-9285-9bce202c8dae') 
    2015-12-14 19:38:04.215 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684215|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer7', 'Position 7', 12000, '2fc489a8-c6c4-4984-808d-2da9a2e8ad4a') 
    2015-12-14 19:38:04.215 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684215|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer8', 'Position 8', 13000, '897cd341-b65b-4521-87e6-f4fb78b09bfd') 
    2015-12-14 19:38:04.215 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684215|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer9', 'Position 9', 14000, 'fa59d5a7-2570-43f9-ba46-595b8fcefa35') 
    2015-12-14 19:38:04.216 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684216|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer10', 'Position 10', 15000, '0b5b38d1-d644-4ea0-a3f0-9aa025463b8a') 
    2015-12-14 19:38:04.216 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684216|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer11', 'Position 11', 16000, 'afbb349f-cf28-4cfb-b5b8-73b4df6fa4b1') 
    2015-12-14 19:38:04.216 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684216|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer12', 'Position 12', 17000, 'd6719dc4-1dfd-433f-a8ae-4c931f461e78') 
    2015-12-14 19:38:04.216 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684216|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer13', 'Position 13', 18000, 'ca277f3c-d51e-493d-a4f7-a945879bd7d0') 
    2015-12-14 19:38:04.217 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684217|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer14', 'Position 14', 19000, '07014145-332b-4b4c-b320-9412443c45b6') 
    2015-12-14 19:38:04.217 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684217|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer15', 'Position 15', 20000, '8ffde083-420f-418d-b624-b059b9e28f3b') 
    2015-12-14 19:38:04.217 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684217|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer16', 'Position 16', 21000, '6ac39900-69db-408a-bda1-4d2706da49ba') 
    2015-12-14 19:38:04.217 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684217|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer17', 'Position 17', 22000, '45f6db1b-18cd-4986-8f46-ce8f02d9588d') 
    2015-12-14 19:38:04.217 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684217|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer18', 'Position 18', 23000, 'b4312298-a818-4b7a-9cff-7923328de4dc') 
    2015-12-14 19:38:04.218 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684218|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer19', 'Position 19', 24000, 'efe7e3d2-da11-40ce-9fee-6f77726499db') 
    2015-12-14 19:38:04.218 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684218|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer20', 'Position 20', 25000, 'd51484c3-36e2-4737-b5c9-135709ad1d30') 
    2015-12-14 19:38:04.808 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684808|2|statement|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer20', 'Position 20', 25000, 'd51484c3-36e2-4737-b5c9-135709ad1d30') 
    2015-12-14 19:38:04.811 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684811|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer21', 'Position 21', 26000, '8c7e0e43-f89f-4000-8367-3406974102f4') 
    2015-12-14 19:38:04.811 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684811|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer22', 'Position 22', 27000, 'ab757793-1c45-4861-aff8-aa5cea3c8bd5') 
    2015-12-14 19:38:04.812 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684812|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer23', 'Position 23', 28000, 'edf18735-cc27-437b-9a28-156f57b51343') 
    2015-12-14 19:38:04.812 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684812|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer24', 'Position 24', 29000, 'c882f053-2e9a-405f-bb94-3ba83303aefe') 
    2015-12-14 19:38:04.812 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684812|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer25', 'Position 25', 30000, 'd6af1feb-5842-4b40-816d-8e2aaa2ce9b3') 
    2015-12-14 19:38:04.812 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684812|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer26', 'Position 26', 31000, '48f6a4cb-5671-4b73-bb51-3e37964fa136') 
    2015-12-14 19:38:04.813 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684812|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer27', 'Position 27', 32000, '6ac59ed6-2a0f-4dbb-a6d7-7231a9c9d2cc') 
    2015-12-14 19:38:04.813 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684813|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer28', 'Position 28', 33000, '57565a6a-4e44-4fe0-86bd-837a9687487d') 
    2015-12-14 19:38:04.813 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684813|0|batch|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer29', 'Position 29', 34000, 'f3c2dbdd-5d54-4bf3-86d2-327c60ee5cc0') 
    2015-12-14 19:38:04.814 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684814|1|statement|connection 7|insert into customer (name, position, salary, id) values (?, ?, ?, ?)|insert into customer (name, position, salary, id) values ('Customer29', 'Position 29', 34000, 'f3c2dbdd-5d54-4bf3-86d2-327c60ee5cc0') 
    2015-12-14 19:38:04.817 INFO 14116 --- [io-18080-exec-3] p6spy : 1450114684817|2|commit|connection 7|| 
    

    तीसरे स्तंभ batch है यह दर्शाता है कि बयान एक JDBC बैच में मार डाला गया।

    batch का उल्लेख करने से पहले कॉलम सही बयान को निष्पादित करने के लिए मिली मिलीसेकंड की मात्रा इंगित करता है। 0 वाले हैं जब बैच में कथन जोड़ा जाता है।

    3 स्तंभ (इसलिए एक 1 या 2 कॉलम में 2 वाले) में statement युक्त लोगों जब बैच मार डाला गया था, जो 20 वीं और 30 वीं यात्रा से मेल खाती है के लिए कर रहे हैं।

  • +0

    आपके पास रास्ते में अच्छी परियोजना है! – Jagger

    +0

    धन्यवाद, ऐसा लगता है कि कोड वास्तव में हर समय काम कर रहा था। ऐसा लगता है कि यह पोस्टग्रेज़ था जो बैच ऑप्टिमाइज़ेशन को अनुकूलित करने वाला था, इसलिए कहने के लिए। मैंने विवरण के साथ अपना प्रश्न अपडेट कर लिया है। – Alexey

    +0

    आमतौर पर, एक लेनदेन में 30k प्रविष्टियों को लिखना अच्छा नहीं है और लोड को कई छोटे लोगों पर विभाजित करना एक बुरा विचार नहीं है। यहां तक ​​कि यदि आप फ्लश विंडो को बढ़ाते हैं, तो बैचिंग अभी भी होगी। सुनिश्चित करें कि आप कनेक्शन पूलिंग का उपयोग करते हैं क्योंकि इससे वास्तव में बहुत अधिक ओवरहेड हो सकता है। –

    संबंधित मुद्दे