【GreatSQL优化器-13】直方图

科技中介服务机构如何利用数智工具提升服务效率?.docx 科技中介服务机构如何利用数智工具提升服务效率? 立即下载

【GreatSQL优化器-13】直方图

一、直方图介绍

GreatSQL的优化器负责将SQL查询转换为尽可能高效的执行计划,但因为数据环境不断变化有可能导致优化器对查询数据了解不够充足,可能无法生成最优的执行计划进而影响查询效率,因此推出了直方图(histogram)功能来解决该问题。

直方图用于统计字段值的分布情况,向优化器提供统计信息。利用直方图,可以对一张表的一列数据做分布统计,估算WHERE条件中过滤字段的选择率,从而帮助优化器更准确地估计查询过程中的行数,选择更高效的查询计划。

直方图以灵活的JSON的格式存储。ANALYZE TABLE会基于表大小自动判断是否要进行取样操作。

ANALYZE TABLE也会基于表中列的数据分布情况以及bucket的数量来决定是否要建立等宽直方图(singleton)还是等高直方图(equi-height)。

下面用一个简单的例子来说明直方图是什么。

greatsql> CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 INT,date1 DATETIME);
greatsql> INSERT INTO t1 VALUES (1,10,'2021-03-25 16:44:00.123456'),(2,1,'2022-03-26 16:44:00.123456'),(3,4,'2023-03-27 16:44:00.123456'),(5,5,'2024-03-25 16:44:00.123456'),(7,null,'2020-03-25 16:44:00.123456'),(8,10,'2020-10-25 16:44:00.123456'),(11,16,'2023-03-25 16:44:00.123456');
greatsql> CREATE TABLE t2 (cc1 INT PRIMARY KEY, cc2 INT);
greatsql> INSERT INTO t2 VALUES (1,3),(2,1),(3,2),(4,3),(5,15);
greatsql> CREATE TABLE t3 (ccc1 INT, ccc2 varchar(100));
greatsql> INSERT INTO t3 VALUES (1,'aa1'),(2,'bb1'),(3,'cc1'),(4,'dd1'),(null,'ee');
greatsql> CREATE INDEX idx1 ON t1(c2);
greatsql> CREATE INDEX idx2 ON t1(c2,date1);
greatsql> CREATE INDEX idx2_1 ON t2(cc2);
greatsql> CREATE INDEX idx3_1 ON t3(ccc1);

系统自动创建buckets:
greatsql> ANALYZE TABLE t1 UPDATE HISTOGRAM ON c2,date1 WITH 3 BUCKETS;
greatsql> SELECT json_pretty(histogram)result from information_schema.column_statistics where table_name = 't1';
| {
  "buckets": [
    [
      1, 最小值
      5, 最大值
      0.42857142857142855, 频率
      3 key个数
    ],
    [
      10,
      10,
      0.7142857142857143,
      1
    ],
    [
      16,
      16,
      0.8571428571428571,
      1
    ]
  ],
  "data-type": "int",
  "null-values": 0.14285714285714285,
  "collation-id": 8,
  "last-updated": "2024-10-22 08:38:48.858099",
  "sampling-rate": 1.0,
  "histogram-type": "equi-height",
  "number-of-buckets-specified": 3
}                                                                                                                                     |
| {
  "buckets": [
    [
      "2020-03-25 16:44:00.000000",
      "2021-03-25 16:44:00.000000",
      0.42857142857142855,
      3
    ],
    [
      "2022-03-26 16:44:00.000000",
      "2023-03-27 16:44:00.000000",
      0.8571428571428571,
      3
    ],
    [
      "2024-03-25 16:44:00.000000",
      "2024-03-25 16:44:00.000000",
      1.0,
      1
    ]
  ],
  "data-type": "datetime",
  "null-values": 0.0,
  "collation-id": 8,
  "last-updated": "2024-10-22 08:38:48.859681",
  "sampling-rate": 1.0,
  "histogram-type": "equi-height",
  "number-of-buckets-specified": 3
} |

用户手动指定buckets:
greatsql> ANALYZE TABLE t2 UPDATE HISTOGRAM ON cc2 USING DATA '{"buckets": [[1, 0.25], [2, 0.5], [3, 0.625], [15, 0.75]], "data-type": "int", "null-values": 0.25, "collation-id": 8, "sampling-rate": 1.0, "histogram-type": "singleton", "number-of-buckets-specified": 4}';
greatsql> select json_pretty(histogram)result from information_schema.column_statistics where table_name = 't2';
| {
  "buckets": [
    [
      1, 值
      0.25 值占总数百分比
    ],
    [
      2,
      0.5
    ],
    [
      3,
      0.625
    ],
    [
      15,
      0.75
    ]
  ],
  "data-type": "int",
  "null-values": 0.25,
  "collation-id": 8,
  "last-updated": "2024-10-23 02:14:04.474196",
  "sampling-rate": 1.0,
  "histogram-type": "singleton",
  "number-of-buckets-specified": 4
}
二、update_histogram代码解释

histogram.h/histogram.cc涉及直方图相关调用接口,等高直方图创建在equi_height.cc,等宽直方图创建在singleton.cc。

bool update_histogram(THD *thd, Table_ref *table, const columns_set &columns,
                      int num_buckets, LEX_STRING data, results_map &results) {
  // UPDATE HISTOGRAM指定格式的直方图创建
  if (data.str != nullptr) {
    // Convert JSON to histogram
    histograms::Histogram *histogram = Histogram::json_to_histogram();
    // 直方图持久化
    histogram->store_histogram(thd);
  }
  // Read data from the table into the Value_maps we have prepared.
  // 根据随机抽样原则,从引擎抽样读取数据存入value_map,value_map结构为{唯一值,个数},抽样率计算见表三
  if (fill_value_maps(resolved_fields, sample_percentage, tbl, value_maps))
    return true;
  // 针对每个指定列创建直方图
  for (const Field *field : resolved_fields) {
    // 按照下面表一规则创建直方图,把value_map的key值分配到每个桶,分配原则见函数build_histogram
    value_maps.at(field->field_index())->build_histogram();
  }
}

// 等高直方图创建
bool Equi_height<T>::build_histogram(const Value_map<T> &value_map,
                                     size_t num_buckets) {
  for (; freq_it != value_map.end(); ++freq_it) {
  添加数据到桶的规则:
  1、该数据不是key值的最后一条
  2、剩余的key值个数>剩余空桶数量
  3、添加数据进去不会导致桶大小溢出,因为不知道每个key分别有多少个对应value,这里bucket_max_values用总行数(扣除null值后)进行二分法后用贪婪算法算出来的,一旦发现桶不够用了马上转到下一次二分法重新装数据计算,二分法最多次数10次,因此算出来的桶的高度可能偏大。详细见FindBucketMaxValues函数
    if (next != value_map.end() &&
        distinct_values_remaining > empty_buckets_remaining &&
        bucket_values + next->second <= bucket_max_values) {
      continue;
    }
  // 计算数据个数占总数的百分比,※注意这里的总个数包含null值
  double cumulative_frequency =
        cumulative_values / static_cast<double>(total_values);
  if (m_buckets.push_back(bucket)) return true;
  }
}

// 等宽直方图创建
bool Singleton<T>::build_histogram(const Value_map<T> &value_map,
                                   size_t num_buckets) {
  const ha_rows total_count =
      value_map.get_num_null_values() + num_non_null_values;
  for (const auto &node : value_map) {
    cumulative_sum += node.second;
    // 按照数据个数求占总数据的百分比,※注意这里的总个数包含null值
    const double cumulative_frequency =
        cumulative_sum / static_cast<double>(total_count);
    m_buckets.push_back(SingletonBucket<T>(node.first, cumulative_frequency));
  }                               
}

表一:直方图类型创建规则

直方图类型说明使用场合
等宽singleton每个桶保存一个值以及这个值累积频率指定的buckets个数大于等于列的不同值个数,一般用于数据分布范围比较小的场合,计算结果更精确
等高equi-height每个桶需要保存不同值的个数,上下限以及累积频率等。指定的buckets个数小于列的不同值个数,一般用于数据分布范围比较大的场合

表二:直方图不支持以下场景

场景
加密表、临时表、视图
JSON数据类型、空间(spatial)数据类型
已创建唯一索引的单列
指定USING DATA的时候创建多列直方图

表三:涉及的系统变量

场景值说明
thd->variables.histogram_generation_max_mem_size默认2000000这个值越大抽样样本数越多越精确,范围[1000000,max_mem_sz]

表四:抽样率计算

变量计算公式说明
row_size_bytesvalue_map->element_overhead()所有列每行占用的大小总和,长度=sizeof(value_map_type::value_type) + sizeof(value_map_type::key_type) + 32
rows_in_memorythd->variables.histogram_generation_max_mem_size / row_size_bytes算出内存可以存放的样本数
sample_percentagemin(rows_in_memory / rows_in_table * 100.0, 100.0)算出需要抽样的百分比,意味着可能不会存所有值
三、实际例子说明

接下来看几个例子来说明上面的代码。

greatsql> CREATE TABLE t4 (d1 INT, d2 int, d3 varchar(100));
greatsql> INSERT INTO t4 VALUES (1,2,'aa1'),(2,1,'bb1'),(2,3,'cc1'),(3,3,'cc1'),(4,2,'ff1'),(4,4,'ert'),(4,2,'f5fg'),(null,2,'ee'),(5,30,'cc1'),(5,4,'fcc1'),(4,10,'cc1'),(6,4,'ccd1'),(null,1,'fee'),(1,2,'aa1'),(2,1,'bb1'),(2,3,'cc1'),(3,3,'cc1'),(4,2,'ff1'),(4,4,'ert'),(4,2,'f5fg'),(null,2,'ee'),(5,30,'cc1'),(5,4,'fcc1'),(4,10,'cc1'),(6,4,'ccd1'),(null,1,'fee'),(1,2,'aa1'),(2,1,'bb1'),(2,3,'cc1'),(3,3,'cc1'),(4,2,'ff1'),(4,4,'ert'),(4,2,'f5fg'),(null,2,'ee'),(5,30,'cc1'),(5,4,'fcc1'),(4,10,'cc1'),(6,4,'ccd1'),(null,1,'fee');

查看数据分布情况,发现d1存在数据倾斜。下面的格式即value_map的格式
greatsql> SELECT d1,count(*) FROM t4 GROUP BY d1; 
+------+----------+
| d1   | count(*) |
+------+----------+
|    1 |        3 |
|    2 |        6 |
|    3 |        3 |
|    4 |       12 |
| NULL |        6 |
|    5 |        6 |
|    6 |        3 |
+------+----------+
7 rows in set (0.00 sec)

首先创建自动等高直方图

-- 先创建等高直方图,t4表扣掉null值一共33行,这里创建出来每个桶最多装12行数据。
greatsql> ANALYZE TABLE t4 UPDATE HISTOGRAM ON d1 WITH 3 BUCKETS;
greatsql> SELECT json_pretty(histogram)result FROM information_schema.column_statistics WHERE table_name = 't4';
| {
  "buckets": [
    [
      1,
      3,
      0.3076923076923077, 计算公式9/39 ※注意这里的总个数包含null值
      3
    ],
    [
      4,
      4,
      0.6153846153846154,
      1
    ],
    [
      5,
      6,
      0.8461538461538461,
      2
    ]
  ],
  "data-type": "int",
  "null-values": 0.15384615384615385,
  "collation-id": 8,
  "last-updated": "2024-10-24 03:15:54.463774",
  "sampling-rate": 1.0,
  "histogram-type": "equi-height",
  "number-of-buckets-specified": 3
} |

-- 先创建等高直方图,t4表扣掉null值一共33行,这里创建出来每个桶最多装9行数据。
greatsql> ANALYZE TABLE t4 UPDATE HISTOGRAM ON d1 WITH 5 BUCKETS;
greatsql> SELECT json_pretty(histogram)result FROM information_schema.column_statistics WHERE table_name = 't4';
| {
  "buckets": [
    [
      1,
      2,
      0.23076923076923078,
      2
    ],
    [
      3,
      3,
      0.3076923076923077,
      1
    ],
    [
      4,
      4,
      0.6153846153846154,
      1
    ],
    [
      5,
      5,
      0.7692307692307693,
      1
    ],
    [
      6,
      6,
      0.8461538461538461,
      1
    ]
  ],
  "data-type": "int",
  "null-values": 0.15384615384615385,
  "collation-id": 8,
  "last-updated": "2024-10-24 06:42:40.102386",
  "sampling-rate": 1.0,
  "histogram-type": "equi-height",
  "number-of-buckets-specified": 5
} |

等高直方图不同桶装的最多数据个数bucket_max_values

桶个数总行数(扣掉null值)每个桶最多数据个数
23321
33312
4339
5339

接着创建自动等宽直方图

-- 先创建等高直方图,t4表扣掉null值一共33行,这里创建出来每个桶最多装12行数据。
greatsql> ANALYZE TABLE t4 UPDATE HISTOGRAM ON d1 WITH 6 BUCKETS;
greatsql> select json_pretty(histogram)result from information_schema.column_statistics where table_name = 't4';
| {
  "buckets": [
    [
      1,
      0.07692307692307693 计算公式3/39 ※注意这里的总个数包含null值
    ],
    [
      2,
      0.23076923076923078
    ],
    [
      3,
      0.3076923076923077
    ],
    [
      4,
      0.6153846153846154
    ],
    [
      5,
      0.7692307692307693
    ],
    [
      6,
      0.8461538461538461
    ]
  ],
  "data-type": "int",
  "null-values": 0.15384615384615385,
  "collation-id": 8,
  "last-updated": "2024-10-24 06:53:37.256033",
  "sampling-rate": 1.0,
  "histogram-type": "singleton",
  "number-of-buckets-specified": 6
} |
数值个数占比
133/39
269/39
3312/39
41224/39
5630/39
6333/39

下面看一个sampling-rate小于1的例子

greatsql> CREATE TABLE t5 (d1 INT, d2 int, d3 varchar(100),d4 varchar(100),d5 varchar(100),d6 varchar(100));
greatsql> SET sql_mode=ORACLE;
greatsql> DELIMITER $$
greatsql> CREATE or replace PROCEDURE p1() as
BEGIN
  for i in 1 .. 1000 loop
    INSERT INTO t5 VALUES (i,rand()*1000,'aaaaaaaaaa'||i,'bbbb'||i,'cccccc'||i,'ddddddd'||i);
  end loop;
END;
$$
DELIMITER ;
greatsql> call p1();
-- 把系统变量histogram_generation_max_mem_size设置为最小值
greatsql> SET @@session.histogram_generation_max_mem_size = 1000000;
-- 为了让每个样本更大,这里创建多列直方图
greatsql> ANALYZE TABLE t5 UPDATE HISTOGRAM ON d2,d3,d4,d5,d6 WITH 5 BUCKETS;
greatsql> select json_pretty(histogram)result from information_schema.column_statistics where table_name = 't5';
result: {
  "buckets": [
    [
      1,
      187,
      0.2009987515605493,
      119
    ],
    [
      189,
      373,
      0.4019975031210986,
      116
    ],
    [
      374,
      577,
      0.602996254681648,
      117
    ],
    [
      578,
      783,
      0.8039950062421972,
      112
    ],
    [
      784,
      998,
      1.0,
      112
    ]
  ],
  "data-type": "int",
  "null-values": 0.0,
  "collation-id": 8,
  "last-updated": "2024-10-24 07:44:31.520442",
  "sampling-rate": 0.8741258741258742, 这里看到抽样率是87%
  "histogram-type": "equi-height",
  "number-of-buckets-specified": 5
}
四、总结

从上面直方图创建的步骤我们认识了直方图的类型和创建方法,包括自动和手动两种,以及等宽和等高直方图的区别,学会了查看直方图的桶个数和数据,如果表是一张大表的话,想让样本尽可能多的被抽样,那么系统变量histogram_generation_max_mem_size就设置大一点,这样精确度更高,当然相对的更占硬盘资源。下一节讲直方图的应用。

Enjoy GreatSQL :)

关于 GreatSQL

GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

image

社区有奖建议反馈: https://greatsql.cn/thread-54-1-1.html

社区博客有奖征稿详情: https://greatsql.cn/thread-100-1-1.html

(对文章有疑问或者有独到见解都可以去社区官网提出或分享哦~)

技术交流群:

微信&QQ群:

QQ群:533341697

微信群:添加GreatSQL社区助手(微信号:wanlidbc )好友,待社区助手拉您进群。

支付对账系统|Spring Cloud Alibaba微服务架构 分库分表+双边账比对引擎 一套基于 Spring Cloud Alibaba 的微服务支付对账系统完整工程,解决支付业务中"本地账与渠道账不一致"这一核心问题。技术栈为 JDK 8 + Spring Boot 2.7 + Spring Cloud 2021 + Nacos + OpenFeign + MyBatis-Plus + ShardingSphere 5.3 + Redisson + RocketMQ,共 8 个 Maven 模块、104 个 Java 文件、约 8800 行代码,含建表脚本与中间件编排文件。 工程按商户中心、渠道中心、结算中心、对账中心、调度中心、网关分层。核心实现有四块:一是双边账比对引擎,支持渠道单号优先、商户订单号回退的匹配主键,分位容差抹平,自动判定本地多单、渠道多单、金额不一致、状态不一致四类差异;二是差异处置策略,覆盖查单补偿、本地账补记、人工工单与挂账结转下期,并内置防资损约束——渠道查单接口失败时不判定为"渠道无此单",避免把超时误判成掉单而错误关闭已收款订单;三是分库分表落地,4 库 × 32 表,自定义按账期落表的分片算法,跨账期范围查询可精确裁剪表;四是渠道账单适配器,处理 GBK 编码、表头按列名定位、CSV 引号切分与金额元转分。网关侧实现了商户 HMAC-SHA256 签名验签加时间戳防重放、运营台 JWT 加登出黑名单双身份鉴权。另有雪花 ID、账期 T+N 计算、幂等切面、统一错误码与异常体系、对账任务状态机配分布式锁与乐观锁双保险。 立即下载

相关推荐

科技中介服务机构如何实现服务流程的标准化与高效化?.docx

科技中介服务机构如何实现服务流程的标准化与高效化?

SQL优化【基础06】 - 统计信息(直方图)

前言:从10开始默认优化器就是CBO模型,RBO已经靠边站了,CBO

N 3493

基于非对称纳什谈判的多微网电能共享运行优化策略(Matlab代码实现)

基于非对称纳什谈判的多微网电能共享运行优化策略(Matlab代码实现)内容概要:本文档标题为《Plecs全桥LLC谐振变换器仿真模型.txt》,但实际上内容并未围绕Plecs或全桥LLC谐振变换器展开详细论述,而是罗列了大量基于Matlab/Simulink和Python的科研仿真项目标题及相关技术方向,涵盖电力系统、无人机控制、微电网优化、路径规划、状态估计、信号处理、电动汽车调度、电力电子变换器等多个领域。其中包括多种优化算法(如粒子群、遗传算法、NSGA-II)、控制策略(如PID、MPC、滑模控制)、仿真建模(如LLC谐振变换器、DAB变换器、PWM整流器)以及具体应用场景的研究实现。尽管提及“隔离型全桥LLC谐振变换器建模及参数设计资料”,但全文缺乏对该主题的具体描述、模型细节或仿真分析,仅作为条目之一出现。因此,该文档实质是一份科研项目资源清单或代码合集目录,而非针对某一主题的深入文章。; 适合人群:具备一定Matlab/Simulink或Python编程基础,从事电气工程、自动化、控制科学、电力电子、新能源系统等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①为科研工作者提供丰富的课题参考与复现资源,涵盖优化调度、控制系统设计、电力电子仿真等方向;②辅助完成硕士/博士论文、期刊论文复现、课程设计或项目开发,提升研究效率与创新性;③通过已有模型和代码快速搭建仿真平台,聚焦算法改进与性能优化。; 阅读建议:此文档应作为科研资源索引使用,读者可根据自身研究方向筛选相关条目,结合配套代码与参考资料进行深入学习与实践。对于希望研究全桥LLC谐振变换器的用户,需注意本文档未提供完整内容,建议查找标注的“仿真+设计报告+计算书”等附件资源以获取详细信息。

Oracle SQL优化基本概念:直方图

不过需要注意的是,直方图也会占用额外的存储空间,并且在某些情况下可能会导致优化器选择非最优执行计划,因此是否需要使用直方图以及如何配置直方图都需要根据实际情况进行细致分析与调整。然而,在实际业务场景中,这种假设往往并不准确,导致优化器选择的执行计划可能并不是最优的,从而影响SQL语句的执行效率。创建直方图后,对于包含相关列作为过滤条件的SQL查询,Oracle的CBO(Cost-Based Optimizer)可以利用这些统计信息生成更为精准的成本评估,进而选择最优的执行路径,提升查询性能。

专注于数据库技术分享,包含但不限于Oracle,MySQL,PostgreSQL,ElasticSearch及国产数据库等 475

高校技术转移办公室在推动成果转化过程中,如何高效完成技术成果的信息整合与价值挖掘.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

高校技术转移办公室人员,如何精准挖掘并分析企业的技术需求?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

用 SQL 查询创建水平、垂直直方图

用 SQL 查询创建水平、垂直直方图

wzy0623的专栏 715

隔离型全桥LLC谐振变化器建模及参数设计资料【仿真+设计报告+计算书】

内容概要:本文档是一套关于隔离型全桥LLC谐振变换器的综合性技术资料,系统涵盖了拓扑建模、参数设计、闭环控制策略及仿真验证等关键环节。资料整合了Simulink仿真模型、详细设计报告、Mathcad计算书以及控制算法说明文档,深入探讨了恒压恒流双闭环控制、变频与移相混合控制、软启动机制等核心技术,并提供了多应用场景实例,包括双向全桥LLC、多相交错LLC以及电动汽车V2G系统中的CLLC变换器设计。此外,配套资源还包含了多种先进控制与状态估计算法(如EKF、UKF、PF及其与神经网络融合算法)的Matlab实现代码,强化了科研复现与工程实践能力。; 适合人群:适用于电气工程、电力电子及相关专业的研究生、科研人员,以及从事高频开关电源、新能源变换器开发的工程师;需具备扎实的电路理论基础与一定的仿真软件操作经验。; 使用场景及目标:①支持全桥LLC变换器的高效参数设计与动态性能优化;②服务于高校或企业的科研项目,助力拓扑创新与控制系统开发;③作为毕业设计、学术论文或工业级产品原型开发的重要技术参考,提升系统效率、稳定性和响应速度。; 阅读建议:建议结合Simulink仿真模型与Mathcad计算书同步学习,重点关注谐振元件匹配、控制环路设计与系统稳定性分析,充分利用提供的Matlab/Simulink环境进行仿真调试与二次开发,深化理论认知与实际工程应用的融合。

【GreatSQL 优化器 - 13】直方图

从上面直方图创建的步骤我们认识了直方图的类型和创建方法,包括自动和手动两种,以及等宽和等高直方图的区别,学会了查看直方图的桶个数和数据,如果表是一张大表的话,想让样本尽可能多的被抽样,那么系统变量就设置大一点,这样精确度更高,当然相对的更占硬盘资源。下一节讲直方图的应用。

laowangseo1的博客 1338

三相交错并联Buck变换器+低纹波输出+双闭环控制仿真【附参考文献】(Simulink仿真实现)

内容概要:本文详细介绍了基于Simulink平台构建的三相交错并联Buck变换器仿真模型,重点实现了低输出纹波特性和双闭环控制策略。通过三相交错并联结构有效抑制输入与输出电流的纹波成分,显著提升电源系统的稳定性和电能质量;控制系统采用电压外环与电流内环相结合的双闭环架构,增强了系统的动态响应能力和抗干扰性能。资源包涵盖完整的Simulink仿真模型、技术说明文档及参考文献,具有较强的工程实践价值,适用于电力电子变换器的科研开发与教学实验。; 适合人群:电力电子、电气工程及其自动化等相关专业的高校本科生、研究生及科研人员,尤其适合从事直流变换器拓扑结构与先进控制策略研究的专业人士,具备电路理论基础和Simulink仿真操作经验者更佳。; 使用场景及目标:①用于高效低纹波DC-DC变换器的拓扑创新与控制算法研究;②支撑科研项目中对多相并联技术与双闭环控制系统的性能验证;③作为课程设计、毕业设计或实验教学的技术范例,帮助深入理解交错并联的工作机理与闭环系统的设计方法。; 阅读建议:建议结合所提供的参考文献系统学习控制策略的理论依据,并动手调整仿真参数以观察系统在不同工况下的动静态响应特性,进一步掌握模型搭建、控制器设计与性能优化的全流程,强化理论与工程实践的融合能力。

产业园区运营负责人如何依托平台系统提升科技资源的集聚与转化效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

高校技术转移办公室人员在成果推介过程中,如何提升推介材料的专业性与吸引力.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

高校技术转移办公室如何提升技术成果的精准推介效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

三电平Buck直流变换器双闭环、单闭环、开环仿真【附参考文献】(Simulink仿真实现)

内容概要:本文系统介绍了三电平Buck直流变换器在Simulink环境下的开环、单闭环及双闭环控制系统的建模仿真与性能对比分析,深入探讨了不同控制策略对系统动态响应、稳态精度、抗扰能力及鲁棒性的影响。通过构建完整的仿真模型,详细阐述了各控制结构的设计思路、关键模块实现方法及PI控制器参数整定过程,并结合仿真波形对比分析了三种控制方式在启动过程、负载突变等工况下的输出电压表现,充分验证了双闭环控制在抑制电压波动、提升调节速度和负载适应性方面的显著优势。文档还提供了详尽的参数设置指南和参考文献,便于读者复现结果并开展进一步研究。; 适合人群:电气工程、自动化、电力电子与电力传动等相关专业的本科生、研究生,以及从事直流变换器设计、控制算法开发和系统仿真的科研人员与工程技术开发者。; 使用场景及目标:①掌握三电平Buck变换器的工作原理与数学建模方法;②理解电压模式控制与电流模式控制的差异与应用场景;③学习双闭环PI控制器的设计流程与参数整定技巧;④为电力电子装置的控制器设计、性能优化及科研项目提供仿真验证平台与技术参考。; 阅读建议:建议读者结合Simulink软件动手搭建仿真模型,分步实现开环、单闭环与双闭环控制系统,通过调整控制器参数并观察不同工况下的系统响应,深入理解控制策略对系统性能的影响机制,同时结合提供的参考文献强化理论基础,实现从仿真到实际应用的有效过渡。

Type-C连接中的CC引脚:Rp与Rd电阻的识别与供电模式选择

本文深入解析Type-C接口中CC引脚的核心功能,包括Rp与Rd电阻的识别原理及供电模式选择机制。通过详细的分压计算和实战案例,揭示Type-C设备如何通过CC引脚实现方向检测、角色识别和供电协商,为硬件设计提供关键指导。

weixin_30616969的博客 341

13 万字 C 语言从入门到精通保姆级教程2021 年版

13 万字C语言保姆级教程,从入门到精通。

李南江 61万+
上一篇: 【GreatSQL优化器-12】make_tmp_tables_info
下一篇: 【GreatSQL优化器-13】直方图
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值