RE: Big Performance drop of Exceptions in UDFs between V11.2 and 13.4

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>Sure, there's no question that message translation will have *some* cost.
>But on my machine it is an incremental tens-of-percent kind of cost,
>and that is the result you're getting as well.  So it's not very clear
>where these factor-of-several-hundred differences are coming from.
>A hypothesis that has not yet come up, may be some defect in the code generation, 
>by the previous msvc compiler used, because in all my tests I always use the latest version, 
>which has several corrections in the code generation part.

------------------------------------------------------------------------------------------------------------------------

Hello all,

I don't think this reproduces the issue I experience. I saw a difference of around 500x! What you see is 5x, which according to Tom would be expected for an execution path involving exceptions. And NLS should have an impact as well since more work happens. From the numbers you published, I see 10-15% change which again would be expected?

I cannot think of anything that would be specific to me with regards to this scenario given that I have tried it in quite a few environments from plain stock installs. Until one of you is able to reproduce this, you may be chasing other issues. 

Is it possible that the client I am using or the way I am creating the test database might affect this scenario? I use DBeaver and use the default settings to create the database:
- default encoding: UTF8
- collate: English_United States.1252
- ctype: English_United States.1252
- default tablespace: pg_default

Settings:
Name	Value	Unit
allow_system_table_mods	off	[NULL]
application_name	DBeaver 21.1.3 - Main <postgres>	[NULL]
archive_cleanup_command		[NULL]
archive_command	(disabled)	[NULL]
archive_mode	off	[NULL]
archive_timeout	0	s
array_nulls	on	[NULL]
authentication_timeout	60	s
autovacuum	on	[NULL]
autovacuum_analyze_scale_factor	0.1	[NULL]
autovacuum_analyze_threshold	50	[NULL]
autovacuum_freeze_max_age	200000000	[NULL]
autovacuum_max_workers	3	[NULL]
autovacuum_multixact_freeze_max_age	400000000	[NULL]
autovacuum_naptime	60	s
autovacuum_vacuum_cost_delay	2	ms
autovacuum_vacuum_cost_limit	-1	[NULL]
autovacuum_vacuum_insert_scale_factor	0.2	[NULL]
autovacuum_vacuum_insert_threshold	1000	[NULL]
autovacuum_vacuum_scale_factor	0.2	[NULL]
autovacuum_vacuum_threshold	50	[NULL]
autovacuum_work_mem	-1	kB
backend_flush_after	0	8kB
backslash_quote	safe_encoding	[NULL]
backtrace_functions		[NULL]
bgwriter_delay	200	ms
bgwriter_flush_after	0	8kB
bgwriter_lru_maxpages	100	[NULL]
bgwriter_lru_multiplier	2	[NULL]
block_size	8192	[NULL]
bonjour	off	[NULL]
bonjour_name		[NULL]
bytea_output	hex	[NULL]
check_function_bodies	on	[NULL]
checkpoint_completion_target	0.5	[NULL]
checkpoint_flush_after	0	8kB
checkpoint_timeout	300	s
checkpoint_warning	30	s
client_encoding	UTF8	[NULL]
client_min_messages	notice	[NULL]
cluster_name		[NULL]
commit_delay	0	[NULL]
commit_siblings	5	[NULL]
config_file	C:/Program Files/PostgreSQL/13/data/postgresql.conf	[NULL]
constraint_exclusion	partition	[NULL]
cpu_index_tuple_cost	0.005	[NULL]
cpu_operator_cost	0.0025	[NULL]
cpu_tuple_cost	0.01	[NULL]
cursor_tuple_fraction	0.1	[NULL]
data_checksums	off	[NULL]
data_directory	C:/Program Files/PostgreSQL/13/data	[NULL]
data_directory_mode	700	[NULL]
data_sync_retry	off	[NULL]
DateStyle	ISO, YMD	[NULL]
db_user_namespace	off	[NULL]
deadlock_timeout	1000	ms
debug_assertions	off	[NULL]
debug_pretty_print	on	[NULL]
debug_print_parse	off	[NULL]
debug_print_plan	off	[NULL]
debug_print_rewritten	off	[NULL]
default_statistics_target	100	[NULL]
default_table_access_method	heap	[NULL]
default_tablespace		[NULL]
default_text_search_config	pg_catalog.english	[NULL]
default_transaction_deferrable	off	[NULL]
default_transaction_isolation	read committed	[NULL]
default_transaction_read_only	off	[NULL]
dynamic_library_path	$libdir	[NULL]
dynamic_shared_memory_type	windows	[NULL]
effective_cache_size	524288	8kB
effective_io_concurrency	0	[NULL]
enable_bitmapscan	on	[NULL]
enable_gathermerge	on	[NULL]
enable_hashagg	on	[NULL]
enable_hashjoin	on	[NULL]
enable_incremental_sort	on	[NULL]
enable_indexonlyscan	on	[NULL]
enable_indexscan	on	[NULL]
enable_material	on	[NULL]
enable_mergejoin	on	[NULL]
enable_nestloop	on	[NULL]
enable_parallel_append	on	[NULL]
enable_parallel_hash	on	[NULL]
enable_partition_pruning	on	[NULL]
enable_partitionwise_aggregate	off	[NULL]
enable_partitionwise_join	off	[NULL]
enable_seqscan	on	[NULL]
enable_sort	on	[NULL]
enable_tidscan	on	[NULL]
escape_string_warning	on	[NULL]
event_source	PostgreSQL	[NULL]
exit_on_error	off	[NULL]
external_pid_file		[NULL]
extra_float_digits	3	[NULL]
force_parallel_mode	off	[NULL]
from_collapse_limit	8	[NULL]
fsync	on	[NULL]
full_page_writes	on	[NULL]
geqo	on	[NULL]
geqo_effort	5	[NULL]
geqo_generations	0	[NULL]
geqo_pool_size	0	[NULL]
geqo_seed	0	[NULL]
geqo_selection_bias	2	[NULL]
geqo_threshold	12	[NULL]
gin_fuzzy_search_limit	0	[NULL]
gin_pending_list_limit	4096	kB
hash_mem_multiplier	1	[NULL]
hba_file	C:/Program Files/PostgreSQL/13/data/pg_hba.conf	[NULL]
hot_standby	on	[NULL]
hot_standby_feedback	off	[NULL]
huge_pages	try	[NULL]
ident_file	C:/Program Files/PostgreSQL/13/data/pg_ident.conf	[NULL]
idle_in_transaction_session_timeout	0	ms
ignore_checksum_failure	off	[NULL]
ignore_invalid_pages	off	[NULL]
ignore_system_indexes	off	[NULL]
integer_datetimes	on	[NULL]
IntervalStyle	postgres	[NULL]
jit	off	[NULL]
jit_above_cost	100000	[NULL]
jit_debugging_support	off	[NULL]
jit_dump_bitcode	off	[NULL]
jit_expressions	on	[NULL]
jit_inline_above_cost	500000	[NULL]
jit_optimize_above_cost	500000	[NULL]
jit_profiling_support	off	[NULL]
jit_provider	llvmjit	[NULL]
jit_tuple_deforming	on	[NULL]
join_collapse_limit	8	[NULL]
krb_caseins_users	off	[NULL]
krb_server_keyfile		[NULL]
lc_collate	English_United States.1252	[NULL]
lc_ctype	English_United States.1252	[NULL]
lc_messages	English_United States.1252	[NULL]
lc_monetary	English_United States.1252	[NULL]
lc_numeric	English_United States.1252	[NULL]
lc_time	English_United States.1252	[NULL]
listen_addresses	*	[NULL]
lo_compat_privileges	off	[NULL]
local_preload_libraries		[NULL]
lock_timeout	0	ms
log_autovacuum_min_duration	-1	ms
log_checkpoints	off	[NULL]
log_connections	off	[NULL]
log_destination	stderr	[NULL]
log_directory	log	[NULL]
log_disconnections	off	[NULL]
log_duration	off	[NULL]
log_error_verbosity	default	[NULL]
log_executor_stats	off	[NULL]
log_file_mode	640	[NULL]
log_filename	postgresql-%Y-%m-%d_%H%M%S.log	[NULL]
log_hostname	off	[NULL]
log_line_prefix	%m [%p] 	[NULL]
log_lock_waits	off	[NULL]
log_min_duration_sample	-1	ms
log_min_duration_statement	-1	ms
log_min_error_statement	error	[NULL]
log_min_messages	warning	[NULL]
log_parameter_max_length	-1	B
log_parameter_max_length_on_error	0	B
log_parser_stats	off	[NULL]
log_planner_stats	off	[NULL]
log_replication_commands	off	[NULL]
log_rotation_age	1440	min
log_rotation_size	10240	kB
log_statement	none	[NULL]
log_statement_sample_rate	1	[NULL]
log_statement_stats	off	[NULL]
log_temp_files	-1	kB
log_timezone	US/Eastern	[NULL]
log_transaction_sample_rate	0	[NULL]
log_truncate_on_rotation	off	[NULL]
logging_collector	on	[NULL]
logical_decoding_work_mem	65536	kB
maintenance_io_concurrency	0	[NULL]
maintenance_work_mem	65536	kB
max_connections	100	[NULL]
max_files_per_process	1000	[NULL]
max_function_args	100	[NULL]
max_identifier_length	63	[NULL]
max_index_keys	32	[NULL]
max_locks_per_transaction	64	[NULL]
max_logical_replication_workers	4	[NULL]
max_parallel_maintenance_workers	2	[NULL]
max_parallel_workers	8	[NULL]
max_parallel_workers_per_gather	2	[NULL]
max_pred_locks_per_page	2	[NULL]
max_pred_locks_per_relation	-2	[NULL]
max_pred_locks_per_transaction	64	[NULL]
max_prepared_transactions	0	[NULL]
max_replication_slots	10	[NULL]
max_slot_wal_keep_size	-1	MB
max_stack_depth	2048	kB
max_standby_archive_delay	30000	ms
max_standby_streaming_delay	30000	ms
max_sync_workers_per_subscription	2	[NULL]
max_wal_senders	10	[NULL]
max_wal_size	1024	MB
max_worker_processes	8	[NULL]
min_parallel_index_scan_size	64	8kB
min_parallel_table_scan_size	1024	8kB
min_wal_size	80	MB
old_snapshot_threshold	-1	min
operator_precedence_warning	off	[NULL]
parallel_leader_participation	on	[NULL]
parallel_setup_cost	1000	[NULL]
parallel_tuple_cost	0.1	[NULL]
password_encryption	scram-sha-256	[NULL]
plan_cache_mode	auto	[NULL]
port	5433	[NULL]
post_auth_delay	0	s
pre_auth_delay	0	s
primary_conninfo		[NULL]
primary_slot_name		[NULL]
promote_trigger_file		[NULL]
quote_all_identifiers	off	[NULL]
random_page_cost	4	[NULL]
recovery_end_command		[NULL]
recovery_min_apply_delay	0	ms
recovery_target		[NULL]
recovery_target_action	pause	[NULL]
recovery_target_inclusive	on	[NULL]
recovery_target_lsn		[NULL]
recovery_target_name		[NULL]
recovery_target_time		[NULL]
recovery_target_timeline	latest	[NULL]
recovery_target_xid		[NULL]
restart_after_crash	on	[NULL]
restore_command		[NULL]
row_security	on	[NULL]
search_path	$user, public	[NULL]
segment_size	131072	8kB
seq_page_cost	1	[NULL]
server_encoding	UTF8	[NULL]
server_version	13.4	[NULL]
server_version_num	130004	[NULL]
session_preload_libraries		[NULL]
session_replication_role	origin	[NULL]
shared_buffers	16384	8kB
shared_memory_type	windows	[NULL]
shared_preload_libraries		[NULL]
ssl	off	[NULL]
ssl_ca_file		[NULL]
ssl_cert_file	server.crt	[NULL]
ssl_ciphers	HIGH:MEDIUM:+3DES:!aNULL	[NULL]
ssl_crl_file		[NULL]
ssl_dh_params_file		[NULL]
ssl_ecdh_curve	prime256v1	[NULL]
ssl_key_file	server.key	[NULL]
ssl_library	OpenSSL	[NULL]
ssl_max_protocol_version		[NULL]
ssl_min_protocol_version	TLSv1.2	[NULL]
ssl_passphrase_command		[NULL]
ssl_passphrase_command_supports_reload	off	[NULL]
ssl_prefer_server_ciphers	on	[NULL]
standard_conforming_strings	on	[NULL]
statement_timeout	0	ms
stats_temp_directory	pg_stat_tmp	[NULL]
superuser_reserved_connections	3	[NULL]
synchronize_seqscans	on	[NULL]
synchronous_commit	on	[NULL]
synchronous_standby_names		[NULL]
syslog_facility	none	[NULL]
syslog_ident	postgres	[NULL]
syslog_sequence_numbers	on	[NULL]
syslog_split_messages	on	[NULL]
tcp_keepalives_count	0	[NULL]
tcp_keepalives_idle	-1	s
tcp_keepalives_interval	-1	s
tcp_user_timeout	0	ms
temp_buffers	1024	8kB
temp_file_limit	-1	kB
temp_tablespaces		[NULL]
TimeZone	America/New_York	[NULL]
timezone_abbreviations	Default	[NULL]
trace_notify	off	[NULL]
trace_recovery_messages	log	[NULL]
trace_sort	off	[NULL]
track_activities	on	[NULL]
track_activity_query_size	1024	B
track_commit_timestamp	off	[NULL]
track_counts	on	[NULL]
track_functions	none	[NULL]
track_io_timing	off	[NULL]
transaction_deferrable	off	[NULL]
transaction_isolation	read committed	[NULL]
transaction_read_only	off	[NULL]
transform_null_equals	off	[NULL]
unix_socket_directories		[NULL]
unix_socket_group		[NULL]
unix_socket_permissions	777	[NULL]
update_process_title	off	[NULL]
vacuum_cleanup_index_scale_factor	0.1	[NULL]
vacuum_cost_delay	0	ms
vacuum_cost_limit	200	[NULL]
vacuum_cost_page_dirty	20	[NULL]
vacuum_cost_page_hit	1	[NULL]
vacuum_cost_page_miss	10	[NULL]
vacuum_defer_cleanup_age	0	[NULL]
vacuum_freeze_min_age	50000000	[NULL]
vacuum_freeze_table_age	150000000	[NULL]
vacuum_multixact_freeze_min_age	5000000	[NULL]
vacuum_multixact_freeze_table_age	150000000	[NULL]
wal_block_size	8192	[NULL]
wal_buffers	512	8kB
wal_compression	off	[NULL]
wal_consistency_checking		[NULL]
wal_init_zero	on	[NULL]
wal_keep_size	0	MB
wal_level	replica	[NULL]
wal_log_hints	off	[NULL]
wal_receiver_create_temp_slot	off	[NULL]
wal_receiver_status_interval	10	s
wal_receiver_timeout	60000	ms
wal_recycle	on	[NULL]
wal_retrieve_retry_interval	5000	ms
wal_segment_size	16777216	B
wal_sender_timeout	60000	ms
wal_skip_threshold	2048	kB
wal_sync_method	open_datasync	[NULL]
wal_writer_delay	200	ms
wal_writer_flush_after	128	8kB
work_mem	4096	kB
xmlbinary	base64	[NULL]
xmloption	content	[NULL]
zero_damaged_pages	off	[NULL]



Thank you,
Laurent.






[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux