热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Sqlserver(优化Sqlserver数据库)页分裂和填充因子

页分裂概念不管是聚集索引还是非聚集索引我们在插入数据后难免的会对数据增删改那么我们涉及到一个问题我们建立的索引会因为数据的变动而变得混乱比如下面聚集索引如果我insert了

页分裂 概念

不管是聚集索引 还是非聚集索引 

我们在插入数据后 难免的会对数据增删改 那么我们涉及到一个问题 

我们建立的索引会因为数据的变动 而变得混乱

比如 下面 聚集索引 如果我insert 了100条O 和P开头的数据  page120 存不下了 数据行满了 只能新建一个131页 来存储 

这时候 每一次查询 数据差120页的时候 会跳到131页 查完在跳回来130页 这样 数据操作多了  数据查询也就卡了 因为它不连续了 它会到处去跳页查询 这就是页分裂

当然非聚集也是一个到底 不过它跳转的索引页

那么怎么看数据页分裂情况那?

DBCC showcontig(表名,索引名)

我们看一下

日语的是我们公司现用的数据量最多的表  汉语的是拿来翻译的

首先我没看

扫描页数: 就是数据表一共存储数据用了多少了页 34099页

扫描区 :就是存储页用了多少个区 8页为一个区 用了4349个区

每个区平均页数 是7.8 这个就是每个区平均多少页

扫描的密度:如果页都是连着的是 就100% 咱的是是12.50 % 越低说明查询数据的时候跳转的越频繁

逻辑扫描碎片: 99.24 就是页分裂 已经达到了 99.24% 基本到处都是碎页

区碎片 :区之间跳转为62% 区也是不连续的



解决

碎片整理

DBCC indexdefrag(数据库名,表名,索引名)

执行以下

扫描 33281页 移动 23776 移出10237 我们再看一下数据

数据都很好了~ 扫描的密度 达到99% 那么查询起来就很快了

定期整理索引  是一个好习惯



填充因子

还有一个办法就是定期重建索引 并增加填充因子

填充因子的概念就是 因为数据增删改 会引起页裂变  那么原因是页被数据占满了 在创建的时候就满了

那么我们在创建页的时候 能不能给位置预留出来 这样数据插入的时候就会降低页分裂

图里是预留了百分之50  这样的话 页会增多 以前50页能存满的数据要 100页

怎么创建填充因子那

语句

Create nonclustered index non_name on TS(name)
with drop_existing,fillfactor = 65

这样 打个比方 如果一个库一直在增删改 一个月要整理一次索引 用了创建索引和填充因子 至少3个月不用整理


推荐阅读
  • mysql数据库json类型数据,sql server json数据类型
    mysql数据库json类型数据,sql server json数据类型 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • JUnit下的测试和suite
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 本文作为《WM平台上使用Sybase Anywhere 11》系列的第二篇,将继续探讨在Windows Mobile (WM) 系统中如何高效地操作Sybase Anywhere 11数据库。继上一篇关于安装与基本测试的文章之后,本篇将深入讲解数据库的具体操作方法。 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • 本文介绍了如何在两个Oracle数据库(假设为数据库A和数据库B)之间设置DBLink,以便能够从数据库A中直接访问和操作数据库B中的数据。文章详细描述了创建DBLink前的必要准备步骤以及具体的创建方法。 ... [详细]
  • spring(22)JdbcTemplate
    2019独角兽企业重金招聘Python工程师标准###1.导入jar包,必须jar包:c3p0、mysql-connector、beans、con ... [详细]
  • 七大策略降低云上MySQL成本
    在全球经济放缓和通胀压力下,降低云环境中MySQL数据库的运行成本成为企业关注的重点。本文提供了一系列实用技巧,旨在帮助企业有效控制成本,同时保持高效运作。 ... [详细]
  • 本文介绍了如何通过安装 sqlacodegen 和 pymysql 来根据现有的 MySQL 数据库自动生成 ORM 的模型文件(model.py)。此方法适用于需要快速搭建项目模型层的情况。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • MySQL InnoDB 存储引擎索引机制详解
    本文深入探讨了MySQL InnoDB存储引擎中的索引技术,包括索引的基本概念、数据结构与算法、B+树的特性及其在数据库中的应用,以及索引优化策略。 ... [详细]
  • mysql 授权!!
    为什么80%的码农都做不了架构师?MySQL的权限系统围绕着两个概念:认证-确定用户是否允许连接数据库服务器授权-确定用户是否拥有足够的权限执 ... [详细]
author-avatar
处男是你_909
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有