Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 В логе сервера Postgres не видно значений параметров запросов  [new]
Михаил Конопко
Member

Откуда: Москва
Сообщений: 15
Версия
PostgreSQL 13.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit

Список параметров конфигурации
  • автор
    автор
    [SRC DELPHI][src][SRC PLSQL]postgres=#  select name, setting from pg_file_settings;
                name            |                                setting
    ----------------------------+-----------------------------------------------------------------------
     shared_buffers             | 128MB
     dynamic_shared_memory_type | posix
     max_wal_size               | 1GB
     min_wal_size               | 80MB
     log_destination            | stderr
     logging_collector          | on
     log_directory              | log
     log_filename               | postgresql-%Y-%m-%d_%H%M%S.log
     log_truncate_on_rotation   | on
     log_rotation_age           | 1d
     log_rotation_size          | 200MB
     debug_print_parse          | on
     debug_print_rewritten      | on
     debug_print_plan           | on
     log_checkpoints            | on
     log_duration               | on
     log_error_verbosity        | verbose
     log_line_prefix            | %m procID[%p] remHost[%h] comTAG[%i] SQLstate[%e] sessID[%c] %s %v %q
     log_lock_waits             | on
     log_timezone               | Europe/Moscow
     track_io_timing            | on
     log_parser_stats           | on
     datestyle                  | iso, mdy
     timezone                   | Europe/Moscow
     lc_messages                | en_US.UTF-8
     lc_monetary                | en_US.UTF-8
     lc_numeric                 | en_US.UTF-8
     lc_time                    | en_US.UTF-8
     default_text_search_config | pg_catalog.english
    
    [/SRC][/SRC][/SRC]

Postgres jdbc (на клиенте) выводит текст запроса с параметрами и значения параметров, а в логе сервера появляется запрос и parse tree и все остальное, но значений параметров в логе нет.
29 апр 21, 12:17    [22316237]     Ответить | Цитировать Сообщить модератору
 Re: В логе сервера Postgres не видно значений параметров запросов  [new]
Михаил Конопко
Member

Откуда: Москва
Сообщений: 15
Дополнительно.
Вот запрос в кленте Postgres (jdbc)
"update efbs.mform_ppp_AUD set REVEND=$1, REVEND_TSTMP=$2 where gtp_id=$3 and hour=$4 and target_date=$5 and REV<> $6 and REVEND is null
И далее значения параметров (это все Postgres jdbc выводит )
$1=<12>,type=INT4,
$2=<'2021-04-28 14:55:00.478+03'>,type=UNSPECIFIED,
$3=<271202>,type=INT8,
$4=<18>,type=INT4,
$5=<'2020-01-12 00:00:00+03'>,type=UNSPECIFIED,
$6=<12>,type=INT4

Параметр $3 – dpg_id=271202

Лог сервера Postgres прилагается.
Значения 271202 нигде в логе нет.

Что надо исправить, чтобы значения параметров выводились?

К сообщению приложен файл (Log.txt - 39Kb) cкачать
29 апр 21, 13:05    [22316297]     Ответить | Цитировать Сообщить модератору
 Re: В логе сервера Postgres не видно значений параметров запросов  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 53070
-

Сообщение было отредактировано: 29 апр 21, 13:40
29 апр 21, 13:47    [22316337]     Ответить | Цитировать Сообщить модератору
 Re: В логе сервера Postgres не видно значений параметров запросов  [new]
Павел Лузанов
Member

Откуда:
Сообщений: 803
Михаил Конопко,

pg_file_setting не самый надежный источник значений параметров конфигурации. Лучше запрос из pg_settings. Но предположим, что только перечисленные параметры изменены.

У вас включен log_duration. Это выводит время выполнения команд, но не сами команды. Включите log_statements или log_min_duration_statements. Тогда в журнал будут записываться сами команды вместе со значениями параметров.

Кстати в 13 версии появились параметры log_parameter_max_length (ограничивает размер вывода для параметров, по умолчанию без ограничений) и log_parameter_max_length_on_error (тоже самое, но для команд завершающихся ошибкой, до 13 версии у ошибочных команд нельзя было посмотреть с какими параметрами они запускались).
29 апр 21, 15:12    [22316411]     Ответить | Цитировать Сообщить модератору
 Re: В логе сервера Postgres не видно значений параметров запросов  [new]
Павел Лузанов
Member

Откуда:
Сообщений: 803
При log_min_duration_statement=0 для тестового примера:
import java.sql.*;
public class Test {
  public static void main(String[] args)
  throws SQLException {
    Connection conn = DriverManager.getConnection(
      "jdbc:postgresql://localhost:5432/postgres",
      "postgres", "postgres");
    PreparedStatement st = conn.prepareStatement("SELECT ?");
    st.setInt(1, 42);
    ResultSet rs = st.executeQuery();
    while (rs.next()) {
      System.out.println(rs.getString(1));
    }
    rs.close();
    st.close();
    conn.close();
  }

в журнал записывается:
2021-04-29 15:14:21.985 MSK [12982] postgres@postgres LOG:  duration: 0.131 ms  parse <unnamed>: SET extra_float_digits = 3
2021-04-29 15:14:21.985 MSK [12982] postgres@postgres LOG: duration: 0.006 ms bind <unnamed>: SET extra_float_digits = 3
2021-04-29 15:14:21.985 MSK [12982] postgres@postgres LOG: duration: 0.015 ms execute <unnamed>: SET extra_float_digits = 3
2021-04-29 15:14:21.985 MSK [12982] postgres@postgres LOG: duration: 0.017 ms parse <unnamed>: SET application_name = 'PostgreSQL JDBC Driver'
2021-04-29 15:14:21.985 MSK [12982] postgres@postgres LOG: duration: 0.004 ms bind <unnamed>: SET application_name = 'PostgreSQL JDBC Driver'
2021-04-29 15:14:21.985 MSK [12982] postgres@postgres LOG: duration: 0.012 ms execute <unnamed>: SET application_name = 'PostgreSQL JDBC Driver'
2021-04-29 15:14:22.004 MSK [12982] postgres@postgres LOG: duration: 0.077 ms parse <unnamed>: SELECT $1
2021-04-29 15:14:22.004 MSK [12982] postgres@postgres LOG: duration: 0.041 ms bind <unnamed>: SELECT $1
2021-04-29 15:14:22.004 MSK [12982] postgres@postgres DETAIL: parameters: $1 = '42'
2021-04-29 15:14:22.004 MSK [12982] postgres@postgres LOG: duration: 0.004 ms execute <unnamed>: SELECT $1
2021-04-29 15:14:22.004 MSK [12982] postgres@postgres DETAIL: parameters: $1 = '42'
29 апр 21, 15:18    [22316423]     Ответить | Цитировать Сообщить модератору
 Re: В логе сервера Postgres не видно значений параметров запросов  [new]
Михаил Конопко
Member

Откуда: Москва
Сообщений: 15
Павел Лузанов, отвечаю по порядку:
postgres=# select name, setting from pg_settings;
                  name                  |                                setting
----------------------------------------+-----------------------------------------------------------------------
 allow_system_table_mods                | off
 application_name                       | psql
 archive_cleanup_command                |
 archive_command                        | (disabled)
 archive_mode                           | off
 archive_timeout                        | 0
 array_nulls                            | on
 authentication_timeout                 | 60
 autovacuum                             | on
 autovacuum_analyze_scale_factor        | 0.1
 autovacuum_analyze_threshold           | 50
 autovacuum_freeze_max_age              | 200000000
 autovacuum_max_workers                 | 3
 autovacuum_multixact_freeze_max_age    | 400000000
 autovacuum_naptime                     | 60
 autovacuum_vacuum_cost_delay           | 2
 autovacuum_vacuum_cost_limit           | -1
 autovacuum_vacuum_insert_scale_factor  | 0.2
 autovacuum_vacuum_insert_threshold     | 1000
 autovacuum_vacuum_scale_factor         | 0.2
 autovacuum_vacuum_threshold            | 50
 autovacuum_work_mem                    | -1
 backend_flush_after                    | 0
 backslash_quote                        | safe_encoding
 backtrace_functions                    |
 bgwriter_delay                         | 200
 bgwriter_flush_after                   | 64
 bgwriter_lru_maxpages                  | 100
 bgwriter_lru_multiplier                | 2
 block_size                             | 8192
 bonjour                                | off
 bonjour_name                           |
 bytea_output                           | hex
 check_function_bodies                  | on
 checkpoint_completion_target           | 0.5
 checkpoint_flush_after                 | 32
 checkpoint_timeout                     | 300
 checkpoint_warning                     | 30
 client_encoding                        | UTF8
 client_min_messages                    | notice
 cluster_name                           |
 commit_delay                           | 0
 commit_siblings                        | 5
 config_file                            | /var/lib/pgsql/13/data/postgresql.conf
 constraint_exclusion                   | partition
 cpu_index_tuple_cost                   | 0.005
 cpu_operator_cost                      | 0.0025
 cpu_tuple_cost                         | 0.01
 cursor_tuple_fraction                  | 0.1
 data_checksums                         | off
 data_directory                         | /var/lib/pgsql/13/data
 data_directory_mode                    | 0700
 data_sync_retry                        | off
 DateStyle                              | ISO, MDY
 db_user_namespace                      | off
 deadlock_timeout                       | 1000
 debug_assertions                       | off
 debug_pretty_print                     | on
 debug_print_parse                      | on
 debug_print_plan                       | on
 debug_print_rewritten                  | on
 default_statistics_target              | 100
 default_table_access_method            | heap
 default_tablespace                     |
 default_text_search_config             | pg_catalog.english
 default_transaction_deferrable         | off
 default_transaction_isolation          | read committed
 default_transaction_read_only          | off
 dynamic_library_path                   | $libdir
 dynamic_shared_memory_type             | posix
 effective_cache_size                   | 524288
 effective_io_concurrency               | 1
 enable_bitmapscan                      | on
 enable_gathermerge                     | on
 enable_hashagg                         | on
 enable_hashjoin                        | on
 enable_incremental_sort                | on
 enable_indexonlyscan                   | on
 enable_indexscan                       | on
 enable_material                        | on
 enable_mergejoin                       | on
 enable_nestloop                        | on
 enable_parallel_append                 | on
 enable_parallel_hash                   | on
 enable_partition_pruning               | on
 enable_partitionwise_aggregate         | off
 enable_partitionwise_join              | off
 enable_seqscan                         | on
 enable_sort                            | on
 enable_tidscan                         | on
 escape_string_warning                  | on
 event_source                           | PostgreSQL
 exit_on_error                          | off
 external_pid_file                      |
 extra_float_digits                     | 1
 force_parallel_mode                    | off
 from_collapse_limit                    | 8
 fsync                                  | on
 full_page_writes                       | on
 geqo                                   | on
 geqo_effort                            | 5
 geqo_generations                       | 0
 geqo_pool_size                         | 0
 geqo_seed                              | 0
 geqo_selection_bias                    | 2
 geqo_threshold                         | 12
 gin_fuzzy_search_limit                 | 0
 gin_pending_list_limit                 | 4096
 hash_mem_multiplier                    | 1
 hba_file                               | /var/lib/pgsql/13/data/pg_hba.conf
 hot_standby                            | on
 hot_standby_feedback                   | off
 huge_pages                             | try
 ident_file                             | /var/lib/pgsql/13/data/pg_ident.conf
 idle_in_transaction_session_timeout    | 0
 ignore_checksum_failure                | off
 ignore_invalid_pages                   | off
 ignore_system_indexes                  | off
 integer_datetimes                      | on
 IntervalStyle                          | postgres
 jit                                    | on
 jit_above_cost                         | 100000
 jit_debugging_support                  | off
 jit_dump_bitcode                       | off
 jit_expressions                        | on
 jit_inline_above_cost                  | 500000
 jit_optimize_above_cost                | 500000
 jit_profiling_support                  | off
 jit_provider                           | llvmjit
 jit_tuple_deforming                    | on
 join_collapse_limit                    | 8
 krb_caseins_users                      | off
 krb_server_keyfile                     | FILE:/etc/sysconfig/pgsql/krb5.keytab
 lc_collate                             | en_US.UTF-8
 lc_ctype                               | en_US.UTF-8
 lc_messages                            | en_US.UTF-8
 lc_monetary                            | en_US.UTF-8
 lc_numeric                             | en_US.UTF-8
 lc_time                                | en_US.UTF-8
 listen_addresses                       | *
 lo_compat_privileges                   | off
 local_preload_libraries                |
 lock_timeout                           | 0
 log_autovacuum_min_duration            | -1
 log_checkpoints                        | on
 log_connections                        | off
 log_destination                        | csvlog
 log_directory                          | log
 log_disconnections                     | off
 log_duration                           | on
 log_error_verbosity                    | verbose
 log_executor_stats                     | off
 log_file_mode                          | 0600
 log_filename                           | postgresql-%Y-%m-%d_%H%M%S.log
 log_hostname                           | off
 log_line_prefix                        | %m procID[%p] remHost[%h] comTAG[%i] SQLstate[%e] sessID[%c] %s %v %q
 log_lock_waits                         | off
 log_min_duration_sample                | -1
 log_min_duration_statement             | -1
 log_min_error_statement                | error
 log_min_messages                       | warning
 log_parameter_max_length               | -1
 log_parameter_max_length_on_error      | 0
 log_parser_stats                       | on
 log_planner_stats                      | off
 log_replication_commands               | off
 log_rotation_age                       | 1440
 log_rotation_size                      | 204800
 log_statement                          | none
 log_statement_sample_rate              | 1
 log_statement_stats                    | off
 log_temp_files                         | -1
 log_timezone                           | Europe/Moscow
 log_transaction_sample_rate            | 0
 log_truncate_on_rotation               | on
 logging_collector                      | on
 logical_decoding_work_mem              | 65536
 maintenance_io_concurrency             | 10
 maintenance_work_mem                   | 65536
 max_connections                        | 100
 max_files_per_process                  | 1000
 max_function_args                      | 100
 max_identifier_length                  | 63
 max_index_keys                         | 32
 max_locks_per_transaction              | 64
 max_logical_replication_workers        | 4
 max_parallel_maintenance_workers       | 2
 max_parallel_workers                   | 8
 max_parallel_workers_per_gather        | 2
 max_pred_locks_per_page                | 2
 max_pred_locks_per_relation            | -2
 max_pred_locks_per_transaction         | 64
 max_prepared_transactions              | 0
 max_replication_slots                  | 10
 max_slot_wal_keep_size                 | -1
 max_stack_depth                        | 2048
 max_standby_archive_delay              | 30000
 max_standby_streaming_delay            | 30000
 max_sync_workers_per_subscription      | 2
 max_wal_senders                        | 10
 max_wal_size                           | 1024
 max_worker_processes                   | 8
 min_parallel_index_scan_size           | 64
 min_parallel_table_scan_size           | 1024
 min_wal_size                           | 80
 old_snapshot_threshold                 | -1
 operator_precedence_warning            | off
 parallel_leader_participation          | on
 parallel_setup_cost                    | 1000
 parallel_tuple_cost                    | 0.1
 password_encryption                    | scram-sha-256
 plan_cache_mode                        | auto
 port                                   | 5432
 post_auth_delay                        | 0
 pre_auth_delay                         | 0
 primary_conninfo                       |
 primary_slot_name                      |
 promote_trigger_file                   |
 quote_all_identifiers                  | off
 random_page_cost                       | 4
 recovery_end_command                   |
 recovery_min_apply_delay               | 0
 recovery_target                        |
 recovery_target_action                 | pause
 recovery_target_inclusive              | on
 recovery_target_lsn                    |
 recovery_target_name                   |
 recovery_target_time                   |
 recovery_target_timeline               | latest
 recovery_target_xid                    |
 restart_after_crash                    | on
 restore_command                        |
 row_security                           | on
 search_path                            | "$user", public
 segment_size                           | 131072
 seq_page_cost                          | 1
 server_encoding                        | UTF8
 server_version                         | 13.1
 server_version_num                     | 130001
 session_preload_libraries              |
 session_replication_role               | origin
 shared_buffers                         | 16384
 shared_memory_type                     | mmap
 shared_preload_libraries               |
 ssl                                    | off
 ssl_ca_file                            |
 ssl_cert_file                          | server.crt
 ssl_ciphers                            | HIGH:MEDIUM:+3DES:!aNULL
 ssl_crl_file                           |
 ssl_dh_params_file                     |
 ssl_ecdh_curve                         | prime256v1
 ssl_key_file                           | server.key
 ssl_library                            | OpenSSL
 ssl_max_protocol_version               |
 ssl_min_protocol_version               | TLSv1.2
 ssl_passphrase_command                 |
 ssl_passphrase_command_supports_reload | off
 ssl_prefer_server_ciphers              | on
 standard_conforming_strings            | on
 statement_timeout                      | 0
 stats_temp_directory                   | pg_stat_tmp
 superuser_reserved_connections         | 3
 synchronize_seqscans                   | on
 synchronous_commit                     | on
 synchronous_standby_names              |
 syslog_facility                        | local0
 syslog_ident                           | postgres
 syslog_sequence_numbers                | on
 syslog_split_messages                  | on
 tcp_keepalives_count                   | 0
 tcp_keepalives_idle                    | 0
 tcp_keepalives_interval                | 0
 tcp_user_timeout                       | 0
 temp_buffers                           | 1024
 temp_file_limit                        | -1
 temp_tablespaces                       |
 TimeZone                               | Europe/Moscow
 timezone_abbreviations                 | Default
 trace_notify                           | off
 trace_recovery_messages                | log
 trace_sort                             | off
 track_activities                       | on
 track_activity_query_size              | 1024
 track_commit_timestamp                 | off
 track_counts                           | on
 track_functions                        | none
 track_io_timing                        | on
 transaction_deferrable                 | off
 transaction_isolation                  | read committed
 transaction_read_only                  | off
 transform_null_equals                  | off
 unix_socket_directories                | /var/run/postgresql, /tmp
 unix_socket_group                      |
 unix_socket_permissions                | 0777
 update_process_title                   | on
 vacuum_cleanup_index_scale_factor      | 0.1
 vacuum_cost_delay                      | 0
 vacuum_cost_limit                      | 200
 vacuum_cost_page_dirty                 | 20
 vacuum_cost_page_hit                   | 1
 vacuum_cost_page_miss                  | 10
 vacuum_defer_cleanup_age               | 0
 vacuum_freeze_min_age                  | 50000000
 vacuum_freeze_table_age                | 150000000
 vacuum_multixact_freeze_min_age        | 5000000
 vacuum_multixact_freeze_table_age      | 150000000
 wal_block_size                         | 8192
 wal_buffers                            | 512
 wal_compression                        | off
 wal_consistency_checking               |
 wal_init_zero                          | on
 wal_keep_size                          | 0
 wal_level                              | replica
 wal_log_hints                          | off
 wal_receiver_create_temp_slot          | off
 wal_receiver_status_interval           | 10
 wal_receiver_timeout                   | 60000
 wal_recycle                            | on
 wal_retrieve_retry_interval            | 5000
 wal_segment_size                       | 16777216
 wal_sender_timeout                     | 60000
 wal_skip_threshold                     | 2048
 wal_sync_method                        | fdatasync
 wal_writer_delay                       | 200
 wal_writer_flush_after                 | 128
 work_mem                               | 4096
 xmlbinary                              | base64
 xmloption                              | content
 zero_damaged_pages                     | off
29 апр 21, 15:32    [22316429]     Ответить | Цитировать Сообщить модератору
 Re: В логе сервера Postgres не видно значений параметров запросов  [new]
Михаил Конопко
Member

Откуда: Москва
Сообщений: 15
Павел Лузанов,
log_duration - включен. Его надо отключить?
log_statements и log_min_duration_statements - эти параметры где включаются?

log_parameter_max_length - включен без ограничений
log_parameter_max_length_on_error - выключен, сейчас включу без ограничений
29 апр 21, 15:58    [22316440]     Ответить | Цитировать Сообщить модератору
 Re: В логе сервера Postgres не видно значений параметров запросов  [new]
Михаил Конопко
Member

Откуда: Москва
Сообщений: 15
Павел Лузанов, огромное Вам спасибо за помощь.

Значения параметров выводятся при следующих значениях параметров:
log_duration - оставил включенным.
log_statement - 'all'
log_min_duration_statement 0 - logs all statemenys
log_parameter_max_length - включен без ограничений
log_parameter_max_length_on_error - включен без ограничений
29 апр 21, 16:23    [22316452]     Ответить | Цитировать Сообщить модератору
 Re: В логе сервера Postgres не видно значений параметров запросов  [new]
Павел Лузанов
Member

Откуда:
Сообщений: 803
Михаил Конопко,

Как-то очень много у вас включено.
По идее было бы достаточно log_min_duration_statement=0

Убедитесь, что вам действительно нужные включенные:
log_parser_stats
debug_print_parse
debug_print_rewritten
debug_print_plan
log_statement - 'all'

log_parameter_max_length_on_error рекоммендуют использовать только при отладке.

А log_min_duration_statement только для журналирования долгих запросов.

Впрочем, если сервер для разработки, то может это всё и имеет смысл. Но на проде ?
29 апр 21, 16:37    [22316461]     Ответить | Цитировать Сообщить модератору
 Re: В логе сервера Postgres не видно значений параметров запросов  [new]
Михаил Конопко
Member

Откуда: Москва
Сообщений: 15
Павел Лузанов,
Для разработки, конечно.
29 апр 21, 17:34    [22316491]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить