相信不少的朋友,无论是做开发、架构的,还是DBA等,都经常听说“调优”这个词。说起“调优”,可能会让很多技术人员心头激情澎湃,也可能会让很多人感觉苦恼,不知道如何入手。当然,也有很多人对此不屑一顾,因为并不是每个人做的项目都对性能要求很高。

在主流的企业级开发和互联网应用中,数据库的重要性是不言而喻的,而数据库的性能对于整个系统的性能而言也是至关重要的,这里无庸赘述。

sqlserver的性能调优,其实是个很宽广的话题。坦白讲,想从概念到实践的完全讲清楚并掌握透彻,可能至少需要几本书的内容。本文只是一个最基本的概念总结,希望读者能对此有新的认识,在调优路上有所帮助。如果感兴趣的朋友很多,后续可能会分享一些实战经验和技巧。

这里提醒大家一句:不要轻易相信网上流传的那些“sql优化金句”、"sql优化偏方",自己多实践几遍,才是硬道理。

首先搞清楚,性能调优的目标

从最直观,最常见的角度来讲,主要包含如下两点:

优化响应时间

何为“优化响应时间” 呢?说的通俗点,就是经过调优后,执行查询、更新等操作的时候,数据库的反应速度更快,花费的时间更少。

比较常见的,以前执行某条sql查询语句,可能需要3秒钟,加了索引后,1秒钟不到就搞定了。加索引,这也是最典型最"廉价"的优化手段。

在做“优化响应时间”时,需要了解:用户环境,程序,环境,用户和数据等方面的知识。

优化吞吐量

说起“吞吐量”,那就要想到“并发”了。其实就是“同时处理请求”的能力。如何提高数据库"抗并发"的能力呢?首先要了解sqlserver是如何访问数据的,如何控制并发访问的(事务隔离级别,锁等),如何与底层操作系统进行交互的,还要了解“多线程、进程”等方面的知识。

比较常见的手段,通过降低事务隔离级别(一定程度地牺牲数据一致性等),这种“软手段”通常会起到很好的效果。其次,单台DB Server达到一定瓶颈后,可以通过“集群”等手段,实现读写请求的“负载均衡”,来达到“抗并发”的目的(降低单机的QPS和TPS),效果也是立竿见影的。

性能调优的方法论--迭代

基线

通俗点讲,就是用来计算或者比较的标准。通常以当前系统性能为基准,或者以匹配系统性能为基准。指各个组件发挥到最大。

成本

用来升级,更换等提升组件性能时的时间,金钱,劳力等等。

基线的定义,以用户期望值为基础,可能会涉及以下因素

以往的经验,应用程序的基准,业界的标准,以前版本的情况

基线的表示方式,包括:每秒完成的批处理(作业),每秒传输量,每秒数据量,磁盘扫描时间等等

分析影响性能的因素:

数据库设计(是否复合范式,是否合理归档、分区、分表等)

软件系统 (操作系统优化,数据库系统的配置,资源的规划和监控等)

硬件基础架构 (设备规格,硬件性能,负载均衡,容灾等)

Sql语句的写法、索引和统计信息,事务和锁,应用程序访问代码(连接过多、频繁开关等)

性能调优的顺序:

DETECT 方法

发现问题、探究原因、提供可能的解决方法、执行最有可能的解决方案、确认是否成功解决(如果没有,重复前面的步骤)、完成其余的工作

DETECT方法论 中的这些工作细分起来,会有很多,这里暂时不做过多描述。具体调优的步骤、性能调优工具的使用,有机会再分享。

本文其实是笔者3年前所写,难免有误,请谅解!

sqlserver mysql性能优化_sqlserver性能调优第一步相关推荐

  1. Spark性能优化:Shuffle调优篇

    Spark性能优化:Shuffle调优篇 一.调优概述 大多数Spark作业的性能主要就是消耗在了shuffle环节,因为该环节包含了大量的磁盘IO.序列化.网络数据传输等操作.因此,如果要让作业的性 ...

  2. GPU性能优化之CUDA调优指南

    GPU性能优化之CUDA调优指南 GPU性能优化之CUDA调优指南 1 整体性能优化策略 2 最大化利用率 2.1 应用程序层次 2.2 设备层次 2.3 多处理器层次 2.3.1 占用率计算 3 最 ...

  3. Spark性能优化之-开发调优

    文章目录 概述: 原则一:避免创建重复的RDD 原则二:尽可能复用同一个RDD 原则三:对多次使用的RDD进行持久化 Spark的持久化级别 如何选择一种最合适的持久化策略 原则四:尽量避免使用shu ...

  4. Spark性能优化:资源调优篇

    在开发完Spark作业之后,就该为作业配置合适的资源了.Spark的资源参数,基本都可以在spark-submit命令中作为参数设置.很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置 ...

  5. Spark性能优化之-资源调优

    文章目录 概述 Spark作业基本运行原理 资源参数调优 num-executors executor-memory executor-cores driver-memory spark.defaul ...

  6. Spark性能优化之-shuffle调优

    文章目录 概述 ShuffleManager发展概述 HashShuffleManager运行原理 未经优化的HashShuffleManager 优化后的HashShuffleManager Sor ...

  7. Android性能优化之虚拟机调优

    介绍完 深入学习Android:虚拟机&运行时 之后,很多小伙伴问我,你描述的这些知识结构看起来艰深晦涩高大上,实际工作中能有多大用途呢?今天我就简单举个例子. 众所周知,我们的Android ...

  8. 服务器内存一般多大_性能调优第一步,搞定服务器硬件选型

    服务器选型是Linux性能调优的第一步. 无论你是自行购买服务器进行托管,还是租用服务器,购买云主机,都要面临的一个问题:选择服务器的硬件配置. 我们需要从不同角度.多个方面来决定选择一台什么样的服务 ...

  9. mysql 字符串索引 优化_MySQL性能优化之索引调优实战

    索引失效场景或使用注意事项 a.索引无法存储null值,所以建议都给默认值 b.如果条件中有or,即使使用了索引条件也不起作用,所以尽量少用or 如果想使用or,又让索引生效,只能将or的每个列上加上 ...

最新文章

  1. 难忘的一天——装操作系统(二)
  2. 【Python之路】第二篇--初识Python
  3. .git文件夹_Git服务器安装- windows
  4. Java虚拟机 —— 类的加载机制
  5. 数据结构源码笔记(C语言):链接栈
  6. Go语言中如何进行测试
  7. web服务高级使用 Samba共享
  8. 【TCP/IP详解 卷一:协议】第十八章 TCP连接 的建立与终止 (2)其余内容
  9. 海量数据库解决方案2011030101
  10. 时间管理,从洗碗开始
  11. 1500度的近视能学计算机吗,1500度近视考驾照,近视多少度不能考驾照
  12. 浅谈String str = 和 new String()的区别
  13. PHP语言、浏览器、操作系统、IP、地理位置、ISP
  14. Oracle查询优化改写技巧与案例总结四
  15. php正则表达式 w3c,正则表达式 – 匹配规则 | w3cschool菜鸟教程
  16. 无线路由器的DNS服务器怎么设置,无线路由器DNS的设置方法
  17. JAVA跑步计时器app_坚持跑步神器app
  18. 致远oa系统报价_致远oa价格(致远oa系统登录)
  19. 没有产权证的车库能不能随时拆掉
  20. Jira 和 国内替代品TAPD的对比

热门文章

  1. mysql 地理空间支持_MySQL数据类型-地理空间数据类型
  2. 【三】3D匹配Matching之可变形曲面匹配Deformable Surface—get_deformable_surface_matching_result()算子
  3. 指定类型和坐标系的海报合成图片vue-canvas-poster
  4. SwiftUI 微信登录实现(SwiftUI最新版)仅适用获取不到wxcode
  5. 大师级设计师才会的这个CAD技巧,你会吗?
  6. Springboot毕设项目莱昂纳多作品集推荐系统jcpqz(java+VUE+Mybatis+Maven+Mysql)
  7. 硅谷真假u盘测试软件,真正一键装机,U盘装机“大师”名不虚传
  8. linux网络95值工具,Linux下网络故障排查工具之ping|traceroute和tcptraceroute|mtr工具
  9. 约瑟夫问题(出圈问题)
  10. 【大数据】常用大数据工具介绍