2013-02-26 23 views

回答

3

二進制輸入輸出支持二進制COPY,對,對於PostgreSQL有線協議中的二進制傳輸。

在許多情況下,二進制傳輸實際上比文本傳輸性能差。僅建議用於非常特殊的情況。除非你有一個非常具體的問題需要解決,否則你不需要二進制傳輸。

PgJDBC支持二進制PostgreSQL協議。我不知道ODBC驅動程序是否。無論如何你都不應該使用它。

+0

好的!感謝你的回答!所以,即使在bytea數據字段中插入時,如果我理解正確,它將使用文本輸入而不是二進制。所以它不依賴於底層字段的數據類型,而是依賴於使用的協議? – navige 2013-02-26 13:55:46

+0

@navititious正確。任何給定的數據類型都可以同時具有二進制和文本輸入和輸出。文本輸入和輸出功能是必需的;二進制的是可選的。 'bytea'通常使用十六進制編碼(Pg9.1及以上)或八位字節轉義符號(Pg9.0及以下)以文本格式交換,而不是二進制。 'bytea'是爲數不多的以二進制形式傳輸數據可以更高效且值得花費的案例之一。 PostgreSQL協議可以讓你以文本形式傳輸一些列,還有一些以二進制形式傳輸。無論如何,最有可能你不需要這個。 – 2013-02-26 14:01:40

+1

@navititious如果您對內部工作非常好奇,我建議您使用wireshark來檢查協議交換,或者啓用PostgreSQL中的一些低級調試設置以及您正在使用的客戶端驅動程序(JDBC/ODBC/etc) ,所以你可以看到客戶端如何與服務器交談。 – 2013-02-26 14:04:30

相關問題