Sql Server优化简述
- 思考sql server中执行一条sql发生了什么?
-
基本结构
- 数据库引擎 (Database Engine):管理数据库、处理请求、管理数据缓存。
- SQL Server 数据库管理工具(SSMS):连接 并管理SQL Server 数据库的client工具。
- SQL Server Integration Services(SSIS):数据的导入、导出和变换的组件。
- SQL Server Analysis Services(SSAS):提供 OLAP 功能,包括多维数据分析、数据挖掘。
- SQL Server Reporting Services (SSRS):用于生成各种类型报表的组件。
- sql语言:通用关系型脚本语言,其组成为DML、DDL、DCL、TCL、DQL
-
执行过程
Open --> SQL 语句 --> 语法分析 --> 缓存处理 --> ↖ ↓ └-------------优化处理 --> 数据访问 --> 数据处理 --> 数据返回
- 语法分析:SQL Server 首先对要执行的 SQL 语句进行语法检查和解析,确认 SQL 语句的正确性和可执行性
- 缓存处理:如果 SQL 语句之前已经被执行过,则 SQL Server 会直接从缓存中获取执行计划,以加快执行的速度
- 解析和优化:如果 SQL 语句没有被缓存,则 SQL Server 会进行查询优化,主要包括生成多个执行计划、选择一个最优的执行计划以及缓存执行计划等过程
- 数据访问:执行计划得到确认后,SQL Server 就调用相应的数据访问接口,从磁盘或内存中获取需要的数据
- 数据处理:SQL Server 对获取的数据进行处理、排序、分组或统计等操作,以得到最终结果集
- 数据返回:最后,SQL Server 将处理结果返回给客户端,并释放由此次操作占用的资源,如内存、锁和其他系统资源。
-
结构图示
-
可优化点&分析途径
-
可优化点:
- 慢查询:检查哪些查询需要较长时间。通过优化查询语句、存储过程、调整索引等改进查询的性能。
- 索引的使用:检查索引的使用情况,依据具体情况通过增加、减少或修改索引来优化查询性能。
- 数据表结构:确定数据库中哪些表包含较大的数据量,哪些表的数据量变化较快等。通过对表进行分区,压缩、分离、归档,垂直拆分或水平拆分等手段以优化性能。
- 内存和I/O利用率:检查数据库使用系统内存和I/O资源情况。通过调整缓存设置和I/O优化来确保数据库获得足够的内存和I/O资源,从而提高性能。
- 死锁和阻塞:检查数据库中是否发生了死锁和阻塞问题。通过优化事务和并发控制来避免或减少死锁和阻塞,并提高性能。
-
分析途径:
- SQL Profiler:监视和分析数据库服务器上执行的所有操作。
- Execution Plan:显示查询的执行计划,包括查询优化、如何处理查询、使用哪些索引、如何联接表等信息。
- DMVs:系统视图,可以提供实时性能信息,如正在运行的查询、锁定情况、缓存使用情况。
- Performance Dashboard Reports:基于DMVs的扩展工具,输出CPU 使用率、内存使用率、I/O 操作次数、缺失索引等,图表快速了解数据库的整体性能状况。
- Extended Events:捕获和分析数据库服务器的事件,如对表的插入、更新和删除操作、死锁等。
-