索引

sql server 索引阐述系列七 索引填充因子与碎片

拥有回忆 提交于 2020-03-09 04:24:37
原文: sql server 索引阐述系列七 索引填充因子与碎片 一.概述     索引填充因子作用: 提供填充因子选项是为了优化索引数据存储和性能。 当创建或重新生成索引时,填充因子的值可确定每个叶级页上要填充数据的空间百分比,以便在每一页上保留一些剩余存储空间作为以后扩展索引的可用空间,例如:指定填充因子的值为 80 表示每个叶级页上将有 20% 的空间保留为空,以便随着向基础表中添加数据而为扩展索引提供空间。   填充因子的值是 1 到 100 之间的百分比,服务器范围的默认值为 0,这表示将完全填充叶级页。  1.1 页拆分现象    根据数据的查询和修改的比例, 正确选择填充因子值,可提供足够的空间,以便随着向基础表中添加数据而扩展索引,从而降低页拆分的可能性。如果向已满的索引页添加新行(新行位置根据键排序规则,可以是页中任意行位置), 数据库引擎将把大约一半的行移到新页中,以便为该新行腾出空间。 这种重组称为页拆分。 页拆分可为新记录腾出空间,但是执行页拆分可能需要花费一定的时间,此操作会消耗大量资源。 此外,它还可能造成碎片,从而导致 I/O 操作增加。 如果经常发生页拆分(可能过sys.dm_db_index_physical_stats 来查看页拆分情况),可通过使用新的或现有的填充因子值来重新生成索引,从而重新分发数据。   填充值设置过低: 优点是

sql server 索引阐述系列七 索引填充因子与碎片

给你一囗甜甜゛ 提交于 2020-03-09 04:22:42
一.概述     索引填充因子作用: 提供填充因子选项是为了优化索引数据存储和性能。 当创建或重新生成索引时,填充因子的值可确定每个叶级页上要填充数据的空间百分比,以便在每一页上保留一些剩余存储空间作为以后扩展索引的可用空间,例如:指定填充因子的值为 80 表示每个叶级页上将有 20% 的空间保留为空,以便随着向基础表中添加数据而为扩展索引提供空间。   填充因子的值是 1 到 100 之间的百分比,服务器范围的默认值为 0,这表示将完全填充叶级页。  1.1 页拆分现象    根据数据的查询和修改的比例, 正确选择填充因子值,可提供足够的空间,以便随着向基础表中添加数据而扩展索引,从而降低页拆分的可能性。如果向已满的索引页添加新行(新行位置根据键排序规则,可以是页中任意行位置), 数据库引擎将把大约一半的行移到新页中,以便为该新行腾出空间。 这种重组称为页拆分。 页拆分可为新记录腾出空间,但是执行页拆分可能需要花费一定的时间,此操作会消耗大量资源。 此外,它还可能造成碎片,从而导致 I/O 操作增加。 如果经常发生页拆分(可能过sys.dm_db_index_physical_stats 来查看页拆分情况),可通过使用新的或现有的填充因子值来重新生成索引,从而重新分发数据。   填充值设置过低: 优点是 插入或修改时降低页的拆分次数。缺点是 会使索引需要更多的存储空间

SQL Server 索引的图形界面操作 <十二>

a 夏天 提交于 2020-03-09 04:17:48
一、索引的图形界面操作   SQL Server非常强大的就是图形界面操作。关于索引方面也一样那么强大,很多操作比如说重建索引啊,查看各种统计信息啊,都能够通过图形界面快速查看和操作,下面来看看SQL Server索引方面的GUI操作。                            二、索引统计信息的图形界面操作    来源: https://www.cnblogs.com/wxm0827/p/11167052.html

【译】索引进阶(十七): SQL SERVER索引最佳实践

坚强是说给别人听的谎言 提交于 2020-03-09 03:02:27
【译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正】 原文链接: 传送门 。 在本章我们给出一些建议:贯穿本系列我们提取出了十四条基本指南,这些基本的指南将会帮助你为你的数据库创建最佳的索引架构。 这些指南的格式借鉴了 “框架设计指导”,Krzysztof Cwalina 和Brad Abramszai为.NET 程序开发的标准化方面做了优秀的工作,且他们的文章已由Addison Wesley.出版发行。每一条建议都由如下词语定义:“DO”, 'CONSIDER', "AVOID", "DO NOT", 它们表示了如下的意义: DO: 这条建议应该总是被遵守。 CONSIDER: 一般说来这条建议需要被遵守,但是如果你完全理解了指南背后的原因,并深入了解你不遵守这条指南的理由,那么便可以适时的从这条指南上转移你的注意力。 AVOID: 与 CONSIDER相对的,一般来说这条指南建议了一些不应该被做的事情,但是,如果你完全理解了为什么它不应该被做,并且你也理解无论如何也要做它的原因, 那么, 就做它。 DO NOT 是 AVOID 的强化版本,它预示着绝对不要做的一些事。DO NOT 指南也应该总是被遵守。 指南 了解你的程序/用户 一个索引最主要目的便是提高你的应用程序的数据收集和收据管理操作的性能,除非你知道这些操作是什么,否则你不可能会改进它们。

Java基础之数组

霸气de小男生 提交于 2020-03-09 00:49:10
数组就是存储数据长度的一种容器,存储多个数据的类型要一致。 可以让我们减少重复定义相同类型的变量。 数组的初始化方式有两种 :1.静态初始化 格式: 数据类型 [] 数组名={}; 2.动态初始化 格式: 数据类型 [] 数组名=new int[]; 数组的索引 每一个存储到数组的元素,都会自动的拥有一个编号。编号从0开始, 这个自动编号就是索引。通过数组的索引就可以访问数组的元素。 数组的内存图 下面通过一段代码来简单了解一下,数组的内存图。 数组常见的两种异常: 1.数组越界异常(ArrayIndexOutOfBoundsException): 通常情况是,索引溢出导致。解决发案:定义正确的索引即可(即不超出数组的长度) 2.空指针异常( NullPointerException).: 通常情况下,是赋了一个null值给了数组名,导致数组没有在堆内存开辟地址。解决方案:给数组一个真正的堆内存空间引用即可! 欢迎大家评论!如有错误,请予指正,谢谢大家! 来源: CSDN 作者: sun_hehong 链接: https://blog.csdn.net/sun_hehong/article/details/104739249

pandas——分组聚合和透视图

谁都会走 提交于 2020-03-08 21:16:16
数据排序 函数:sort_values(‘索引’,ascending=,na_position=’ ',inplace=) 这个函数不会改变索引 ascending:表示按照索引升序排列,False,True na_position:缺失值的索引数据放置的位置,first,last inplce:是否改变原数据表的值True,False import pandas as pd import numpy as np df = pd . read_csv ( 'my_csv.csv' , header = 0 , encoding = 'gbk' , dtype = { '年龄' : str } ) print ( df ) print ( df . sort_values ( "年龄" , ascending = True , na_position = 'last' ) ) ''' 姓名 年龄 性别 地址 0 王贵 NaN 男 美国 1 狗子 35 男 加拿大 2 黑蛋 23 女 日本 3 小五 05 男 韩国 4 李四 06 男 朝鲜 5 小红 04 女 芬兰 姓名 年龄 性别 地址 3 小五 05 男 韩国 2 黑蛋 23 女 日本 1 狗子 35 男 加拿大 0 王贵 NaN 男 美国 ''' 索引重置 df.reset_index(drop=True, inplace

pandas的基本功能

早过忘川 提交于 2020-03-08 19:04:48
一、重建索引 (一)reindex(行索引) 1、是pandas对象的重要方法,用于创建一个符合新索引的新对象,注意:Series调用reindex方法时,会将数据按照新的索引进行排列,如果某个索引值之前并不存在,则会引入缺失值。 import pandas as pd passion=pd.Series([4.5,7.2,-5.3,3.6],index=[‘d’,‘b’,‘a’,‘c’]) print(passion) passion1=passion.reindex([‘a’,‘b’,‘c’,‘d’,‘e’]) print(passion1) 返回值为 d 4.5 b 7.2 a -5.3 c 3.6 dtype: float64 a -5.3 b 7.2 c 3.6 d 4.5 e NaN dtype: float64 2、插值:在重建索引时需要插值的,method可选参数允许使用ffill方法会将值前向填充,其中要求索引必须是数字,而且必须是递增或递减的顺序。 import pandas as pd passion=pd.Series([4.5,7.2,-5.3,3.6],index=[‘0’,‘2’,‘4’,‘6’]) print(passion) passion1=passion.reindex([‘0’,‘1’,‘2’,‘4’,‘6’],method=‘ffill’)

MYSQL普通查询

六眼飞鱼酱① 提交于 2020-03-08 16:39:39
MYSQL普通查询 一、聚合函数(聚合查询) 函数名 功能 avg(字段名) 求指定字段的平均值 max(字段名) 求指定字段的最大值 min(字段名) 求指定字段的最小值 sum(字段名) 求指定字段的记录和 count(字段名) 求指定字段的记录的个数 聚合函数使用语法:select 聚合函数1,聚合函数2 from 表名; 注意:select name,max(attack) from sanguo;聚合函数在默认情况下是不能与其他列一起做查询的 表名sanguo id name attack defense gender country 1 诸葛亮 102 3 m 蜀国 2 司马懿 110 60 m 吴国 3 貂蝉 120 33 w 蜀国 4 张飞 190 90 m 魏国 5 赵云 106 60 m 吴国 案例1:找出sanguo表中最大的攻击力值是多少 select max(attack) from sanguo ; select max(attack) as '最大攻击力' from sanguo ; 案例2:表中共有多少个英雄? select count(name) as number from sanguo;//如果name是null 查到的数据将不会有null的数据 select count(*) as '英雄个数' from sanguo;//*是这一行

DDIA读书笔记 第三章 存储与检索

╄→尐↘猪︶ㄣ 提交于 2020-03-08 14:59:02
log-structed 日志结构 哈希索引 SSTable 与 LSM树 日志文件的压缩 分段 合并 page-oriented 面向页面 B树 数据库 聚集索引 非聚集索引 多列索引 数据分析 列存储 1 最简单的数据库 #!/bin/bash db_set () { echo "$1,$2" >> database } db_get () { grep "^$1," database | sed -e "s/^$1,//" | tail -n 1 } 最简单的数据库,日志结构,写很快,读很慢。可以看出,对于日志结构的数据库,要在读操作上做优化。 为了加快读,可以添加索引。但是索引会拖慢写操作,因此只给需要频繁读的字段添加索引。 2 哈希索引 最容易想到的一种索引策略就是哈希索引。 数据以追加写的方式存储在文件中,内存里保留一个哈希表,key 为索引字段的值,value 为偏移量,如下图所示。该方法适用于键值更新频繁的场景,并且键的总量放在内存中可以hold得住。 Bitcask 就是基于哈希索引的,详见 Bitcask 存储模型 压缩、分段、合并 以上讨论的数据库都是追加日志的,这就需要考虑在日志文件过大时,对文件进行压缩、分段、合并等操作。 数据库的历史指令可能重复对一个键进行操作,显然只需要保留每个键的最新更新就行,这就需要对数据库文件进行分段压缩。在压缩时

mysql面试知识点

Deadly 提交于 2020-03-08 10:54:05
1 MyISAM和InnoDB的区别    a 是否支持行级锁 :   MyISAM 只有表级锁 (table-level locking),   而 InnoDB 支持行级锁 (row-level locking)和表级锁,默认为行级锁。    b 是否支持事务和崩溃后的安全恢复:    MyISAM 强调的是性能 ,每次查询具有原子性,其执行速度比InnoDB类型更快,但是不提供事务支持。   但是 InnoDB 提供事务支持事务 ,外部键等高级数据库功能。 具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。    c 是否支持外键:   MyISAM不支持,而InnoDB支持。    d 是否支持MVCC :   仅 InnoDB 支持。应对高并发事务, MVCC比单纯的加锁更高效;MVCC只在 READ COMMITTED 和 REPEATABLE READ 两个隔离级别下工作;MVCC可以使用 乐观(optimistic)锁 和 悲观(pessimistic)锁来实现;各数据库中MVCC实现并不统一。 2 索引   MySQL索引使用的数据结构主要有 BTree索引 和 哈希索 引 。   对于 哈希索引 来说