PostgreSQL ODBC mylog() uses lots of CPU in INTEGER field SQL query

Поиск
Список
Период
Сортировка
От Marko Ristola
Тема PostgreSQL ODBC mylog() uses lots of CPU in INTEGER field SQL query
Дата
Msg-id CALndGf+qOJc6ZPfEAJgs_+CkE01QtEMQVEumGURHzzA+MYOuwg@mail.gmail.com
обсуждение исходный текст
Ответы Re: PostgreSQL ODBC mylog() uses lots of CPU in INTEGER field SQL query
Список pgsql-odbc

I did a query of 4 million rows into an INTEGER field.

Linux perf shows following profile (hottest functions):

   9.91%  bc_sqlselect  psqlodbcw.so               [.] mylog 
   9.64%  bc_sqlselect  psqlodbcw.so               [.] QR_read_a_tuple_from_db
   4.83%  bc_sqlselect  psqlodbcw.so               [.] copy_and_convert_field
   4.57%  bc_sqlselect  libpthread-2.17.so         [.] pthread_mutex_unlock
   4.51%  bc_sqlselect  libpthread-2.17.so         [.] pthread_mutex_lock
   4.40%  bc_sqlselect  psqlodbcw.so               [.] SOCK_get_next_n_bytes.part.2
   3.93%  bc_sqlselect  psqlodbcw.so               [.] PGAPI_ExtendedFetch

Following patch removes the only mylog() call (not a macro)

from the PostgreSQL ODBC driver from consuming CPU:

(MYLOG() macro is used to avoid the heavy mylog() call.)


diff --git a/results.c b/results.c
index 1f6a12c..ec89600 100644
--- a/results.c
+++ b/results.c
@@ -4632,7 +4632,6 @@ SC_pos_add(StatementClass *stmt,
                        goto cleanup;
                }
                MYLOG(0, "addstr=%s\n", addstr.data);
-               mylog("addstr=%s\n", addstr.data);
                s.qstmt->exec_start_row = s.qstmt->exec_end_row = s.irow;
                s.updyes = TRUE;
                ret = PGAPI_ExecDirect(hstmt, (SQLCHAR *) addstr.data, SQL_NTS, 0);


Best Regards, Marko Ristola

--

Marko Ristola
Software developer
BC Platforms

m. +358 40 593 2182
e. marko.ristola@bcplatforms.com
w. www.bcplatforms.com

В списке pgsql-odbc по дате отправления:

Предыдущее
От: Andrey Lukyanov
Дата:
Сообщение: MSI Digital Signature
Следующее
От: ScheduleReports Monitoring
Дата:
Сообщение: ODBC Get-Data using FIll() gets timeout after 2 hours half of the time