学习笔记(十一)——数据库的索引碎片、计划缓存、统计信息
1.索引碎片
数据库存储本身是无序的,建立了聚集索引,会按照聚集索引物理顺序存入硬盘。既键值的逻辑顺序决定了表中相应行的物理顺序
而且在大多数的情况下,数据库写入频率远低于读取频率,索引的存在为了读取速度牺牲写入速度(页 为最小单位 8kb,区 物理连续的页(8页)的集合)
其内部碎片 数据库页内部产生的碎片,外部反之。
查询碎片情况:
- dbcc showcontig:四部分对象名,【索引名】|【索引id】
- dbcc showcontig:当前库对象id,【索引名】|【索引id】
- sys.dm_db_index_physical_stats:数据库id,对象id,索引id,分区id,扫描模式 ‘
实例:
显示数据库里所有索引的碎片信息
SET NOCOUNT ON
USE pubs
DBCC SHOWCONTIG WITH ALL_INDEXES
GO
显示指定表的所有索引的碎片信息
SET NOCOUNT ONUSE pubs
DBCC SHOWCONTIG (authors) WITH ALL_INDEXES
GO
显示指定索引的碎片信息
SET NOCOUNT ON
USE pubs
DBCC SHOWCONTIG (authors,aunmind)
GO
2.计划缓存
平时所写的SQL语句本质只是获取数据的逻辑,而不是获取数据的物理路径。当我们写的SQL语句传到SQL Server的时候,查询分析器会将语句依次进行解析(Parse)、绑定(Bind)、查询优化(Optimization,有时候也被称为简化)、执行(Execution)。除去执行步骤外,前三个步骤之后就生成了执行计划,也就是SQL Server按照该计划获取物理数据方式,最后执行步骤按照执行计划执行查询从而获得结果。但查询优化器不是本篇的重点,本篇文章主要讲述查询优化器在生成执行计划之后,缓存执行计划的相关机制以及常见问题。
1: SELECT * 2: FROM A INNER JOIN B ON a.a=b.b3: INNER JOIN C ON c.c=a.a
实例:
通过动态管理视图和函数,查看当前缓存的所有执行计划SELECT/*PlanCache*/ ISNULL(QS.execution_count,0) AS ExecutionCount,CP.usecounts AS LookupCount,CP.objtype AS ObjectType,ST.text AS Sql ,QP.query_plan AS QueryPlanFROM sys.dm_exec_cached_plans AS CPLEFT JOIN sys.dm_exec_query_stats AS QS ON CP.plan_handle=QS.plan_handleCROSS APPLY sys.dm_exec_sql_text(CP.plan_handle) AS STCROSS APPLY sys.dm_exec_query_plan(CP.plan_handle) AS QPWHERE ST.text NOT LIKE 'SELECT/*PlanCache*/%'ORDER BY QS.last_execution_time ASC;
3.统计信息
Sqlserver 查询是基于开销查询的,在首次生成执行计划时,是基于多阶段的分析优化才确定出较好的执行计划。而这些开销的基数估计,是根据统计信息来确定的。统计信息其实就是对表的各个字段的总体数据进行分段分布,数据库默认都会自动维护。
表和视图都有统计信息,统计信息对象是根据索引或表列的列表创建的。当某列第一次最为条件查询时,将创建单列的统计信息。当创建索引时,将创建同名的统计信息。索引中,统计信息只统计首列,因此索引除了按首列排序存储数据外,其统计信息也是按首列计算统计的,所以索引设置时定义的第一列非常重要。每个统计信息对象都在包含一个或多个表列的列表上创建,并且包括显示值在第一列中的分布的直方图。
实例:
SELECT O.* FROM tb_Order2 AS O WHERE O.CustomerLastName='Adams';
转载于:https://www.cnblogs.com/Angular-JS/p/8028732.html
学习笔记(十一)——数据库的索引碎片、计划缓存、统计信息相关推荐
- 家族关系查询系统程序设计算法思路_【学习笔记】数据库基础 - 查询优化
目录 什么是数据库查询优化? 影响查询优化的因素 优化策略概述 查询优化的总体思路 语义优化 -- 内容等价性 语法优化(逻辑层优化)---语法等价性 执行优化(物理层优化) 查询优化在DBMS中的位 ...
- Apache Nutch 1.3 学习笔记十一(页面评分机制 LinkRank 介绍)
下面是Google翻译的http://wiki.apache.org/nutch/NewScoring内容,是关于Nutch 新的链接分数算法的说明,有点类似于Google的PageRank,这里有其 ...
- 吴恩达《机器学习》学习笔记十一——神经网络代码
吴恩达<机器学习>学习笔记十一--神经网络代码 数据准备 神经网络结构与代价函数· 初始化设置 反向传播算法 训练网络与验证 课程链接:https://www.bilibili.com/v ...
- mysql 学习笔记--存储引擎、索引、sq优化
全面的 mysql学习笔记–通用语法.函数.数据类型.约束.多表查询.事务 全面的 mysql学习笔记–存储引擎.索引.sql优化 全面的mysql学习笔记–视图/存储过程/触发器.锁.InnoDB引 ...
- Apache Nutch 1.3 学习笔记十一(页面评分机制 OPIC)
1. Nutch 1.3 的页面评分机制 Nutch1.3目前默认还是使用OPIC作为其网页分数算法,但其之后,已经引入了PageRank-like算法,以弥补OPIC算法的不足,目前OPIC算法还是 ...
- oracle protocol=beq 不可用,学习笔记:Oracle数据库坏块 深入研究obj$坏块导致exp/expdp不能执行原因...
天萃荷净 深入研究Oracle坏块obj$导致exp/expdp不能执行导出的原因 上篇(案例:Oracle出现obj$坏块exp/expdp导出不能导出的解决办法ORA-01578 ORA-0111 ...
- 吴恩达《机器学习》学习笔记十一——应用机器学习的建议
吴恩达<机器学习>学习笔记十一--应用机器学习的建议 一.训练完模型后下一步要做什么 二.评估算法与模型选择 1.训练集与测试集 2.训练/测试步骤 3.模型选择 4.数据集新的划分--验 ...
- ROS学习笔记十一:ROS中数据的记录与重放
ROS学习笔记十一:ROS中数据的记录与重放 本节主要介绍如何记录一个正在运行的ROS系统中的数据,然后在一个运行的系统中根据记录文件重新产生和记录时类似的运动情况.本例子还是以小海龟例程为例. 记录 ...
- Vue学习笔记(十一)
1.Vue学习笔记(十一) 文章目录 1.Vue学习笔记(十一) 1.1Vue_配置代理_方式 1.1.0演示问题 1.1.1运行node server1 1.1.2运行node server2 1. ...
- 个人学习笔记 ——【技术美术百人计划】图形 2.1 色彩空间介绍
个人学习笔记 --[技术美术百人计划]图形 2.1 色彩空间介绍 图形 2.1 色彩空间介绍 个人学习笔记 --[技术美术百人计划]图形 2.1 色彩空间介绍 图形 2.1 色彩空间介绍 一.色彩发送 ...
最新文章
- 通信产业5G迭代,万亿机遇一触即发
- java implements interface_Java 接口 interface implements
- 【转】造成segment fault,产生core dump的可能原因
- android USB host编程
- spring条件注解有哪些_Spring4有条件
- Bootstrap公司年会抽奖活动代码
- unity中绘制战争迷雾
- c++矩阵库eigen的使用方法
- 解析rtcm32报文工具_rtcm数据格式技术分享
- 力矩目标值 fTorque计算(伺服力矩控制模式)
- 服务器自带软件怎么样卸载,告别卸载软件难 四大方法轻松搞定
- Python Day 67 Dango框架图解(总结)、Wsgiref和uwsgi、前后端传输数据的编码格式、From表单和Ajax方式在前端往后端发送文件、补充一下页面清缓存...
- php获取指定日期的节假日信息
- 蜻蜓FM语音下载(qingtingdown)
- 前端优化-前端性能优化
- DL之LSTM/GRU/CNN:基于tensorflow框架分别利用LSTM/GRU、CNN算法对上海最高气温(数据归一化+构造有监督数据集)实现回归预测案例
- 开源免费的图片压缩软件,从50M到50K,极力安利
- 1.21嵌入式帅国豪
- 世界上最遥远的距离是我在百度大厦,你在百度新大厦
- 为啥我学的python需要下载pycharm_python学习一定用pycharm吗?
热门文章
- JVM004_字节码指令简介
- JAVA中自己写的util中的chop,Java StringUtils.chop方法代碼示例
- (BFS)Meteor Shower (poj3669)
- java 传递bean_Java:如何将值从类/ bean传递给servlet
- mysql-修改密码(error-1290 (HY000): The MySQL server is running with the --skip-grant-tables option so)
- 基于java Springboot实现课程评分系统设计和实现
- java怎么设置多个输入_Java中从键盘输入多个整数的方法
- Spring Boot html页面解析之jsoup
- c语言 bool_程序的数据要放到哪里呢?|C语言第二篇
- passive模式 tcp_FTP主动模式和被动模式的比较