首页 > 数据库 >Sql Server优化简述

Sql Server优化简述

时间:2024-10-25 10:24:17浏览次数:1  
标签:缓存 -- 数据库 Sql Server 简述 SQL 优化

  1. 思考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 将处理结果返回给客户端,并释放由此次操作占用的资源,如内存、锁和其他系统资源。
  • 结构图示

  1. 可优化点&分析途径

    • 可优化点

      • 慢查询:检查哪些查询需要较长时间。通过优化查询语句、存储过程、调整索引等改进查询的性能。
      • 索引的使用:检查索引的使用情况,依据具体情况通过增加、减少或修改索引来优化查询性能。
      • 数据表结构:确定数据库中哪些表包含较大的数据量,哪些表的数据量变化较快等。通过对表进行分区,压缩、分离、归档,垂直拆分或水平拆分等手段以优化性能。
      • 内存和I/O利用率:检查数据库使用系统内存和I/O资源情况。通过调整缓存设置和I/O优化来确保数据库获得足够的内存和I/O资源,从而提高性能。
      • 死锁和阻塞:检查数据库中是否发生了死锁和阻塞问题。通过优化事务和并发控制来避免或减少死锁和阻塞,并提高性能。
    • 分析途径

      • SQL Profiler:监视和分析数据库服务器上执行的所有操作。
      • Execution Plan:显示查询的执行计划,包括查询优化、如何处理查询、使用哪些索引、如何联接表等信息。
      • DMVs:系统视图,可以提供实时性能信息,如正在运行的查询、锁定情况、缓存使用情况。
      • Performance Dashboard Reports:基于DMVs的扩展工具,输出CPU 使用率、内存使用率、I/O 操作次数、缺失索引等,图表快速了解数据库的整体性能状况。
      • Extended Events:捕获和分析数据库服务器的事件,如对表的插入、更新和删除操作、死锁等。

标签:缓存,--,数据库,Sql,Server,简述,SQL,优化
From: https://www.cnblogs.com/chenxuhui/p/18501963

相关文章

  • Keepalived+Mysql实现高可用配置总结
    通过本文,大家将学习到以下相关知识内容:1、什么是高可用服务2、Keepalived简介3、Keepalived常见应用场景4、Keepalived高可用故障切换原理介绍5、VRRP协议介绍6、配置实现Keepalived监控Mysql7、Keepalived配置文件介绍8、Keepalived常见问题列举一、什么是高可用服务......
  • 宝塔安装mysql5.6提示内存不足1g
    增加内存:购买或升级服务器配置,确保至少1GB以上的内存。尝试在设置中增加分配给该虚拟机的内存。优化MySQL配置:编辑MySQL的配置文件(通常位于/etc/my.cnf或/etc/mysql/my.cnf)。减少MySQL的内存使用,例如调整以下参数:[mysqld]innodb_buffer_pool_size=128Mkey_buf......
  • windows中mysql遇到的一些小问题
    windows中mysql的一些常见问题初始化时指定defaults-files配置文件初始化失败#windows中使用cmd操作mysql时注意cmd命令自带的编码格式是gbk编码,所以在cmd下操作mysql命令可能回出现问题,例如:初始化mysqld--initialize--defaults-file="配置文件"时遇到系统库初始化失败的情......
  • JSON日志处理 | 基于SparkSql实现
    目录0 主要JSON处理函数1JSON处理函数使用2案例分析3小结0 主要JSON处理函数get_json_object:提取单个JSON字段json_tuple:同时提取多个JSON字段from_json:JSON字符串转结构化数据to_json:结构化数据转JSON字符串schema_of_json:推断JSONs......
  • 使用mysqlbinlog 备份 binlog日志文件
    使用mysqlbinlog备份二进制日志文件默认情况下,mysqlbinlog读取二进制日志文件并以文本格式显示其内容。这使您能够更轻松地检查文件中的事件并重新执行它们(例如,通过将输出用作mysql的输入)。mysqlbinlog可以直接从本地文件系统读取日志文件,或者,--read-from-remote-server它可......
  • 【源码】Sharding-JDBC源码分析之Sql解析的原理
     Sharding-JDBC系列1、Sharding-JDBC分库分表的基本使用2、Sharding-JDBC分库分表之SpringBoot分片策略3、Sharding-JDBC分库分表之SpringBoot主从配置4、SpringBoot集成Sharding-JDBC-5.3.0分库分表5、SpringBoot集成Sharding-JDBC-5.3.0实现按月动态建表分表6、【源码......
  • SQLite 数据库如何多行数据连接成字符串
    在使用SQLite数据库进行数据处理时,常常会遇到需要将多行数据连接成一个字符串的需求。举例来说,假设我们有一个存储用户名的表,想将这些用户名用逗号分隔组合成一个字符串,以便展示或进一步处理。SQLite本身不像某些其他数据库系统(如MySQL、PostgreSQL)那样原生支持直接的字符串聚......
  • 在 Mac 上有什么好的打开 .sqlite 或者 .db 数据库文件的软件
    在Mac上好的打开.sqlite或者.db数据库文件的软件有:1.DBBrowserforSQLite;2.SQLiteStudio;3.Base;4.PawSQLitePawset;5.NavicatforSQLite;6.DBeaver。DBBrowserforSQLite是一款免费、开源的SQLite数据库浏览器,适用于Mac、Windows和Linux系统。在Mac上打开.sql......
  • 织梦重置mysql数据库密码忘记_织梦cms管理员密码忘记了怎么重置找回?
    方法一:通过phpMyAdmin登录数据库,在dede_admin表中重置密码登录数据库管理界面登录网站所在的虚拟主机或服务器,进入数据库管理(phpMyAdmin)界面。选择网站所用的MySQL数据库。找到并浏览dede_admin表在数据库中找到dede_admin表。点击表名,选择“浏览”选项,进入表数据......
  • 在 Windows Server 2008 R2 中,您可以使用批处理(.bat)文件来查询 Win32_NetworkAdapterC
    在WindowsServer2008R2中,Win32_NetworkAdapterConfiguration类是Windows管理工具(WMI)基础结构的一部分。它提供了有关服务器上网络适配器配置的详细信息。您可以使用此类查询各种网络设置,例如IP地址、子网掩码、DNS服务器和DHCP设置。Win32_NetworkAdapterConfigurat......