【SQL】关于SQL Server的性能优化——基础内容

本文探讨了SQL Server性能调优的关键点,包括避免误区,如仅依赖硬件或过度依赖索引。强调了数据库结构设计、事务隔离、T-SQL编写和硬件资源的影响。详细分析了执行计划,如运算符类型及其对性能的影响,提供了一种理解执行计划和优化SQL语句的方法。
摘要由CSDN通过智能技术生成

【一些网课后的笔记与后续学习的思考】

平时我们觉得查数据很慢,这个慢是什么意思?
就是在现有资源达到最大吞吐量的前提下,系统不能满足合理的数据请求的一些表现。



一、调优时,可以从以下五点考虑

① 最小化SQL相应时间
② 合理地增加吞吐量
③ 减少网络延迟
④ 优化IO
⑤ 减少最小化



二、调优要达到的目标

使系统能有协调、平衡地运作,合理地响应外部及内部请求,实现资源利用的最大化。



三、性能调优的误区

1、增加硬件就能缓解性能问题

增加硬件或许会让系统性能更好,但没有解决真正的问题所在

2、只要数据库性能好就没问题

不要把很多本该在应用层实现的逻辑放到数据库实现,以此希望优化数据库就能解决性能问题

3、任何的数据库性能问题都可以通过索引解决

性能问题的解决思路:
检查日志,发现问题所在——优化SQL语句或修改表结构——最后才是考虑建立索引

4、编码过于激进或极端

任何功能都有自己的场景,要根据自己的企业形式、开发模式和技术栈去综合考虑,切忌一刀切(比如:要么全部使用存储过程实现功能,要么完全不允许使用存储过程)



四、影响性能的常见因素:

1、数据库结构的设计

①了解业务、满足业务,性能只是业务之外的附属属性
②优先考虑第三范式设计(字段冗余可以避免过多的表关联,但是字段冗余会让维护成本提升。这时就需要对维护成本和过
③多关联查询影响性能进行权衡)
④表关联要尽可能地少
⑤坚持最小原则:使用尽可能小的字段长度
⑥在适当的地方使用约束:但是,安全方面还是最重要的,千万不要为了性能而放弃对安全的追求!因为我们并不需要极致的性能,而是性能在一定范围内可以承受就可以了。

2、事务和隔离的级别

3、T-SQL的编写

数据库性能的优化,基本都是针对SQL语句的优化。编写健壮的T-SQL语句,让我们的代码更稳定,更高效地执行
①编写语句前,要完全了解业务的需求,知道表的用途和用法,明确查询目的
②只查询需要的字段,避免返回所有字段(select * from )
③限定好查询地结果集(select top 100 …)
④使用有效的索引,确保业务需要用到的过滤字段能使用索引,是否有必要在字段上添加索引
(当需要对数据进行过滤时,应当优先考虑使用索引字段。要是有多个索引字段可供选择,优先选择筛选率较高、重复率较低的索引字段作为过滤条件)
⑤不要对有索引的字段使用计算、函数等运算符,因为会导致查询优化器无法使用索引进行数据的检索,从而导致表触发扫描操作
⑥order by字句的性能,取决于参与排序操作的数据量大小。
(排序操作会在数据筛选完以后,对筛选出的结果集进行排序。因此对需要进行排序的操作,应将排序的操作控制在结果集和数据量都尽量小的查询中,避免不必要的CPU消耗。不然,当排序操作超过可以分配的内存大小时,就会把排序的中间数据放在TempDb,增加I/O操作,导致性能大大下降)
⑦尽量使用简单的SQL语句来实现业务功能
简单的SQL语句:只关联2-4个表、单表查询、只有2-3个过滤条件,并且有一个过滤条件明确可以使用索引查找操作

4、硬件资源



五、执行计划的分析

在SQL优化中,都是以SQL语句的执行计划中的开销去判断最优的语句。

SQL语句的处理流程如图示:
在这里插入图片描述


1、T-SQL语句

没啥好说的,就是你的SQL语句

2、语法分析

编译语法,检验语句和语法是否合规、正确,然后把T-SQL语句转化为逻辑查询树(树里包含各种逻辑代数运算:inner join…)

<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值