Expert 诊断优化系列------------------语句调优三板斧

SqlSugar 是 .NET 开源的 ORM 框架,由 Fructose 大数据技术团队维护和更新,开箱即用最易用的 ORM 低代码 高性能 超级简单 功能全面 [多数据库兼容] SqlSugar 是 .NET 开源的 ORM 框架,由 Fructose 大数据技术团队维护和更新,开箱即用最易用的 ORM。[低代码] [高性能] [超级简单] [功能全面] [多数据库兼容] [合适产品]。支持.NET.net framework.net core3.1.ne5.net6.net7.net8 .net9 .net10。支持数据库 MySql、SqlServer、Sqlite、Oracle、postgresql、达梦、Mongodb 人大金仓(国产推荐)、神通数据库、瀚高、Access DB2、DuckDb、Hana、OceanBase TDengine QuestDb Clickhouse MySqlConnector、华为 GaussDB 南大通用 GBase、MariaDB、Tidb、Odbc、Percona Server, Amazon Aurora、Azure Database for MySQL、 Google Cloud SQL for MySQL、自定义数据库。真正实现零SQL ORM表构建、索引和CRUD支持。Support.NET 数百万大数据写入、更新、子表,拥有数十亿查询统计数据成熟解决方案。支持SAAS完整应用:跨数据库查询、审计、租户子数据库、租户子表和租户数据隔离。支持低代码 + 工作流程(动态类构建、动态表构建、非实体多库兼容 CRUD、JSON TO SQL、CUSTOM XML 等)。支持 ValueObject、判别器、仓库、UnitOfWork、DbContext、AOP 立即下载

前面三篇通过CPU、内存、磁盘三巨头,讲述了如何透过现在看本质,怎样定位服务器三巨头反映出的问题。为了方便阅读给出链接:

SQL SERVER全面优化-------Expert for SQL Server 诊断系列

    通过三篇文章的基本介绍,可以看出系统的语句如果不优化,可能会导致三巨头都出现异常的表现。所以本篇开始介绍系统中的重头戏--------------SQL语句!

开篇前的啰嗦 

  • 什么是SQL 语句 ?

    

   这就是SQL 语句! 帅气吧!还有呢!

  

   

 

   这也是SQL语句!

 

 

   博主真能骗人,我读书少也知道,这是“车、马、炮”的 “车” ! 没错,此篇文章里会以“车”来代表你的SQL 语句,让你知道怎样让你的“车”从16手报废车改装成------------------ |法拉利|

   注:SQL语句优化的细节,一本书都写不全,所以这里只讲述“改装思想!”

改装有顺序------常开的爱车下手

   你的系统中有成千上万的语句,那么优化语句从何入手呢 ? 当然是系统中运行最频繁,最核心的语句了。废话不多说,上例子:

   

   这是一天的语句执行情况,里面柱状图表示的是对应执行时间段内语句的次数,总体看起来长时间语句非常多。

   下面看一下具体的语句执行情况:

   

 

   排位第一的语句执行次数38508次,是一个存储过程(RPC:Completed 表示存储过程结束,不知道这个的请看profiler的使用说明)。其中的一条语句(SP:StmtCompleted)也就是排在第二位的语句,存储过程的执行时间大部分消耗这条子语句上!

这个例子可以看出业务系统中使用最频繁,且远远高于其他处理的语句就是这个执行3W8Q多次的语句。

   那么看到这样的数据,想做优化当然要从这条语句下手了!它就是你最常开的车了! 这个例子中只要解决了这条语句的性能问题,整个系统性能就可以有一个质的飞跃。

 

--------------------------------上面的情况,你很专一,只喜欢开一种车!----------------------------

   这个例子中,你喜欢开的车就比较多了,也就是说需要你关注,并且优化的语句较多。(很多语句执行次数都很频繁,也就是系统中使用到的频繁功能较多)

   

 

   

 

   系统优化需要循序渐进,从系统最频繁的语句出发,逐个解决语句问题。

   有人看到这会说,博主你有工具,能收集、能统计,我啥也没有咋整?不要急后文脚本都会奉上!

改装前的知识储备

  知识储备很重要,语句的优化涉及的地方很多很多,要么为什么说可以写本书呢?

  1. 你知道什么是执行计划么?如何在语句执行的同时,看到执行计划?
  2. 你知道索引有几种?有什么区别么?
  3. 你知道有索引和没索引,语句执行的区别么?
  4. 你知道什么是统计信息么?
  5. 你知道什么是临时表,表变量,CTE?有什么区别?
  6. 什么是事务?什么是隔离级别?
  7. 你知道什么是逻辑读,什么是物理读,什么是预读么?怎么查看你执行消耗的IO资源?
  8. 你知道什么是等待?怎么查看你运行的语句是否在等待?等待反应出的问题是什么?
  9. 你了解SQL的锁机制么?
  10. 你了解TempDB么?什么样的语句会使用TempDB?
  11. 编译与重编译?
  12. 查询提示是干什么的?
  13. .....
  14. .....
  15. .....
  16. .....

常见的改装方式

------------------------------------新手区-----------高手勿进-------------------------------------  

  是不是就没法短时间内,掌握大部分语句的优化技巧呢? 这是可以的,简单介绍一下语句简单粗暴的调优方式:

  

开启执行计划,让执行计划告诉你,语句慢的原因

  

 

透过计划,一眼看出索引


   

 

   当语句执行后,执行计划中会提示你这条运行的语句中是否缺少索引,右键绿色部分"缺少索引提示",点击缺少索引详细信息,生成对应的索引脚本,创在在数据库中。

   在次执行语句验证是否有效,如果还继续提示索引缺失,继续按照此方法创建索引。

   

 

 

   索引对于一个语句的影响很大,一个有效的索引可以缩短语句的执行时间,并且降低CPU、IO、内存等消耗。也就是说不但让你的语句执行快,更降低了宝贵的系统资源消耗!

   执行计划中除了可以看出缺失的索引,也可以看出语句的主要消耗在哪。知道了主要消耗,我们也就可以针对这个消耗进行优化。如例子中94%的开销在表的扫描上。当看到这个开销很大并且是一个扫描的时候,第一反应要看扫描的表,有没有筛选条件“where”条件,或 “关联条件join" 如果有条件,那就看为什么没有先用条件过滤数据!是不是没有索引? 是不是创建的索引不能用(隐式转换?列上有函数?等等,具体为什么不能使用索引,请自行百度) 

 

   高能提示:不要小看索引,感觉这都是小儿科。在我亲身经历的众多客户之中,大面积缺少索引的系统可以占到三层以上。或是软件开发完,对数据库就没有建立索引,或是随着系统的日积月累,数据量、功能也随之增加,系统得不到一个及时的跟踪优化导致。

 

    

降低语句的复杂度

  讲一个我自己的故事,我刚从业的时候对数据库的优化了解不深,一度认为自己写的SQL 好牛逼,因为现在给我,我真是看不懂。一个语句两张A4纸都打印不下!各种子查询,视图嵌套,函数嵌套,UNION ALL等等等。

不能否认这种语句写出来以后,有种小自豪感!因为别人根本看不懂,改也改不了!这种语句在对于SQL 的优化器来说就是灾难,下面简单的说下优化器拿到一条语句怎么样作出执行计划:

  首先传入一个语句,如果有视图,则会把你视图内的代码和外层代码经过二次编译变成一个大语句(多层视图都会编译成一个),然后从表连接开始,优化器会根据统计信息,和一些预查询(如执行所需要的字段类型长度,数据量等)针对你的条件选用一个表作为驱动表,然后继续和其他的表关联,并选用关联方式(hash、merge、nested loop)等,每次关联顺序和方式的都基于SQL的预估,也就是关联的越多,最后的预估可能越不准确,进而导致选用一个比较差的计划。为什么有好的不选却选出一个差的呢?因为优化器不会把你所有执行的可能都验证一次,然后选择一个最好的。这里选出来的“最优”的只是一个相对值。

  介绍的有点跑题了,下面我们说一下降低语句复杂度的常用方式:最常用的就是临时表,比如先把条件筛选性较强的几张表关联,然后把结果放入临时表,在用临时表和其他表关联。可以理解成我有10张表关联,我先拿5张表出来关联,然后把结果放入临时表,再跟另外5张表关联。这样这个查询的复杂度由10张表的联合变成 5+6,这样降低了复杂语句复杂度。

  复杂视图也是如此,在视图和外层关联前,放入临时表,再跟外层关联。

  子查询也是如此,可以分离出来成为临时表的子查询,先分离出来。

  

  情况很多种,最终目的就是降低语句复杂性,让语句分多个步骤执行,这样也可以让优化器每次选出一个比较稳定的计划(一个语句执行有时快有时慢,也很可能是语句的复杂性导致的)。

  

  高能提示:部分系统核心处理的语句比较复杂,且已经很多年前留下的遗产了,经历了一代又一代,我真心不敢碰。那么恭喜你中奖了,好好分析下业务,通过临时表拆分语句还是有可能的!

       临时表和表变量,最大的区别是表变量作为中间过程表不能插入太多数据,如果数据插入的多严重影响性能。

 

 

降低并行度,或使用并行提升性能

  这个小标题好像有些矛盾!解释一下降低并行度是因为现在的服务器配置CPU数都很大64或更多的随处可见,系统选用并行计划时,使用过多的CPU 反而会使性能下降具体请参见:Expert 诊断优化系列------------------你的CPU高么?

  首先看一个等待: CXPACKET

  

   

   CXPACKET 是最常见的等待之一,等待 并行计划 CPU的调度,或线程上的资源等待,请参见

sys.dm_os_waiting_tasks 引发的疑问(上)

sys.dm_os_waiting_tasks 引发的疑问(中)

sys.dm_os_waiting_tasks 引发的疑问(下)

   当你看见如图的等待情况时,说明你系统中并行度需要调整了!请参见系列中的CPU篇,这里不过多介绍。

 

   另一种情况,语句可以通过并行来提升执行时间,这里也不过多介绍,请参见SQL提示介绍-强制并行

使用一切方法降低读次数

  一个语句运行起来消耗的读次数也少,说可以间接说明这个语句优化程度较高,读取的页数少也会降低内存和磁盘的压力。

   优化时可以开set statistics io on 来观察语句的IO消耗情况。降低IO的主要方式就是添加索引和降低语句复杂度。

   注:重点关注读次数多的表!

   

   这里就不细说了!

 

不能忽视的硬件问题

  前三篇一直在强调语句很影响服务器资源。但不能忽略的一点就是,语句的运行好坏也很依赖于资源,硬件资源就好比路面环境。语句这车再好,路没有那么宽,也不平坦,再好的车也跑不起来。

反过来就算硬件足够好,路够宽也够好,没有好车也是跑不起来的!

  

 --------------博客地址---------------------------------------------------------------------------------------

Expert 诊断优化系列 http://www.cnblogs.com/double-K/

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

  总结:语句运行的效率是系统的关键,而运行最频繁的语句就是关键中的关键。找出系统运行频率高且效率较差的语句进行优化,是优化思路中的核心。

     80%的优化不需要你有高深的技术积累,程咬金的三板斧轮上去,也会扫倒一大片的。请参见 ”常见改装“中的三种手段。

     剩下20%的优化就需要对知识的不断积累,在实际场景中获得更好的知识提升。

     

     硬件和语句相互依赖,都是最优的那自然是好,但是作为技术人员我们保证系统语句是最优的,也是一种责任的体现!

     

     本文只是非常简单的介绍常规优化的思路和方法,不足之处请谅解。后续文章中也会针对等待、执行计划、tempDB等继续细说系统的优化。

 

   PS: 优化需要使用各种手段,反复尝试才能达到一个最好的效果,优化无止境。

 -------------------------干货到了---------------------------------------------------------------------------    

 没有自己的SQL工具怎么找出执行频繁的语句呢?

  1. profiler 对系统进行监控(不会的小伙伴,快去百度吧)  
  2. DMV视图 ,筛选条件请自行修改

 

复制代码
with aa as (
SELECT  
--执行次数 
QS.execution_count, 
--查询语句 
SUBSTRING(ST.text,(QS.statement_start_offset/2)+1, 
((CASE QS.statement_end_offset WHEN -1 THEN DATALENGTH(st.text) 
ELSE QS.statement_end_offset END - QS.statement_start_offset)/2) + 1 
) AS statement_text, 
--执行文本 
ST.text, 
--执行计划 
qs.last_elapsed_time,
qs.min_elapsed_time,
qs.max_elapsed_time,
QS.total_worker_time, 
QS.last_worker_time, 
QS.max_worker_time, 
QS.min_worker_time 
FROM 
sys.dm_exec_query_stats QS 
--关键字 
CROSS APPLY 
sys.dm_exec_sql_text(QS.sql_handle) ST 
WHERE 
QS.last_execution_time > '2016-02-14 00:00:00' and  execution_count > 500

-- AND ST.text LIKE '%%' 
--ORDER BY 
--QS.execution_count DESC

)
select text,max(execution_count) execution_count --,last_elapsed_time,min_elapsed_time,max_elapsed_time 
from aa
where [text] not  like '%sp_MSupd_%' and  [text] not like '%sp_MSins_%' and  [text] not like '%sp_MSdel_%' 
group by text
order by 2  desc
复制代码

 

 

 

 怎么查看自己系统缺失的索引?适合大批量创建索引

这里的DMV信息只是记录自上次SQL Server启动以后的信息项,也就是说每次重启之后这部分信息就丢失了,所以对于生产系统,建议确保运行了一段周期之后再进行查看。

在我们重新创建聚集索引的时候,SQL Server会默认的重新生成全部非聚集索引,如果表数据量特别大,这个过程会很漫长,如果不指定ONLINE的话,这个过程会是锁定索引B-Teee的,这就意味着是阻塞的,业务就要停下来等待完成操作。

复制代码
------------------缺失索引-----------------------
SELECT migs.group_handle, mid.* 
FROM sys.dm_db_missing_index_group_stats AS migs 
INNER JOIN sys.dm_db_missing_index_groups AS mig 
ON (migs.group_handle = mig.index_group_handle) 
INNER JOIN sys.dm_db_missing_index_details AS mid 
ON (mig.index_handle = mid.index_handle) 
WHERE migs.group_handle = 2
----------------------------------无用索引----------------------
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
SELECT 
DB_NAME() AS DatbaseName 
, SCHEMA_NAME(O.Schema_ID) AS SchemaName 
, OBJECT_NAME(I.object_id) AS TableName 
, I.name AS IndexName 
INTO #TempNeverUsedIndexes 
FROM sys.indexes I INNER JOIN sys.objects O ON I.object_id = O.object_id 
WHERE 1=2 
EXEC sp_MSForEachDB 'USE [?]; INSERT INTO #TempNeverUsedIndexes 
SELECT 
DB_NAME() AS DatbaseName 
, SCHEMA_NAME(O.Schema_ID) AS SchemaName 
, OBJECT_NAME(I.object_id) AS TableName 
, I.NAME AS IndexName 
FROM sys.indexes I INNER JOIN sys.objects O ON I.object_id = O.object_id 
LEFT OUTER JOIN sys.dm_db_index_usage_stats S ON S.object_id = I.object_id 
AND I.index_id = S.index_id 
AND DATABASE_ID = DB_ID() 
WHERE OBJECTPROPERTY(O.object_id,''IsMsShipped'') = 0 
AND I.name IS NOT NULL 
AND S.object_id IS NULL' 
SELECT * FROM #TempNeverUsedIndexes 
ORDER BY DatbaseName, SchemaName, TableName, IndexName 
DROP TABLE #TempNeverUsedIndexes

--------------------------经常被大量更新,但是却基本不适用的索引项--------------------
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
SELECT 
DB_NAME() AS DatabaseName 
, SCHEMA_NAME(o.Schema_ID) AS SchemaName 
, OBJECT_NAME(s.[object_id]) AS TableName 
, i.name AS IndexName 
, s.user_updates 
, s.system_seeks + s.system_scans + s.system_lookups 
AS [System usage] 
INTO #TempUnusedIndexes 
FROM sys.dm_db_index_usage_stats s 
INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id] 
AND s.index_id = i.index_id 
INNER JOIN sys.objects o ON i.object_id = O.object_id 
WHERE 1=2 
EXEC sp_MSForEachDB 'USE [?]; INSERT INTO #TempUnusedIndexes 
SELECT TOP 20 
DB_NAME() AS DatabaseName 
, SCHEMA_NAME(o.Schema_ID) AS SchemaName 
, OBJECT_NAME(s.[object_id]) AS TableName 
, i.name AS IndexName 
, s.user_updates 
, s.system_seeks + s.system_scans + s.system_lookups 
AS [System usage] 
FROM sys.dm_db_index_usage_stats s 
INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id] 
AND s.index_id = i.index_id 
INNER JOIN sys.objects o ON i.object_id = O.object_id 
WHERE s.database_id = DB_ID() 
AND OBJECTPROPERTY(s.[object_id], ''IsMsShipped'') = 0 
AND s.user_seeks = 0 
AND s.user_scans = 0 
AND s.user_lookups = 0 
AND i.name IS NOT NULL 
ORDER BY s.user_updates DESC' 
SELECT TOP 20 * FROM #TempUnusedIndexes ORDER BY [user_updates] DESC 
DROP TABLE #TempUnusedIndexes
复制代码
基于热成像的土壤水分反馈MATLAB实现,以及用于灌溉调度的模型预测控制。.zip 1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 立即下载

相关推荐

基于netty框架下的推送系统,支持websocket,android,ios,桌面应用,系统应用等多端接入支持,应用于移动应用,物联网,智能家居,嵌入式开发,WEB应用以及后台系统之间的即时消服务

基于netty框架下的推送系统,或许有一些企业有着自己一套即时通讯系统的需求,那么CIM为您提供了一个解决方案,目前CIM支持websocket,android,ios,桌面应用,系统应用等多端接入支持,可应用于移动应用,物联网,智能家居,嵌入式开发,桌面应用,WEB应用以及后台系统之间的即时消服务。

使用FireBird数据库和管理工具IBExpert过程的问题与解决方法

第一次接触FireBird数据库,今天下午测试连接了一下午都没有连接上,每次用IBExpert登记一个数据库的时候都没登记上,提示firebird.msg没有找到和Your user name and password are not defined. Ask your databaseadministrator to set up a Firebird login. 安装Fir

搬砖工 1万+

WeVisOne-VL一套模型,把检测、分割、抠图和OCR都接到了一起

WeVisOne-VL 想解决的不是单点能力更强,而是把目标级理解和像素级理解放进同一套视觉语言模型里:从点、框,到 mask,再到连续 alpha matte,都能统一生成。 它覆盖检测、指代表达定位、计数、点选、OCR、分割和抠图,最大的看点是输出粒度可以按需求切换,而且遇到图里根本不存在的目标时,能直接返回 None,尽量避免“看错了还硬答”的幻觉。 技术上,它把任务统一写成结构化文本预测,再配一个只有 960 万参数的轻量像素解码器,不依赖 SAM,也能把框进一步细化成 mask 和 alpha matte。项目同时放出了 2B、4B 权重、推理包、Cookbooks、评测流程和 Gradio Demo;按仓库给出的结果,4B 版本在检测、指代定位、计数、OCR、分割和抠图等多项基准上都压过一批强开源基线。 更值得琢磨的是它背后的数据引擎:用知识图谱驱动概念发现,再结合专家模型与 VLM 校验,把框扩展到 mask 和高质量透明度标注,累计覆盖超过 1 亿张图像。这类工作真正有价值的地方,不只是又做出一个大模型,而是让“看见什么”和“精确到哪一层”第一次被放进一条顺滑的产品链路里。

SQL 调优三板斧,拿好拿稳了

点击蓝色“有关SQL”关注我哟 加个“星标”,天天与6000人一起快乐成长 (图:极速拍档-小乔) 前言 大家都知道,至少老读者应该都知道,我是从网管,编程,DBA,数仓一路爬过来的。这么多年的风里雨里多少有些技术上的技巧可以分享给大家。还记得有个曾经抖落过一段小插曲吗,发生在网管装机那个时代。 装机对于那个年代来说,其实没有太大的悬念。但...

wujiandao的专栏 667

【化工设备防腐】基于BF凝水除铁缓蚀剂的螺旋板换热器腐蚀与冷凝水发红问题综合治理技术应用

内容概要:本文针对氯碱厂盐水螺旋板预热器腐蚀渗漏及蒸汽冷凝水发红、偏酸性的问题,提出并实施了采用BF凝水除铁缓蚀剂成膜法的综合治理方案。通过分析腐蚀原因,确认主要为二氧化碳引起的酸性腐蚀和溶解氧导致的氧腐蚀。在原有阴极保护与局部防腐涂层改造基础上,进一步投加BF凝水除铁缓蚀剂,该药剂能在金属表面形成单分子保护膜,有效阻隔腐蚀介质,实现全系统气液两相的协同防护。经72小时试验,冷凝水pH值恢复至8.5以上,铁离子浓度降至0.07mg/L以下,颜色清澈透明,达到回用标准,实现了设备安全运行与冷凝水高效回收。; 适合人群:从事化工、电力、锅炉系统管理及相关工业设备维护的技术人员与工程管理人员,尤其适用于面临换热器腐蚀、冷凝水水质异常问题的企业技术人员。; 使用场景及目标:①解决工业蒸汽系统中冷凝水发红、铁离子超标、pH偏低等腐蚀问题;②提升冷凝水回收率,降低能耗与水资源浪费,实现节能减排与降本增效;③替代传统除氧剂与末端过滤设备,优化现有水处理工艺。; 阅读建议:此资源结合实际案例提供系统性解决方案,读者应重点关注问题诊断逻辑、药剂作用机制与实施流程,可将其作为类似工况下腐蚀治理的技术参考,并结合自身系统特点进行可行性评估与小试验证。

数字化供应链AI智能体平台规划及场景应用方案.pptx

数字化供应链AI智能体平台规划及场景应用方案.pptx

expert for sql server

请教下各位大牛,谁有expert for sql server这款软件的授权码或者是破解版本的。感谢了。 在网上有下载到一个,但是要授权或破解。 转载于:https://www.cnblogs.com/phprun/p/6609338.html...

weixin_33691817的博客 267

无刷直流电机BLDC无感+滑模观测器+转速电流双闭环PI控制(总共三个仿真模型)(Simulink仿真实现)

内容概要:本文档系统阐述了无刷直流电机(BLDC)在无位置传感器条件下的高性能控制策略,基于Simulink平台构建了三个相互关联的仿真模型,重点实现无感控制与滑模观测器(Sliding Mode Observer, SMO)相结合的转速电流双闭环PI控制系统。该资源摒弃了传统的霍尔传感器,利用滑模观测器实时估算转子的位置与转速信息,有效降低了系统成本并提升了在恶劣环境下的运行可靠性。仿真模型完整涵盖了逆变电路、空间矢量脉宽调制(SVPWM)、三相电流采样、坐标变换(Clark & Park)、PI调节器以及滑模观测器等核心模块,形成了一个闭环的、高动态响应的电机驱动系统。此外,文档还集成了模糊PID、传统PID等多种控制算法的对比仿真模型,便于研究者深入分析不同控制策略在动态响应、抗干扰能力和稳态精度方面的性能差异,为电机控制算法的研究与工程化应用提供了坚实的仿真验证基础。; 适合人群:具备自动控制理论、电机拖动原理及电力电子技术基础知识,并熟悉MATLAB/Simulink软件操作的电气工程、自动化、机电一体化等专业的高年级本科生、硕士研究生,以及从事电机驱动、新能源汽车、工业自动化等领域的研发工程师和技术人员。; 使用场景及目标:①深入学习和掌握无刷直流电机无位置传感器控制的基本原理与实现方法;②系统性地理解滑模观测器的设计思想、稳定性分析及其在转子位置与速度估计中的关键技术;③对比研究传统PI控制、模糊PID控制及滑模观测器在BLDC调速系统中的综合性能,分析其在不同工况下的鲁棒性与适应性;④为毕业设计、科研课题或工业项目中的电机控制系统开发提供可复用的仿真平台与技术参考。; 阅读建议:本资源以Simulink仿真为核心载体,建议使用者结合文档中提供的详细说明报告与参考文献,循序渐进地理解各功能模块的设计逻辑与参数整定方法。在学习过程中,务必动手运行并调试仿真模型,仔细观察并记录在不同负载突变、转速指令变化等工况下,电机的三相电流、转速响应曲线及滑模观测器输出的转子位置与速度的动态波形,从而深刻理解控制算法的内在机理。为进一步提升实践与创新能力,可尝试修改控制器参数(如PI增益、滑模增益),或替换不同的控制策略进行对比实验,探究其对系统性能的影响。

SqlServer性能优化用SQL【执行次数和性能监控】

-- 查找逻辑读取最高的查询(存储过程) SELECT TOP ( 25 )         P.name AS [SP Name] ,         Deps.total_logical_reads AS [TotalLogicalReads] ,         deps.total_logical_reads / deps.execution_count AS [AvgLogicalRea...

Lollipop_yuer的专栏 728

(报告+仿真)基于永磁同步电机的飞轮储能系统控制(网侧逆变+机侧整流)仿真

内容概要:本文针对含分布式电源的配电网在多线路故障情况下的恢复问题,提出了一种将网络重构、孤岛划分与检修进度统一纳入多时段优化框架的故障恢复模型。该模型以最小化网损和甩负荷惩罚为目标,采用混合整数二阶锥规划方法,结合虚拟流思想与二阶锥松弛技术,实现对支路投切状态、负荷保留比例、节点电压、功率分布等变量的协同优化,确保各供电区域的连通性与辐射状结构。模型在IEEE33节点系统上进行验证,支持动态调整孤岛范围,充分利用联络开关转供能力和分布式电源的黑启动能力,提升了配电网的韧性与恢复效率。同时,文章对建模细节进行了深入评述,并提出了在负荷分级、无功处理、辐射状约束精确性等方面的改进建议。; 适合人群:电力系统自动化、智能电网、配电系统优化等领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于研究含高比例分布式电源的主动配电网在故障后的快速恢复策略;②为配电网重构、孤岛划分与多时段动态恢复的联合优化提供建模范式;③作为学术论文复现与改进的基础模型,推动配电网韧性提升技术的发展。; 阅读建议:建议读者结合文中提到的参考文献与仿真代码,深入理解虚拟流建模、二阶锥松弛等关键技术的应用逻辑,并尝试在模型中引入负荷等级权重、储能系统、分布式电源出力调控等要素,以增强模型的实用性与完整性。

双闭环PWM整流器VOC控制 +SVPWM调制仿真(Simulink仿真实现)

内容概要:本文详细介绍了基于Simulink的双闭环PWM整流器电压定向控制(VOC)与空间矢量脉宽调制(SVPWM)的仿真建模方法,重点实现电流内环与电压外环协同控制策略,以实现电网侧单位功率因数运行、低谐波畸变及快速动态响应。通过构建完整的控制框图,集成锁相环(PLL)、坐标变换、PI调节器、SVPWM模块及Park反变换等关键环节,系统化展示三相PWM整流器在理想与不平衡电网条件下的高性能控制机制。该模型不仅适用于常规工况分析,还可拓展用于电网故障、功率平衡控制等复杂场景的研究,具备较高的科研价值与工程参考意义,尤其支持高水平EI期刊论文的复现与创新验证。; 适合人群:电气工程、自动化、电力电子与电力传动方向的高校本科生、研究生,以及从事新能源变换器、工业整流装置研发的工程技术人员。; 使用场景及目标:①深入理解PWM整流器双闭环控制原理与VOC控制策略的设计流程;②掌握SVPWM调制技术在Simulink环境中的实现方法与波形生成机制;③为高性能电力电子变换系统(如储能变流器、电机驱动器)的控制算法开发提供仿真验证平台;④支撑学术研究中对先进控制策略(如PR控制、重复控制、模型预测控制)的对比测试与性能评估。; 阅读建议:建议结合《电力电子技术》《自动控制理论》《电机与拖动》等基础知识进行学习,优先运行并调试仿真模型,观察dq坐标系下电流跟踪、直流母线电压稳定、网侧电流正弦性等关键波形,深入理解控制器参数整定规律,有条件者可进一步对接dSPACE或DSP控制器实现实物验证。

SqlServer 从执行计划缓存发现问题sql

注意以下sql都较复杂,在数据库中执行时间可能较长,不要执行过于频繁。 一、 隐式转换sql 版本1 -- 找到含有隐式转换且会导致index seek变为index scan的语句 –find all the plans and query which are being compared with wrong data type in queries and thus casui...

Hehuyi_In的博客 2409

无刷直流电机(BLDCM)转速电流双闭环控制、三相桥式星型全控电机研究(Simulink仿真实现)

内容概要:本文围绕无刷直流电机(BLDCM)的转速电流双闭环控制系统展开研究,基于Simulink平台构建三相桥式星型全控电机的仿真模型,系统阐述了电流环与转速环双闭环控制结构的设计原理及其在电机调速系统中的核心作用。研究重点对比了传统PID控制与模糊PID控制在动态响应速度、抗负载扰动能力及稳态精度等方面的性能差异,通过仿真验证了模糊PID控制器在提升系统鲁棒性与控制品质方面的显著优势。内容涵盖电机数学建模、PI调节器设计、PWM驱动控制、反馈信号检测与处理等关键环节,为高性能电机控制系统的分析与优化提供了完整的仿真解决方案和技术支撑。; 适合人群:自动化、电气工程、机电一体化等相关专业的本科生、研究生,以及从事电机控制、电力电子、运动控制等领域研发工作的工程师和科研人员。; 使用场景及目标:①用于高校课程设计或实验教学,帮助学生深入理解双闭环控制机制与PID参数整定方法;②为科研项目中电机控制器的设计与性能优化提供仿真验证平台;③对比分析传统PID与智能控制策略(如模糊PID)在实际系统中的控制效果,提升无刷直流电机在复杂工况下的动态与稳态性能表现。; 阅读建议:建议结合提供的Simulink仿真模型同步操作,重点关注控制器结构搭建、参数调试过程与波形分析,配合电机控制理论教材深化理解,可进一步拓展至无位置传感器控制、滑模观测器、FOC矢量控制等先进控制技术的研究与实现。

上一篇: SQL SERVER全面优化-------Expert for SQL Server 诊断系列
下一篇: 【干货】语句优化思路与流程
imJaron
博客等级 码龄11年 121粉丝 286原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值