KingbaseES的学习心得和知识总结(三)|Kingbase数据库性能调优工具sys_kwr插件的简介和使用

news2024/11/15 16:22:48

注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下:

1、KingbaseES V8产品文档首页,点击前往
2、Kingbase 文档库,点击前往
3、北京人大金仓信息技术股份有限公司 官网首页,点击前往


1、本文内容全部来源于开源社区 GitHub和以上博主的贡献,本文也免费开源(可能会存在问题,评论区等待大佬们的指正)
2、本文目的:开源共享 抛砖引玉 一起学习
3、本文不提供任何资源 不存在任何交易 与任何组织和机构无关
4、大家可以根据需要自行 复制粘贴以及作为其他个人用途,但是不允许转载 不允许商用 (写作不易,还请见谅 💖)


Kingbase数据库性能调优工具sys_kwr插件的简介和使用

  • 文章快速说明索引
  • 插件的简介和安装
    • 插件简介
    • 插件安装
    • 插件配置
      • KWR报告
      • KSH报告
      • KDDM报告
    • 插件使用
      • 自动快照
      • 手动快照
      • 生成报告



文章快速说明索引

学习目标:

目的:本专栏将会为大家介绍Kingbase的功能使用、特性分析以及相关最新内核开发等技术的分享。


学习内容:(详见目录)

1、Kingbase数据库性能调优工具sys_kwr插件的简介和使用


学习时间:

2023年06月26日 19:53:38


学习产出:

1、Kingbase数据库性能调优工具sys_kwr插件的简介和使用
2、CSDN 技术博客 1篇


插件的简介和安装

插件简介

插件sys_kwrKingbaseES的一个扩展插件。主要功能是通过周期性自动记录性能统计相关的快照,分析出KingbaseES的操作系统运行环境、数据库时间组成、等待事件和TOP SQL等性能指标,为数据库性能调优提供指导。

sys_kwrKingbase Auto Workload Repertories 的简称,可以对 KingbaseES 的负载信息自动以快照的方式进行记录和保存,并提供负载相关的性能报告。

在1.6版本中合入了 KSH 功能,KSH 不在做为单独的插件使用,创建 KWR 插件后便可以使用 KSH 功能。

  • 插件名为 sys_kwr
  • 插件版本 V1.6

插件安装

插件sys_kwr加载方式:KingbaseES数据库默认将其添加到 kingbase.conf 文件的 shared_preload_libraries 中,重启数据库时自动加载。

配置如下:

shared_preload_libraries = 'sys_kwr'
[kingbase@localhost bin]$ ./ksql -p 54321
ksql (V8.0)
Type "help" for help.

kingbase=# create extension sys_kwr ;
CREATE EXTENSION
kingbase=# \dx
                                                                    List of installed extensions
        Name         | Version |    Schema    |                                                     Description                                                     
---------------------+---------+--------------+---------------------------------------------------------------------------------------------------------------------
 dbms_ddl            | 1.0     | sys          | DBMS_DDL system package
 dbms_output         | 1.0     | sys          | DBMS_OUTPUT system package
 dbms_utility        | 1.0     | sys          | dbms_utility extension package
 kdb_cast            | 1.0     | sys          | kdb_cast extension
 kdb_license         | 1.0     | pg_catalog   | kdb_license extension
 kdb_oracle_datatype | 1.7     | sys          | kdb_oracle_datatype extension
 kdb_tinyint         | 1.0     | pg_catalog   | Create a new data type tinyint and its functions operators and indexes
 kingbase_version    | 1.0     | pg_catalog   | This is a utility that provides function related to version number,  it is used to get the Kingbase version number.
 owa_util            | 1.0     | sys          | owa_util system package
 plpgsql             | 1.0     | pg_catalog   | PL/pgSQL procedural language
 plsql               | 1.0     | pg_catalog   | PL/SQL procedural language
 src_restrict        | 1.0     | src_restrict | src restrict plugin
 sys_anon            | 1.0     | anon         | provides data masking functionality
 sys_freespacemap    | 1.2     | sys          | examine the free space map (FSM)
 sys_kwr             | 1.6     | public       | KingbaseES auto workload repository and report builder
 sys_stat_statements | 1.10    | public       | track parsing, planning and execution statistics of all SQL statements executed
 sysaudit            | 1.0     | sysaudit     | provides auditing functionality
 sysmac              | 1.0     | sysmac       | Mac for Kingbase
 xlog_record_read    | 1.0     | pg_catalog   | xlog_record_read functions
(19 rows)

kingbase=# \dx sys_kwr
                            List of installed extensions
  Name   | Version | Schema |                      Description                       
---------+---------+--------+--------------------------------------------------------
 sys_kwr | 1.6     | public | KingbaseES auto workload repository and report builder
(1 row)

kingbase=#

下面来看一下该插件所创建的数据库对象,如下:

kingbase=# \dx+ sys_kwr                    
                                                                           Objects in extension "sys_kwr"
                                                                                 Object description                                                                                 
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 function perf.bg_wait_event_htbl(jsonb,integer,integer,integer,text)
 function perf.bgwriter_stats_htbl(jsonb,integer,integer,integer,text)
 function perf.bgwriter_stats(integer,integer)
 function perf.bgwriter_stats_reset_htbl(jsonb,integer,integer,text)
 function perf.bgwriter_stats_reset(integer,integer)
 function perf.buffcache_pages()
 function perf.check_attr_exists(text,text,text)
 function perf.check_queryid_md5(bpchar,bigint,text,text,text)
 function perf.check_settings()
 function perf.check_snapid(integer,integer)
 function perf.check_stmt_all_setting(integer,integer)
 function perf.check_stmt_cnt(integer,integer,text)
 function perf.collect_bgwriter_stats(integer)
 function perf.collect_cpu_stats(integer)
 function perf.collect_database_stats(integer)
 function perf.collect_host_detail_cpu_stats(integer)
 function perf.collect_inst_event_stats(integer)
 function perf.collect_instio_stats(integer)
 function perf.collect_instlock_stats(integer)
 function perf.collect_io_stats(integer)
 function perf.collect_memory_stats(integer)
 function perf.collect_network_stats(integer)
 function perf.collect_obj_stats(integer)
 function perf.collect_process_mem_stats(integer)
 function perf.collect_queries(bpchar)
 function perf.collect_shmem_stats(integer)
 function perf.collect_sqlio_stats(integer)
 function perf.collect_sql_prof_stats(integer)
 function perf.collect_sqltime_stats(integer)
 function perf.collect_statements_all_stats(integer,oid,oid,bigint)
 function perf.collect_statements_stats(integer,integer)
 function perf.collect_wait_stats(integer)
 function perf.create_snapshot()
 function perf.database_stats_htbl(jsonb,integer,integer,integer,text)
 function perf.database_stats(integer,integer)
 function perf.database_stats_reset_htbl(jsonb,integer,integer,text)
 function perf.database_stats_reset(integer,integer)
 function perf.datafileio_stats_total(integer,integer)
 function perf.db_objs_desc_htbl(integer,integer,text)
 function perf.dbtime_bydb_htbl(jsonb,integer,integer,integer,text)
 function perf.dbtime_bymsg_htbl(jsonb,integer,integer,integer,text)
 function perf.diff_array_length(text[],integer)
 function perf.diff_coalesce(text,text)
 function perf.diff_isnumeric(text)
 function perf.drop_snapshots(integer,integer)
 function perf.eff_percent_htbl(jsonb,integer,integer,integer,text)
 function perf.fg_wait_class_htbl(jsonb,integer,integer,integer,text)
 function perf.fg_wait_event_htbl(jsonb,integer,integer,integer,text)
 function perf.fg_wait_stats(integer,integer)
 function perf.get_bg_wait_event_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_bgwriter_stats_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_database_stats_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_dbtime_bydb_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_dbtime_bymsg_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_dbtime(integer,integer)
 function perf.get_dbtime_item(integer,integer,text,boolean)
 function perf.get_eff_percent_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_elapsed_time(integer,integer)
 function perf.get_fg_wait_class_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_fg_wait_event_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_host_config_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_host_io_stats_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_instance_io_stats_diff(jsonb,integer,integer,integer,integer,integer,text)
 function perf.get_instance_lock_stats_diff(jsonb,integer,integer,integer,integer,integer,text)
 function perf.get_instance_sql_count_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_instance_top_event_stats_diff(jsonb,integer,integer,integer,integer,integer,text)
 function perf.get_inst_io_datafile_profile_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_inst_io_profile_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_load_profile_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_memory_statistics_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_settings_and_changes_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_shared_memory_stats_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_sql_list_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_time_model_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_dbcpu_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_dbtime_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_dml_tables_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_exev_calls_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_gets_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_gets_indexes_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_gets_tables_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_io_time_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_parse_time_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_plan_time_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_reads_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_reads_indexes_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_read_tables_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_seqscan_tables_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_shared_dirtied_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_shared_written_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_temp_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_time_funcs_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_wait_class_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_top_wait_event_diff(jsonb,integer,integer,integer,integer,integer)
 function perf.get_wait_time(integer,integer,text)
 function perf.host_cpu_stats_htbl(jsonb,integer,integer,integer,text)
 function perf.host_detail_cpu_stats_htbl(jsonb,integer,integer,integer,text)
 function perf.host_io_stats_htbl(jsonb,integer,integer,integer,text)
 function perf.host_memory_stats_htbl(jsonb,integer,integer,integer,text)
 function perf.host_network_stats_htbl(jsonb,integer,integer,integer,text)
 function perf.instance_event_stats_htbl(jsonb,integer,integer,integer,text)
 function perf.instance_io_stats_htbl(jsonb,integer,integer,integer,text,text)
 function perf.instance_lock_stats_htbl(jsonb,integer,integer,integer,text,text)
 function perf.instance_sql_count(jsonb,integer,integer,integer,text)
 function perf.instance_top_event_stats_htbl(jsonb,integer,integer,integer,text,text)
 function perf.inst_io_datafile_profile_htbl(jsonb,integer,integer,integer,text)
 function perf.inst_io_profile_htbl(jsonb,integer,integer,integer,text)
 function perf.is_windows()
 function perf.jsonb_replace(jsonb,jsonb)
 function perf.kddm_checkpoint_advisor(integer,integer,integer,integer,numeric)
 function perf.kddm_ckpts_stats(integer,integer)
 function perf.kddm_complete_sql_list(integer,integer)
 function perf.kddm_cpu_load_advisor(integer,integer)
 function perf.kddm_dbcpu_stats(integer,integer,integer,integer,numeric)
 function perf.kddm_dbtime_report(integer,integer,integer,integer,numeric)
 function perf.kddm_fgwait_stats(integer,integer,integer,integer,numeric)
 function perf.kddm_file_extend_advisor(integer,integer,integer,integer,numeric)
 function perf.kddm_generate_report(integer,integer)
 function perf.kddm_guc_advisor(bigint,text,bigint,bigint)
 function perf.kddm_index_advisor(integer,integer)
 function perf.kddm_inst_io_hit(integer,integer,text)
 function perf.kddm_inst_io_pct(integer,integer,text)
 function perf.kddm_io_time_report(integer,integer,integer,integer,numeric)
 function perf.kddm_io_time_stats(integer,integer)
 function perf.kddm_io_wait_pct(integer,integer)
 function perf.kddm_line(text,text,boolean)
 function perf.kddm_net_error_advisor(integer,integer)
 function perf.kddm_net_trans_advisor(integer,integer,integer)
 function perf.kddm_page_prune_advisor(integer,integer)
 function perf.kddm_print_client_title(integer,integer,text)
 function perf.kddm_print_cpu_contents(integer,integer,text)
 function perf.kddm_print_cpu_title(integer,integer,text)
 function perf.kddm_print_io_contents(integer,integer,text)
 function perf.kddm_print_io_title(integer,integer,text)
 function perf.kddm_print_lwlock_contents(integer,integer,text)
 function perf.kddm_print_lwlock_title(integer,integer,text)
 function perf.kddm_print_net_contents(integer,integer,text)
 function perf.kddm_print_report(text,text,text)
 function perf.kddm_print_wait_contents(integer,integer,text)
 function perf.kddm_print_wait_titile_by_rank(integer,integer,integer,integer,integer,integer,text)
 function perf.kddm_print_wait_title(integer,integer,text)
 function perf.kddm_print_wait_topsql(integer,integer,text,integer,integer,numeric)
 function perf.kddm_report(integer,integer)
 function perf.kddm_report_to_file(integer,integer,text)
 function perf.kddm_share_buf_advisor(integer,integer,integer,integer,numeric)
 function perf.kddm_simple_query_advisor(integer,integer)
 function perf.kddm_split_long_sql(text,integer,integer)
 function perf.kddm_sql_report(integer,integer,bigint)
 function perf.kddm_temp_buf_advisor(integer,integer,integer,integer,numeric)
 function perf.kddm_time_order(integer,integer)
 function perf.kddm_top_sql_report(integer,integer)
 function perf.kddm_top_wait_report(integer,integer)
 function perf.kddm_trans_rollback_advisor(integer,integer)
 function perf.kddm_wait_content_by_rank(integer,integer,integer,integer,integer,integer,text)
 function perf.kddm_wait_dbpct(integer,integer,text)
 function perf.kddm_wait_elapsed_pct(integer,integer,text)
 function perf.kddm_wait_event_desc(text)
 function perf.kddm_wait_rank(integer,integer,text,boolean)
 function perf.kddm_wait_topsql(integer,integer,text,integer,integer,numeric)
 function perf.kddm_wal_insert_advisor(integer,integer)
 function perf.kddm_wal_io_advisor(integer,integer,integer,integer,numeric)
 function perf.kddm_wal_sync_advisor(integer,integer,integer,integer,numeric)
 function perf.kddm_wal_write_advisor(integer,integer)
 function perf.kddm_work_mem_advisor(integer,integer,integer,integer,numeric)
 function perf.ksh_check_env()
 function perf.ksh_check_slotwidth(timestamp with time zone,timestamp with time zone,perf.ksh_data_type,integer)
 function perf.ksh_data(perf.ksh_data_type,timestamp with time zone,timestamp with time zone,timestamp with time zone,timestamp with time zone)
 function perf.ksh_db(timestamp with time zone,timestamp with time zone,boolean)
 function perf.ksh_drop_temptbl(text)
 function perf.ksh_generate_report(timestamp with time zone,integer,integer,text)
 function perf.ksh_generate_timeranges(timestamp with time zone,timestamp with time zone,integer)
 function perf.ksh_get_avg_active_session(numeric,numeric,perf.ksh_data_type)
 function perf.ksh_get_centered_msg(text,text)
 function perf.ksh_get_closest_minute(timestamp with time zone)
 function perf.ksh_get_header(text,integer[],text[])
 function perf.ksh_get_percentage(numeric,numeric)
 function perf.ksh_get_ringbuf_end()
 function perf.ksh_get_ringbuf_start()
 function perf.ksh_get_slotwidth(timestamp with time zone,timestamp with time zone,perf.ksh_data_type)
 function perf.ksh_get_timespec(timestamp with time zone,timestamp with time zone)
 function perf.ksh_get_widths(integer[],text[])
 function perf.ksh_is_relation_exist(text,text)
 function perf.ksh_jsonb_replace(jsonb,jsonb)
 function perf.ksh_jsonb_replace_ksh(jsonb,jsonb)
 function perf.ksh_mem_raw(timestamp with time zone,timestamp with time zone,integer)
 function perf.ksh_mem(timestamp with time zone,timestamp with time zone,perf.ksh_mem_op)
 function perf.ksh_nodata_wrapper(text)
 function perf.ksh_nodata_wrapper_text(text)
 function perf.ksh_openum_to_int(perf.ksh_mem_op)
 function perf.ksh_outline_query(text,integer)
 function perf.ksh_report_activity_over_time(jsonb,timestamp with time zone,timestamp with time zone,integer,perf.ksh_data_type,text)
 function perf.ksh_report_by_snapshots(integer,integer,integer,text)
 function perf.ksh_report_complete_list_of_sql_text(jsonb,text)
 function perf.ksh_report_header(jsonb,timestamp with time zone,timestamp with time zone,timestamp with time zone,timestamp with time zone,integer,integer,perf.ksh_data_type,text)
 function perf.ksh_report(timestamp with time zone,integer,integer,text)
 function perf.ksh_report_to_file_by_snapshots(integer,integer,text,text,integer)
 function perf.ksh_report_to_file(timestamp with time zone,integer,integer,text,text)
 function perf.ksh_report_top_background_event(jsonb,integer,integer,perf.ksh_data_type,text)
 function perf.ksh_report_top_blocking_sessions(jsonb,integer,integer,perf.ksh_data_type,text)
 function perf.ksh_report_top_client_id(jsonb,integer,integer,perf.ksh_data_type,text)
 function perf.ksh_report_top_databases(jsonb,integer,integer,perf.ksh_data_type,text)
 function perf.ksh_report_top_db_objects(integer,perf.ksh_data_type)
 function perf.ksh_report_top_locks(jsonb,integer,integer,perf.ksh_data_type,text)
 function perf.ksh_report_top_lwlocks(jsonb,integer,integer,perf.ksh_data_type,text)
 function perf.ksh_report_top_phase_of_execution(jsonb,integer,integer,perf.ksh_data_type,text)
 function perf.ksh_report_top_plsql_procs(jsonb,integer,integer,perf.ksh_data_type,text)
 function perf.ksh_report_top_session(jsonb,text)
 function perf.ksh_report_top_session_running_pqs(jsonb,integer,perf.ksh_data_type,text)
 function perf.ksh_report_top_sql_command_type(jsonb,integer,perf.ksh_data_type,text)
 function perf.ksh_report_top_sql_using_literals(jsonb,integer,integer,perf.ksh_data_type,text)
 function perf.ksh_report_top_sql_with_top_event(jsonb,text)
 function perf.ksh_report_top_user_event(jsonb,integer,perf.ksh_data_type,text)
 function perf.ksh_split_longsql(text)
 function perf.ksh_timer(integer)
 function perf.ksh_write_report(text,text)
 function perf.kwr_byte2mb(double precision)
 function perf.kwr_check_env()
 function perf.kwr_cpu_info()
 function perf.kwr_cpu_info_ex()
 function perf.kwr_debug()
 function perf.kwr_diff_report_html_cn(integer,integer,integer,integer,integer)
 function perf.kwr_diff_report_html(integer,integer,integer,integer,integer)
 function perf.kwr_diff_report(integer,integer,integer,integer)
 function perf.kwr_diff_report_to_file(integer,integer,integer,integer,text)
 function perf.kwr_diff_snapshots_info_htbl(jsonb,integer,integer,integer,integer,text)
 function perf.kwr_generate_diff_report(integer,integer,integer,integer)
 function perf.kwr_generate_report(integer,integer,text)
 function perf.kwr_long_string(text,integer)
 function perf.kwr_memory_info()
 function perf.kwr_os_info()
 function perf.kwr_percent(double precision,double precision)
 function perf.kwr_query_hash(text,text,text,integer)
 function perf.kwr_report_html_cn(integer,integer,integer)
 function perf.kwr_report_html(integer,integer,integer)
 function perf.kwr_report(integer,integer,text)
 function perf.kwr_report_ksh(jsonb,integer,integer,text)
 function perf.kwr_report_text_cn(integer,integer,integer)
 function perf.kwr_report_text(integer,integer,integer)
 function perf.kwr_report_to_file(integer,integer,text,text)
 function perf.kwr_round(double precision,integer)
 function perf.kwr_round_null(double precision,integer)
 function perf.kwr_rpad(text,integer)
 function perf.kwr_rpad_time(timestamp without time zone,integer)
 function perf.kwr_time(timestamp without time zone,text)
 function perf.load_profile_htbl(jsonb,integer,integer,integer,text)
 function perf.memory_statistics_htbl(jsonb,integer,integer,integer,text)
 function perf.nodata_wrapper(text)
 function perf.nodata_wrapper_text(text)
 function perf.process_memory_stats_htbl(jsonb,integer,integer,integer,text)
 function perf.reset_snapshots()
 function perf.save_diff_report_with_file_ext_name(text,text,text,integer,integer,integer,integer)
 function perf.save_report_with_ext_name(text,text,integer,integer)
 function perf.save_report_with_file_ext_name(text,text,text,integer,integer)
 function perf.save_report_with_full_path(text,text)
 function perf.server_info_htbl(jsonb,integer,integer,text)
 function perf.settings_and_changes_htbl(jsonb,integer,integer,text)
 function perf.settings_and_changes(integer,integer)
 function perf.shared_memory_stats_htbl(jsonb,integer,integer,integer,text)
 function perf.snapshot_cleanup(integer)
 function perf.snapshot_dbobj_delta(integer,integer)
 function perf.snapshots_info_htbl(jsonb,integer,integer,text)
 function perf.snapshot_timer()
 function perf.sqlio_stats_total(integer,integer)
 function perf.sql_level(bigint,integer,integer,integer,boolean,integer,integer)
 function perf.sql_list_htbl(jsonb,text)
 function perf.sql_prof_collect(integer,text)
 function perf.sql_prof_stats_1_3(integer,integer)
 function perf.sqltime_stats(integer,integer,boolean)
 function perf.statements_stats(integer,integer)
 function perf.sys_cpu_info()
 function perf.sys_cpu_memory_by_process()
 function perf.sys_cpu_stat_by_process(bigint)
 function perf.sys_cpu_stats_info()
 function perf.sys_cpu_usage_info()
 function perf.sys_disk_info()
 function perf.sys_io_analysis_info()
 function perf.sys_io_stat_byprocess(bigint)
 function perf.sys_io_stat_info()
 function perf.sys_load_avg_info()
 function perf.sys_memory_info()
 function perf.sys_mempage_stat_byprocess(bigint)
 function perf.sys_network_info()
 function perf.sys_os_info()
 function perf.sys_process_info()
 function perf.system_info_htbl(jsonb,integer,integer,text)
 function perf.text_minus(text,text)
 function perf.text_percent(text,text)
 function perf.text_plus(text,text,text)
 function perf.text_round(text,integer)
 function perf.time_model_htbl(jsonb,integer,integer,integer,text)
 function perf.top_calls_funcs_htbl(jsonb,integer,integer,integer,text)
 function perf.top_dbcpu_htbl(jsonb,integer,integer,integer,text)
 function perf.top_dbtime_htbl(jsonb,integer,integer,integer,text)
 function perf.top_dml_tables_htbl(jsonb,integer,integer,integer,text)
 function perf.top_execute_time_htbl(jsonb,integer,integer,integer,text)
 function perf.top_exev_calls_htbl(jsonb,integer,integer,integer,text)
 function perf.top_functions(integer,integer)
 function perf.top_gets_htbl(jsonb,integer,integer,integer,text)
 function perf.top_gets_indexes_htbl(jsonb,integer,integer,integer,text)
 function perf.top_gets_tables_htbl(jsonb,integer,integer,integer,text)
 function perf.top_heap_hit_tables_htbl(jsonb,integer,integer,integer,text)
 function perf.top_hit_indexes_htbl(jsonb,integer,integer,integer,text)
 function perf.top_indexes(integer,integer)
 function perf.top_io_indexes_hit(integer,integer)
 function perf.top_io_indexes(integer,integer)
 function perf.top_io_tables_hit(integer,integer)
 function perf.top_io_tables(integer,integer)
 function perf.top_io_time_htbl(jsonb,integer,integer,integer,text)
 function perf.top_local_htbl(jsonb,integer,integer,integer,text)
 function perf.top_parse_time_htbl(jsonb,integer,integer,integer,text)
 function perf.top_plan_time_htbl(jsonb,integer,integer,integer,text)
 function perf.top_reads_htbl(jsonb,integer,integer,integer,text)
 function perf.top_reads_indexes_htbl(jsonb,integer,integer,integer,text)
 function perf.top_read_tables_htbl(jsonb,integer,integer,integer,text)
 function perf.top_return_rows_htbl(jsonb,integer,integer,integer,text)
 function perf.top_seqscan_tables_htbl(jsonb,integer,integer,integer,text)
 function perf.top_shared_dirtied_htbl(jsonb,integer,integer,integer,text)
 function perf.top_shared_written_htbl(jsonb,integer,integer,integer,text)
 function perf.top_statements(integer,integer)
 function perf.top_tables(integer,integer)
 function perf.top_temp_htbl(jsonb,integer,integer,integer,text)
 function perf.top_time_funcs_htbl(jsonb,integer,integer,integer,text)
 function perf.top_wait_class_htbl(jsonb,integer,integer,integer,text)
 function perf.top_wait_event_htbl(jsonb,integer,integer,integer,text)
 function perf.unused_indexes_htbl(jsonb,integer,integer,integer,text)
 function perf.update_dbobjs(integer)
 function perf.update_settings(integer)
 function perf.wait_stats(integer,integer,boolean)
 operator perf.||(anyarray,anyarray)
 operator perf.||(anyarray,anyelement)
 operator perf.||(anyelement,anyarray)
 operator perf.||(anynonarray,text)
 operator perf.||(bit varying,bit varying)
 operator perf.||(bytea,bytea)
 operator perf.||(jsonb,jsonb)
 operator perf.||(text,anynonarray)
 operator perf.||(text,text)
 operator perf.||(tsquery,tsquery)
 operator perf.||(tsvector,tsvector)
 schema perf
 sequence perf.kwr_snapshots_snap_id_seq
 table perf.ksh_history
 table perf.ksh_statements
 table perf.kwr_index_list
 table perf.kwr_last_bgwriter
 table perf.kwr_last_database
 table perf.kwr_last_host_cpu
 table perf.kwr_last_host_io
 table perf.kwr_last_host_net
 table perf.kwr_last_index
 table perf.kwr_last_inst_event
 table perf.kwr_last_inst_io
 table perf.kwr_last_inst_lock
 table perf.kwr_last_snapshot
 table perf.kwr_last_sql_io
 table perf.kwr_last_sql_prof
 table perf.kwr_last_sql_time
 table perf.kwr_last_sql_wait
 table perf.kwr_last_table
 table perf.kwr_last_ufunc
 table perf.kwr_snap_bgwriter
 table perf.kwr_snap_database
 table perf.kwr_snap_host_cpu
 table perf.kwr_snap_host_detail_cpu
 table perf.kwr_snap_host_io
 table perf.kwr_snap_host_mem
 table perf.kwr_snap_host_net
 table perf.kwr_snap_idx_suggest
 table perf.kwr_snap_index
 table perf.kwr_snap_index_total
 table perf.kwr_snap_inst_event
 table perf.kwr_snap_inst_io
 table perf.kwr_snap_inst_lock
 table perf.kwr_snap_os_info
 table perf.kwr_snap_process_mem
 table perf.kwr_snap_server_info
 table perf.kwr_snap_settings
 table perf.kwr_snap_shmem
 table perf.kwr_snapshots
 table perf.kwr_snap_sql_all
 table perf.kwr_snap_sql_io
 table perf.kwr_snap_sql_prof
 table perf.kwr_snap_sql_stmt
 table perf.kwr_snap_sql_stmt_total
 table perf.kwr_snap_sql_time
 table perf.kwr_snap_sql_wait
 table perf.kwr_snap_table
 table perf.kwr_snap_table_total
 table perf.kwr_snap_userfunc
 table perf.kwr_snap_userfunc_total
 table perf.kwr_stmt_list
 table perf.kwr_table_list
 table perf.kwr_ufunc_list
 type perf.ksh_data_type
 type perf.ksh_mem_op
 type perf.ksh_sampling
 view dba_hist_active_sess_history
 view perf.kwr_snap_index_view
 view perf.kwr_snap_settings_view
 view perf.kwr_snap_sql_stmt_view
 view perf.kwr_snap_table_view
 view perf.kwr_snap_userfunc_view
 view perf.session_history
 view perf.sys_sql_profile
 view "v$active_session_history"
(405 rows)

kingbase=#

注:以上是sys_kwr插件所创建的数据库对象,涵盖了KWR KSH KDDM等内容。今天我们学习的重点在于插件的安装和使用,具体的描述和分析后面另起博客进行学习!


插件配置

KWR报告

KWR报告的使用和展示内容依赖于相关GUC参数的控制,如下:

-- 要想使用 KWR 的全部报告功能,建议在kingbase.conf里添加以下参数

track_sql = on
track_instance = on
track_wait_timing = on
track_counts = on
track_io_timing = on
track_functions = 'all'
sys_stat_statements.track = 'top'
sys_kwr.enable = on

以上各参数的解释,如下:

/*

track_sql: 开启统计 sql 时间,等待事件,IO ,默认为off

track_instance: 开启统计实例级IO,关键活动,锁,默认为off

track_wait_timing: 开启累积式等待事件记录等待时间的功能,默认为on

track_counts: 统计数据库活动,默认为on

track_io_timing: 开启IO计时统计功能,默认为off

track_functions: 开启函数统计功能,推荐用 'all',默认为'none'

sys_stat_statements.track: 跟踪统计SQL语句的访问,推荐用 'top',默认为'none'

sys_kwr.enable: 自动对收集到的数据生成快照并保存到kwr库里,默认为off

*/

还有一些可以直接使用默认值的参数,如下:

/*

sys_kwr.topn: kwr报告显示topn条件记录,默认20条

sys_kwr.history_days: kwr快照数据保留天数,默认8天

sys_kwr.interval: kwr自动采集快照的间隔,默认60分钟

sys_kwr.language: kwr报告使用语言,默认为中文(chinese 或 chn),可选为英文(english 或eng)

sys_stat_statements.track_parse: pg_stat_statements记录parse次数和时间,默认开启

sys_stat_statements.track_plan: pg_stat_statements记录plan次数和时间,默认开启

*/

KSH报告


KSH 以每秒采样的方式进行会话和数据收集,并将采集数据放入内存的 Ringbuf 队列中,采集的数据主要包括:会话、应用、等待事件、命令类型、QueryId等。其主要使用场景是:当前或历史某个时点,发生了什么样的异常,系统在执行/运行什么任务。


KSH 功能相关的参数在kingbase.conf中配置,如下:

shared_preload_libraries ='sys_stat_statements, sys_kwr'
track_activities = on
sys_stat_statements.max = 10000
sys_stat_statements.track =all
sys_kwr.collect_ksh = on           # default = off
sys_kwr.ringbuf_size = 200000      # default = 100000
sys_kwr.history_days = 3           # default = 8;最小 2,最大 31
sys_kwr.language = 'english'       # default = ‘chinese’

以上各参数的解释,如下:

/*

track_activities: 跟踪活动会话的等待事件、执行SQL、状态等,默认:on

sys_stat_statements.max: 设置sys_stat_statement跟踪的最大语句数,默认:5000

sys_stat_statements.track: 跟踪统计SQL语句的访问,推荐用 'top',默认为'none'

sys_kwr.collect_ksh: 启用或禁用 KSH 数据收集

sys_kwr.ringbuf_size: 设置ksh ringbuf大小

sys_kwr.history_days: 设置最大的 KSH 历史数据存储

sys_kwr.language: KSH 报告展示中文/英语信息

*/

注:采集报告需要在开启:track_activities,并需要设定 sys_kwr.collect_ksh=on 的情况下才可以查看KSH。不过开启该参数会有一定的性能损耗。


KDDM报告

KDDM 功能相关的参数在kingbase.conf中配置,如下:

kingbase=# create extension sys_qualstats ;
CREATE EXTENSION
kingbase=#

关于pg_qualstats插件的源码解析,后面我会另起一篇博客详解。其使用上可以看一下这位老哥的博客:

  • pg_qualstats,点击前往
shared_preload_libraries ='sys_stat_statements, sys_kwr, sys_qualstats'
sys_qualstats.enabled = true
sys_qualstats.sample_rate = 1
sys_stat_statements.track = 'top'
track_activities = on
track_counts = on
track_sql = on
track_wait_timing = on
track_io_timing = on
track_functions = 'all'

以上各参数的解释,如下:

/*

sys_qualstats.enabled: sys_qualstats是否启用

sys_qualstats.sample_rate: 确保所有的query都会被抓取到

sys_stat_statements.track: 跟踪统计SQL语句的访问,推荐用 'top',默认为'none'

track_activities: 跟踪活动会话的等待事件、执行SQL、状态等,默认:on

track_counts: 统计数据库活动,默认为on

track_sql: 开启统计 sql 时间,等待事件,IO ,默认为off

track_wait_timing: 开启累积式等待事件记录等待时间的功能

track_io_timing: 开启IO计时统计功能,默认为off

track_functions: 开启函数统计功能,推荐用 'all',默认为'none'

*/

插件使用

sys_kwr通过周期性自动记录性能统计相关的快照,分析出KingbaseES的操作系统运行环境、数据库时间组成、等待事件和TOP SQL等性能指标,为数据库性能调优提供指导。相关统计如下:

  1. SQL语句执行过程中产生的等待事件, IO 和执行时间
  2. Top SQL
  3. 数据库对象统计信息
  4. 数据库实例统计信息

自动快照

KingbaseES启动服务后,sys_kwr collector 后台进程后会每个小时采集一次负载信息,并保存到kwr库(test) 。如下:

在这里插入图片描述

查询快照列表,如下:

-- 注:我这里 把sys_kwr.interval改成10分钟

[kingbase@localhost bin]$ ./ksql -p 54321
ksql (V8.0)
Type "help" for help.

kingbase=# SELECT * FROM perf.kwr_snapshots;
 snap_id | snap_time | sess_count | snap_version 
---------+-----------+------------+--------------
(0 rows)

kingbase=# show sys_kwr.interval;   
 sys_kwr.interval 
------------------
 10
(1 row)

kingbase=# select now();
              now              
-------------------------------
 2023-06-26 07:32:38.576289-07
(1 row)

kingbase=# SELECT * FROM perf.kwr_snapshots;
 snap_id |       snap_time        | sess_count | snap_version 
---------+------------------------+------------+--------------
       1 | 2023-06-26 07:33:04-07 |          1 | 1.6
(1 row)

kingbase=# select now();                    
              now              
-------------------------------
 2023-06-26 07:44:24.858101-07
(1 row)

kingbase=# SELECT * FROM perf.kwr_snapshots;
 snap_id |       snap_time        | sess_count | snap_version 
---------+------------------------+------------+--------------
       1 | 2023-06-26 07:33:04-07 |          1 | 1.6
       2 | 2023-06-26 07:43:07-07 |          1 | 1.6
(2 rows)

kingbase=#

手动快照

手工快照通过SQL语句来执行,如下:

kingbase=# SELECT * FROM perf.create_snapshot();
 create_snapshot 
-----------------
               3
(1 row)

kingbase=# SELECT * FROM perf.kwr_snapshots;    
 snap_id |       snap_time        | sess_count | snap_version 
---------+------------------------+------------+--------------
       1 | 2023-06-26 07:33:04-07 |          1 | 1.6
       2 | 2023-06-26 07:43:07-07 |          1 | 1.6
       3 | 2023-06-26 07:46:41-07 |          1 | 1.6
(3 rows)

kingbase=#

生成报告

KWR报告的生成:有了负载信息的快照数据后,就可以调用以下2个函数来生成kwr报告,如下:

SELECT * FROM perf.kwr_report(start_id integer, end_id integer, format text = 'text');
SELECT * FROM perf.kwr_report_to_file(start_id integer, end_id integer, format  text, file_path text);

-- 内部接口
select * from perf.kwr_report_html_cn(integer,integer,integer);
select * from perf.kwr_report_html(integer,integer,integer);
select * from perf.kwr_report_text_cn(integer,integer,integer);
select * from perf.kwr_report_text(integer,integer,integer);

kingbase=# \df perf.kwr_report 
                                                 List of functions
 Schema |    Name    | Result data type |                        Argument data types                         | Type 
--------+------------+------------------+--------------------------------------------------------------------+------
 perf   | kwr_report | text             | start_id integer, end_id integer, format text DEFAULT 'text'::text | func
(1 row)

kingbase=# \df perf.kwr_report_to_file
                                                   List of functions
 Schema |        Name        | Result data type |                      Argument data types                      | Type 
--------+--------------------+------------------+---------------------------------------------------------------+------
 perf   | kwr_report_to_file | boolean          | start_id integer, end_id integer, format text, file_path text | func
(1 row)

kingbase=# \df perf.kwr_report_html_cn
                                           List of functions
 Schema |        Name        | Result data type |              Argument data types               | Type 
--------+--------------------+------------------+------------------------------------------------+------
 perf   | kwr_report_html_cn | text             | start_id integer, end_id integer, topn integer | func
(1 row)

kingbase=# \df perf.kwr_report_html
                                          List of functions
 Schema |      Name       | Result data type |              Argument data types               | Type 
--------+-----------------+------------------+------------------------------------------------+------
 perf   | kwr_report_html | text             | start_id integer, end_id integer, topn integer | func
(1 row)

kingbase=# \df perf.kwr_report_text_cn
                                           List of functions
 Schema |        Name        | Result data type |              Argument data types               | Type 
--------+--------------------+------------------+------------------------------------------------+------
 perf   | kwr_report_text_cn | text             | start_id integer, end_id integer, topn integer | func
(1 row)

kingbase=# \df perf.kwr_report_text
                                          List of functions
 Schema |      Name       | Result data type |              Argument data types               | Type 
--------+-----------------+------------------+------------------------------------------------+------
 perf   | kwr_report_text | text             | start_id integer, end_id integer, topn integer | func
(1 row)

kingbase=#


-- perf.kwr_report()生成报告并加报告内容自动保存到KingbaseES的data/sys_log目录下

-- perf.kwr_report_to_file()则生成报告并将内容保存指定的file_path路径下

-- 生成html报告, 如下:
-- SELECT * FROM perf.kwr_report(1,2,'html');

参数的解释说明,如下:

/*

start_id起始快照ID

end_id结束快照ID

format报告的格式,只支持'text'和'html'格式,建议使用'html'格式

file_path在服务器上保存报告文件的全路径,必须有写文件的权限

*/

KSH报告的生成:

SELECT perf.ksh_report({start_ts}, {duration}, {slot_width});
SELECT * FROM perf.ksh_report_to_file({start_ts},{duration},{slot_width},{file_path},{format});
SELECT * FROM perf.ksh_report_by_snapshots({start_snapid}, {end_snapid}, {slot_width}, {format});
SELECT * FROM perf.ksh_report_to_file_by_snapshots({start_snapid}, {end_snapid}, {file_path}, {format}, {slot_width});


kingbase=# \df perf.ksh_report        
                                                                                                                 List of functions
 Schema |    Name    | Result data type |                                                                                        Argument data types                                                                                         | Type 
--------+------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------
 perf   | ksh_report | text             | start_ts timestamp with time zone DEFAULT (CURRENT_TIMESTAMP - '0:15:00.000000'::pg_catalog.interval), duration integer DEFAULT 15, slot_width integer DEFAULT 0, format text DEFAULT 'text'::text | func
(1 row)

kingbase=# \df perf.ksh_report_to_file
                                                                                                                                     List of functions
 Schema |        Name        | Result data type |                                                                                                        Argument data types                                                                                                         | Type 
--------+--------------------+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------
 perf   | ksh_report_to_file | boolean          | start_ts timestamp with time zone DEFAULT (CURRENT_TIMESTAMP - '+00 00:15:00'::interval minute(2)), duration integer DEFAULT 15, slot_width integer DEFAULT 0, file_path text DEFAULT NULL::text, format text DEFAULT 'text'::text | func
(1 row)

kingbase=# \df perf.ksh_report_by_snapshots                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
                                                                       List of functions
 Schema |          Name           | Result data type |                                       Argument data types                                        | Type 
--------+-------------------------+------------------+--------------------------------------------------------------------------------------------------+------
 perf   | ksh_report_by_snapshots | text             | start_id integer, end_id integer, slot_width integer DEFAULT 0, format text DEFAULT 'text'::text | func
(1 row)

kingbase=# \df perf.ksh_report_to_file_by_snapshots
                                                                                   List of functions
 Schema |              Name               | Result data type |                                               Argument data types                                                | Type 
--------+---------------------------------+------------------+------------------------------------------------------------------------------------------------------------------+------
 perf   | ksh_report_to_file_by_snapshots | boolean          | start_id integer, end_id integer, file_path text, format text DEFAULT 'text'::text, slot_width integer DEFAULT 0 | func
(1 row)

kingbase=#

参数的解释说明,如下:

/*

start_ts: 报告开始时间,默认:当前时间-15分钟

duration: 报告时长,默认到15分钟,最大不超过60

slot_width: 报告最小区间,输入0时系统自动计算合适的

start_snapid: 起始快照号

end_snapid: 结束快照号

file_path: 报告生成地址,示例:’/home/username/ksh_report.html’

format: 报告生成格式,可选择 ’html’和’text’两种格式

*/

KDDM报告的生成:

SELECT * FROM perf.kddm_report(start_id integer, end_id integer);
SELECT * FROM perf.kddm_report_to_file(start_id integer, end_id integer, file_path text);

kingbase=# \df perf.kddm_report
                                 List of functions
 Schema |    Name     | Result data type |       Argument data types        | Type 
--------+-------------+------------------+----------------------------------+------
 perf   | kddm_report | text             | start_id integer, end_id integer | func
(1 row)

kingbase=# \df perf.kddm_report_to_file
                                             List of functions
 Schema |        Name         | Result data type |               Argument data types                | Type 
--------+---------------------+------------------+--------------------------------------------------+------
 perf   | kddm_report_to_file | boolean          | start_id integer, end_id integer, file_path text | func
(1 row)

kingbase=# 

参数的解释说明,如下:

/*

start_id起始快照ID

end_id结束快照ID

file_path在服务器上保存报告文件的全路径,必须有写文件的权限

*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/690342.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

单片机——时间表程序加仿真

一、程序 #include <REG52.h> #include "main.h" sbit key1P3^0; sbit key2P3^1; sbit key3P3^2; sbit key4P3^3; sbit SWP1^0; unsigned char code SEG[]{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x8E,0x86}; unsigned char i,cp,cp1,flash,key…

Python小白必看

Python学习计划&#xff1a; 1.先学习Python基础知识&#xff0c;包括&#xff1a; 变量、数据类型、运算符条件语句、循环语句函数、模块、包 2.掌握Python的常用库和框架&#xff0c;例如&#xff1a; NumPy&#xff1a;用于科学计算、数据分析等Pandas&#xff1a;用于数…

Vue表单验证,表单填写完成无法通过rules验证问题

表单校验使用的是ElementUI官网的表单校验规则&#xff0c;但是表单在填写完成后还是通不过校验&#xff0c;这就需要进行相应的检查 1.检查rules与ref&#xff0c;rules与ref的名字可以随便定义&#xff0c;但是要确保在这块写的与在data中定义的一致 2.检查<el-form-ite…

Pandas 解决保存H5文件发生异常问题

代码&#xff1a; #保存h5文件 #指定文件路径和读写模式 hdpd.HDFStore(mystock.h5,w) #将my的数据存入到hd中 hd[data]my #关闭文件 hd.close() 发生异常&#xff1a; 原因&#xff1a;缺少pytables 解决&#xff1a; 执行命令 pip install tables 安装好之后重启jupyter内核…

2023年1月至4月天猫平台美妆品类销售数据分析

如今&#xff0c;随着人们消费观念的突破&#xff0c;越来越多的人用美妆来诠释个性表达&#xff0c;美丽经济获得更多关注&#xff0c;化妆品消费理念逐渐增强&#xff0c;因此&#xff0c;美妆市场也形成了较大的规模。 根据鲸参谋电商数据显示&#xff0c;2023年1月至4月&am…

争取一文说透NuGet

一、NuGet是什么? NuGet是一个为大家所熟知的Visual Studio扩展&#xff0c;通过这个扩展&#xff0c;开发人员可以非常方便地在Visual Studio中安装或更新项目中所需要的第三方组件&#xff0c;同时也可以通过NuGet来安装一些Visual Studio的插件等。 二、官网&#xff1a;…

驱动开发:内核读写内存多级偏移

让我们继续在《内核读写内存浮点数》的基础之上做一个简单的延申&#xff0c;如何实现多级偏移读写&#xff0c;其实很简单&#xff0c;读写函数无需改变&#xff0c;只是在读写之前提前做好计算工作&#xff0c;以此来得到一个内存偏移值&#xff0c;并通过调用内存写入原函数…

Qt绘图高级编程-绘制文本

注意&#xff1a;以下代码是在paintEvent函数中使用的&#xff0c;坐标是在文本的左下角。 1、设置字体样式 /*-----------1、设置字体样式-----------*///设置画家写字的字体//字体名&#xff0c; 字体大小&#xff0c;粗体&#xff0c;是否斜体QFont font( "楷体"…

芝奇幻锋戟Z5 RGB DDR5-7200 24GB内存评测:稳上7800MHz、温度只有56度

一、前言&#xff1a;7200MHz CL36高频内存仅需1.35V电压 在DDR4年代&#xff0c;三星B-Die是当之无愧的超频王者&#xff0c;而今DDR5已然成为主流&#xff0c;大家公认的最好超频的颗粒是SK海力士A-Die。 但并不是每一款采用了海力士A-Die颗粒的内存条都会有强悍的超频能力&a…

B+数的设计步骤

1.节点的结构&#xff08;如下图&#xff09; &#xff08;1&#xff09;键值对--key是标识&#xff1b;value是存储的具体数据 &#xff08;2&#xff09;节点的子节点--存储的是具体的子节点 &#xff08;3&#xff09;节点的后节点--标记后一个节点 &#xff08;4&#xff0…

9 MFC CFileDialog

// SystemWndDlg.cpp: 实现文件 //#include "pch.h" #include "framework.h" #include "SystemWnd.h" #include "SystemWndDlg.h" #include "afxdialogex.h"#ifdef _DEBUG #define new DEBUG_NEW #endif// CSystemWndDlg 对…

git提交忽略target文件

背景 项目如果没有设置.ignore文件&#xff0c;则我们的idea待提交区域有好多红色的新增的target文件、.iml文件等。 解决 本来未忽略前如下&#xff1a; 在.ignore文件中新增如下命令 #忽略所有.svn目录 .svn/ #忽略所有target目录 target/ #忽略所有.idea目录 .idea/ #…

C#,保持亮度的动态直方图均衡化(Brightness Preserving Dynamic Histogram Equalization:BPDHE)源代码

图像增强的主要目的是显示隐藏的图像细节&#xff0c;或者用新的动态范围增加图像对比度。直方图均衡&#xff08;HE&#xff09;是用于图像对比度增强的最流行的技术之一&#xff0c;因为HE在计算上快速且易于实现。HE通过基于输入灰度级的概率分布重新映射图像的灰度级来执行…

学生使用的台灯该怎么选择?学生台灯应该这样选

随着时代快速发展&#xff0c;目前我国近视人数达到了7亿&#xff0c;呈现低龄化趋势&#xff0c;儿童及青少年人数占了53.8%。而且现在的学生学业负担都很重&#xff0c;每个家长都不希望自己的孩子近视或加深近视了&#xff0c;都会想尽一切办法保护视力。而护眼台灯就成了家…

光伏储能电能管理系统解决方案蓄电池管理

概述 在我国新型电力系统中&#xff0c;新能源装机容量逐年提高&#xff0c;但是新能源比如光伏发电、风力发电是不稳定的能源&#xff0c;所以要维持电网稳定&#xff0c;促进新能源发电的消纳&#xff0c;储能将成为至关重要的一环&#xff0c;是分布式光伏、风电等新能源消…

怎么用ai作图?简单几步教会你ai绘画

当我和我的朋友们闲聊的时候&#xff0c;一个话题引起了我们的兴趣——更新社交媒体头像。其中有一个朋友提出&#xff0c;想要制作一个与真人无异、美观大方的头像&#xff0c;但是却不知道该如何下手。于是乎&#xff0c;我们开始讨论ai绘画头像软件。大家都纷纷表示听说过&a…

基于Java+SpringBoot+vue的实验室管理系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

cubemx hal stm32 atgm336h GPS 北斗 定位 模块 驱动代码

代码部分 atgm336h.c #include "atgm336h.h" #include "stdio.h" #include "string.h"char rxdatabufer; u16 point1 0;_SaveData Save_Data; LatitudeAndLongitude_s g_LatAndLongData {.E_W 0,.N_S 0,.latitude 0.0,.longitude 0.0 };…

Docker网络架构三剑客CNM,Libnetwork和Driver

Docker网络架构主要由三部分组成&#xff1a;CNM&#xff0c;Libnetwork和Driver。 1.CNM CNM&#xff08;Container Network Model&#xff09;是一种网络模型&#xff0c;用于定义容器的网络架构和实现容器之间的通信。 这其中也有三要素&#xff1a; 沙盒&#xff1a;Sand…

基于matlab使用无限阵列分析对大型阵列中的互耦进行建模(附源码)

一、前言 此示例使用无限数组分析对大型有限数组进行建模。晶胞上的无限阵列分析揭示了特定频率下的扫描阻抗行为。此信息与隔离元件图案和阻抗的知识一起使用&#xff0c;以计算扫描元件图案。然后&#xff0c;使用数组中的每个元素都具有相同扫描元素模式的假设对大型有限数组…