Files
2024-01-26 14:52:22 +08:00

221 lines
10 KiB
Python

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
#############################################################################
# Copyright (c) 2023 Huawei Technologies Co.,Ltd.
#
# openGauss is licensed under Mulan PSL v2.
# You can use this software according to the terms
# and conditions of the Mulan PSL v2.
# You may obtain a copy of Mulan PSL v2 at:
#
# http://license.coscl.org.cn/MulanPSL2
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# ----------------------------------------------------------------------------
# Description : gs_perfconfg is a utility to optimize system and database configure about openGauss
#############################################################################
from impl.perf_config.basic.guc import GucMap, GUCTuneGroup
class DoubleDbReplicationGUC(GUCTuneGroup):
def __init__(self):
super(DoubleDbReplicationGUC, self).__init__()
self.RepOriginId = self.bind('RepOriginId')
def calculate(self):
pass
class AiGUC(GUCTuneGroup):
def __init__(self):
super(AiGUC, self).__init__()
self.db4ai_snapshot_mode = self.bind('db4ai_snapshot_mode')
self.db4ai_snapshot_version_delimiter = self.bind('db4ai_snapshot_version_delimiter')
self.db4ai_snapshot_version_separator = self.bind('db4ai_snapshot_version_separator')
self.enable_ai_stats = self.bind('enable_ai_stats')
self.enable_cachedplan_mgr = self.bind('enable_cachedplan_mgr')
def calculate(self):
pass
class DcfGUC(GUCTuneGroup):
def __init__(self):
super(DcfGUC, self).__init__()
self.enable_dcf = self.bind('enable_dcf')
self.dcf_ssl = self.bind('dcf_ssl')
self.dcf_config = self.bind('dcf_config')
self.dcf_data_path = self.bind('dcf_data_path')
self.dcf_log_path = self.bind('dcf_log_path')
self.dcf_node_id = self.bind('dcf_node_id')
self.dcf_max_workers = self.bind('dcf_max_workers')
self.dcf_truncate_threshold = self.bind('dcf_truncate_threshold')
self.dcf_election_timeout = self.bind('dcf_election_timeout')
self.dcf_enable_auto_election_priority = self.bind('dcf_enable_auto_election_priority')
self.dcf_election_switch_threshold = self.bind('dcf_election_switch_threshold')
self.dcf_run_mode = self.bind('dcf_run_mode')
self.dcf_log_level = self.bind('dcf_log_level')
self.dcf_log_backup_file_count = self.bind('dcf_log_backup_file_count')
self.dcf_max_log_file_size = self.bind('dcf_max_log_file_size')
self.dcf_socket_timeout = self.bind('dcf_socket_timeout')
self.dcf_connect_timeout = self.bind('dcf_connect_timeout')
self.dcf_mec_fragment_size = self.bind('dcf_mec_fragment_size')
self.dcf_stg_pool_max_size = self.bind('dcf_stg_pool_max_size')
self.dcf_stg_pool_init_size = self.bind('dcf_stg_pool_init_size')
self.dcf_mec_pool_max_size = self.bind('dcf_mec_pool_max_size')
self.dcf_flow_control_disk_rawait_threshold = self.bind('dcf_flow_control_disk_rawait_threshold')
self.dcf_flow_control_net_queue_message_num_threshold = self.bind('dcf_flow_control_net_queue_message_num_threshold')
self.dcf_flow_control_cpu_threshold = self.bind('dcf_flow_control_cpu_threshold')
self.dcf_mec_batch_size = self.bind('dcf_mec_batch_size')
self.dcf_mem_pool_max_size = self.bind('dcf_mem_pool_max_size')
self.dcf_mem_pool_init_size = self.bind('dcf_mem_pool_init_size')
self.dcf_compress_algorithm = self.bind('dcf_compress_algorithm')
self.dcf_compress_level = self.bind('dcf_compress_level')
self.dcf_mec_channel_num = self.bind('dcf_mec_channel_num')
self.dcf_rep_append_thread_num = self.bind('dcf_rep_append_thread_num')
self.dcf_mec_agent_thread_num = self.bind('dcf_mec_agent_thread_num')
self.dcf_mec_reactor_thread_num = self.bind('dcf_mec_reactor_thread_num')
self.dcf_log_file_permission = self.bind('dcf_log_file_permission')
self.dcf_log_path_permission = self.bind('dcf_log_path_permission')
self.dcf_majority_groups = self.bind('dcf_majority_groups')
def calculate(self):
self.enable_dcf.turn_off()
class NvmGUC(GUCTuneGroup):
def __init__(self):
super(NvmGUC, self).__init__()
self.enable_nvm = self.bind('enable_nvm')
self.nvm_buffers = self.bind('nvm_buffers')
self.nvm_file_path = self.bind('nvm_file_path')
self.bypass_nvm = self.bind('bypass_nvm')
self.bypass_dram = self.bind('bypass_dram')
def calculate(self):
self.enable_nvm.turn_off()
class FaultToleranceGUC(GUCTuneGroup):
def __init__(self):
super(FaultToleranceGUC, self).__init__()
self.exit_on_error = self.bind('exit_on_error')
self.restart_after_crash = self.bind('restart_after_crash')
self.omit_encoding_error = self.bind('omit_encoding_error')
self.cn_send_buffer_size = self.bind('cn_send_buffer_size')
self.max_cn_temp_file_size = self.bind('max_cn_temp_file_size')
self.retry_ecode_list = self.bind('retry_ecode_list')
self.data_sync_retry = self.bind('data_sync_retry')
self.remote_read_mode = self.bind('remote_read_mode')
def calculate(self):
pass
class HyperLogLogGUC(GUCTuneGroup):
def __init__(self):
super(HyperLogLogGUC, self).__init__()
self.hll_default_log2m = self.bind('hll_default_log2m')
self.hll_default_log2explicit = self.bind('hll_default_log2explicit')
self.hll_default_log2sparse = self.bind('hll_default_log2sparse')
self.hll_duplicate_check = self.bind('hll_duplicate_check')
def calculate(self):
pass
class StandbyIUDGuc(GUCTuneGroup):
def __init__(self):
super(StandbyIUDGuc, self).__init__()
self.enable_remote_excute = self.bind('enable_remote_excute')
def calculate(self):
pass
class DevelopOptionGUC(GUCTuneGroup):
def __init__(self):
super(DevelopOptionGUC, self).__init__()
self.allow_system_table_mods = self.bind('allow_system_table_mods')
self.debug_assertions = self.bind('debug_assertions')
self.ignore_checksum_failure = self.bind('ignore_checksum_failure')
self.ignore_system_indexes = self.bind('ignore_system_indexes')
self.post_auth_delay = self.bind('post_auth_delay')
self.pre_auth_delay = self.bind('pre_auth_delay')
self.trace_notify = self.bind('trace_notify')
self.trace_recovery_messages = self.bind('trace_recovery_messages')
self.trace_sort = self.bind('trace_sort')
self.zero_damaged_pages = self.bind('zero_damaged_pages')
self.remotetype = self.bind('remotetype')
self.max_user_defined_exception = self.bind('max_user_defined_exception')
self.enable_fast_numeric = self.bind('enable_fast_numeric')
self.enable_compress_spill = self.bind('enable_compress_spill')
self.resource_track_log = self.bind('resource_track_log')
self.show_acce_estimate_detail = self.bind('show_acce_estimate_detail')
self.support_batch_bind = self.bind('support_batch_bind')
self.log_pagewriter = self.bind('log_pagewriter')
self.enable_csqual_pushdown = self.bind('enable_csqual_pushdown')
self.string_hash_compatible = self.bind('string_hash_compatible')
self.pldebugger_timeout = self.bind('pldebugger_timeout')
self.plsql_show_all_error = self.bind('plsql_show_all_error')
def calculate(self):
pass
class UndoGUC(GUCTuneGroup):
def __init__(self):
super(UndoGUC, self).__init__()
self.undo_space_limit_size = self.bind('undo_space_limit_size')
self.undo_limit_size_per_transaction = self.bind('undo_limit_size_per_transaction')
self.max_undo_workers = self.bind('max_undo_workers')
self.enable_recyclebin = self.bind('enable_recyclebin')
self.recyclebin_retention_time = self.bind('recyclebin_retention_time')
self.version_retention_age = self.bind('version_retention_age')
self.undo_retention_time = self.bind('undo_retention_time')
def calculate(self):
pass
class OtherDefaultGUC(GUCTuneGroup):
def __init__(self):
super(OtherDefaultGUC, self).__init__()
self.dynamic_library_path = self.bind('dynamic_library_path')
self.gin_fuzzy_search_limit = self.bind('gin_fuzzy_search_limit')
self.local_preload_libraries = self.bind('local_preload_libraries')
def calculate(self):
pass
class OtherOptionsGUC(GUCTuneGroup):
def __init__(self):
super(OtherOptionsGUC, self).__init__()
self.reserve_space_for_nullable_atts = self.bind('reserve_space_for_nullable_atts')
self.server_version = self.bind('server_version')
self.server_version_num = self.bind('server_version_num')
self.block_size = self.bind('block_size')
self.segment_size = self.bind('segment_size')
self.max_index_keys = self.bind('max_index_keys')
self.integer_datetimes = self.bind('integer_datetimes')
self.max_identifier_length = self.bind('max_identifier_length')
self.server_encoding = self.bind('server_encoding')
self.enable_upgrade_merge_lock_mode = self.bind('enable_upgrade_merge_lock_mode')
self.transparent_encrypted_string = self.bind('transparent_encrypted_string')
self.transparent_encrypt_kms_url = self.bind('transparent_encrypt_kms_url')
self.transparent_encrypt_kms_region = self.bind('transparent_encrypt_kms_region')
self.basebackup_timeout = self.bind('basebackup_timeout')
self.datanode_heartbeat_interval = self.bind('datanode_heartbeat_interval')
self.max_concurrent_autonomous_transactions = self.bind('max_concurrent_autonomous_transactions')
self.sql_ignore_strategy = self.bind('sql_ignore_strategy')
def calculate(self):
pass