热门标签 | 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个月不用整理


推荐阅读
  • 本文介绍了如何使用Power Design(PD)和SQL Server进行数据库反向工程的方法。通过创建数据源、选择要反向工程的数据表,PD可以生成物理模型,进而生成所需的概念模型。该方法适用于SQL Server数据库,对于其他数据库是否适用尚不确定。详细步骤和操作说明可参考本文内容。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
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社区 版权所有