During performance testing of our application we have noticed that the amount of data being transferred from PostgreSQL database to the application when fetching content of a BYTEA field is twice the size of the data stored in this field. Once received the volume of the data is exactly the same as stored. It seems that it happens because the data is transferred as a string rather than as a binary. According to the doc (https://jdbc.postgresql.org/documentation/head/connect.html) it should be possible to tell JDBC driver to use binary protocol by appending binaryTransferEnable = BYTEA to the end of the JDBC connection URL, like this: