PostgreSQL और JDBC सभी रस निचोड़ते हैं। व्लादिमीर सीतानिकोव

मेरा सुझाव है कि व्लादिमीर सिटनिकोव द्वारा 2016 की शुरुआत की रिपोर्ट की प्रतिलिपि के साथ परिचित होने के लिए "पोस्टग्रेक्यूएल और जेडीबीसी सभी रस निचोड़ें"




! . 10 NetCracker. . , Java, , SQL – , .


, , PostgreSQL . Java. , , Java. , .



:


  • .
  • .
  • .
  • , .


. .



. 20 .



20 – . 100 , , , . . .


, . .



– . ? , , .



https://github.com/pgjdbc/pgjdbc/pull/478


, , . , , . .


Super extended query – , . , , - , - , . . , , . , .



, , – simple query extended query.


?


. . , , . . - .



Extended query – . , . - . . . .



. . Java . .


statement. . close. ? ? . . . , .



, . ? «close». , – . «PARSE EXECUTE DEALLOCATE».


statements? . PreparedStatement , , . , .



, , . statement, . – . REST statement id. .



?



– statements. : «prepare» «execute».




, , - - . , . , . statement. - , , .


, . . , . , .



? ?


statements. , , .


PostgreSQL . , .


.



.


– , PgSQL. . . . . 100500 . . – . -.


– . , . -. , .



https://github.com/pgjdbc/pgjdbc/pull/319


2015 . . . , . PgSQL, . . , .


Server-prepared statements 5- , .



– ? ? , .


, OLTP- - 20 . 0,5 , 20 . – 10 , 170 . OLTP . 1, 5, 10 , .


20 . 0 . .


? Java, .


- , – ? , , PL 8 LibPQ, , , . ? .



, , - . . , , , .



. . - , SQL-.


? , .


hashCode. CPU – hash’ . – . - . .



. . ORM, , NULL, -. Int, setInt. NULL, VARCHAR . NULL? . .


. , , , VARCHAR, Server-prepared statements. statement.



, , . NULL. , , PreparedStatements



, . , , . . .


? ? , – . . . . , , . , , - , . .



https://gist.github.com/vlsi/df08cbef370b2e86a5c1


, , . NULL . 20 . , .


, . . «?» «$1» , ?



https://gist.github.com/vlsi/df08cbef370b2e86a5c1


– . – . - . --. – - . , . , , , ?



? ? . generic . , , - generic , , , , . , . - , .


? , , - . , . +0, OFFSET 0. , . «+0» . .


– . , 6 «explain analyze». 5, .


– pgsql-hackers . , , – .



https://gist.github.com/vlsi/df08cbef370b2e86a5c1


– , . «+0». . , . . . «+0» , , .



6- explain’. 6 , . , . . .


, ? , . .



. , . . – . ? . . – , .



: «?». , , , , «search_path», , . , .


? , server-prepared statements , search_path - . . - .



, , . , . 9.1 . , .



Set search_path + server-prepared statements =
cached plan must not change result type


? – . search_path . , .


, . . , , . , , , - , : «, . , statements , ?». , - statements .


– , Java. PL/ pgSQL . .



. -. . . . Java- 128 .


, , . . . resultSet . ? ? - ? , Postgres . . OutOFMemory? OutOfMemory? ? - .


, . OFFSET/LIMIT. ? , autoCommit’ ?


, , . autoCommit, . ? .



, Postgres, . PgJDBC , .


FetchSize, . . statement , , , 10, 50. , autoCommit. autoCommit – .


setFetchSize – . , .



. . ? , , , 10 , . .



, , , : defaultRowFetchSize .



. – , . , INSERT, VALUES. . «INSERT SELECT». . .


, Batch statement, , . Postgres – COPY , . . .



, . , ? .



TCP . , , . , , , .



. , .


, . , 200 , . .



https://github.com/pgjdbc/pgjdbc/pull/380


, 10 . . ? , - . «128» – batching.



Java microbenchmark harness


, . , . , , .



. InsertBatch . InsertBatch , . . , values . . , , , COPY.



COPY.



. User default type, INSERT .


: pgjdbc/ubenchmsrk/InsertBatch.java, GitHub. , . .



. , , batch – . batching , . . .



. . . ? , . COPY, , .



. , VALUES, VALUES, VALUES 10 . . 1, 2, 4, 128. , Batch Insert, , . . . , , , VALUES . EXECUTE.


COPY – . . , . . COPY.


COPY , . . , , . Batch , COPY – .


हम अगला क्या करें? उन्होंने इसे मापा। हम समझते हैं कि हमें या तो संरचनाओं का उपयोग करना चाहिए या कई मूल्यों के संयोजन से सरल बैक्टीज़ का उपयोग करना चाहिए।



आज की रिपोर्ट से क्या सीखने की जरूरत है?


  • रेडीस्टेडमेंट हमारी हर चीज है। यह प्रदर्शन के लिए बहुत कुछ देता है। यह टार का एक बड़ा बैरल देता है।
  • और आपको 6 बार EXALAIN ANALYZE करने की आवश्यकता है।
  • और आपको हमारे समस्याग्रस्त प्रश्नों के प्रतिशत को संपादित करने के लिए OFFSET 0 और ट्रिक्स जैसे +0 की जरूरत है।

All Articles