SQL Server 性能优化
三空道人
在某互联网在线娱乐上市公司,从事SQL Server、MYSQL数据库管理、及数据分析、审计相关工作
展开
-
SQL Server 2016 启用数据库TDE 压缩性能提升
在《SQL Server 透明数据加密(TDE)的影响》一文中,我们给出启用数据库TDE的备份时,不启用压缩(COMPRESSION )选项建议(有些片面,现在看来需要加上一些限定条件)。因为在SQL Server 2016版本以前,对TDE数据库备份时使用COMPRESSION,不但不能减少数据库备份文件占用空间,而且备份的时间、CPU都会显著升高。从 SQL Server 2016开始,启用TDE 的数据库,使用COMPRESSION选项进行备份,其压缩效果和未启用TDE之前有类似的效果。但是有个前原创 2020-05-09 14:27:34 · 912 阅读 · 1 评论 -
SQL Server索引管理——索引创建建议和经验(二)
SQL Server 索引管理——索引创建建议和经验(二)索引类型前文阐述了创建索引要注意的索引宽度、索引顺序、索引字段的唯一值比例、索引字段的数据类型选择等,本文将重点说明索引类型的选择问题。SQLServer 2012之前主要的索引为行索引,即我们常见的聚集索引和非聚集索引,SQLServer 2012及以后,增加列索引,包括聚集列存储索引和非聚集列存储索引。列索引主要使用在数...原创 2019-04-09 14:36:47 · 13905 阅读 · 0 评论 -
SQL Server索引管理——索引创建建议和经验(三)
SQL Server索引管理——索引创建建议和经验(三)非聚集索引非聚集索引不影响数据在表页中的顺序,因为非聚集索引的叶页和表的数据页是独立的。需要行定位符从索引行导航到数据行。行定位器的结构决定于数据是以堆的形式存储还是以聚集索引的形式存储。数据以堆形式存储,RID为行定位器;一个有聚集索引的表,行定位器为聚集索引键。非聚集索引的维护非聚集索引的行定位器继续的使用相同的聚集索引键...原创 2019-04-18 10:58:59 · 437 阅读 · 0 评论 -
SQL Server索引管理——索引创建建议和经验(四)
SQL Server索引管理——索引创建建议和经验(四)在前文的基础上,本文将阐述一些高级的索引技术。高级索引技术 覆盖索引 索引交叉:使用多个非聚集索引满足单个查询需要的所有列 索引连接: 使用索引交叉和覆盖索引技术避免使用基础表 过滤索引:为在奇异分布或稀疏字段上创建索引,可以在索引上应用过滤,使得仅仅为某些数据创建索引 索引视图:这实现磁...原创 2019-04-24 15:26:36 · 1695 阅读 · 0 评论 -
SQL Server索引管理——索引碎片管理
SQL Server索引管理——索引碎片管理您需要了解SQL Server基础知识才能将数据库性能保持在最高水平。这些知识也会帮助你准备好面对任何潜在的问题。在处理文件时,您可能会发现没有足够的空闲空间来存储文件中所需的数据。默认情况下,这种情形SQLServer将锁住文件,然后进行扩展(被称为自增长)。所有自增长的事件都存储在SQLServer日志中:SELECT ...原创 2019-05-05 11:39:44 · 637 阅读 · 0 评论 -
SQL Server 索引管理——禁用无用索引
SQL Server 索引管理——禁用无用索引前文中,对于不再使用的索引,直接生成删除的脚本,在文中,也提到了直接删除无用索引存在的风险。为了保险起见,如果我们使用的是SQLServer 2005及以后版本,我们可以使用其新增加的功能:索引禁用。这样如果后期发现禁用掉的索引是需要的,我们就可以及时重建索引,保证数据库的性能,如果通过足够时长的观察,确定索引确实无用,则可以将禁用索引删除...原创 2019-05-28 13:38:34 · 4051 阅读 · 0 评论 -
SQL Server 索引管理——生成禁用索引删除脚本
SQLServer索引管理——生成禁用索引删除脚本禁用索引确定不再使用后,备份禁用索引,然后使用如下脚本,生成删除索引脚本,删除索引DECLARE @sql VARCHAR(MAX);SELECT @sql=STUFF(( SELECT 'DROP INDEX '+i.name+' ON '+QUOTENAME(s.name,'[')...原创 2019-06-05 11:39:26 · 715 阅读 · 0 评论 -
SQL Server 索引管理——索引备份
SQL Server 索引管理——索引备份作为一个DBA,做任何操作(尤其是删除、更新等)之前,首先要想到事情是,操作如何还原,对于索引的操作也是如此。前文分别叙述了无用索引删除脚本的生成、以及禁用脚本的生成。对于禁用的索引,只需要将禁用脚本中的disable改为REBUILD即可重建恢复。而禁用脚本,在最终确认无用时,还是要删除掉的,所以对于这类要删除的索引,在删除之前,我们还是要备份其创建...原创 2019-06-04 13:31:34 · 1294 阅读 · 0 评论 -
SQL Server索引管理——索引创建建议和经验
SQLServer索引管理——索引创建建议和经验索引创建的建议 检查WHERE语句和JOIN关联列 使用窄索引 检查列的唯一值(基数) 考虑列的顺序 考虑索引类型(行索引 VS.列索引;聚集索引VS非聚集索引) 如果一个表的数据较少,小于8KB,所有数据在一页上,那么表扫描可能比索引查找更适合使用窄索引你可以使用表中的多列...原创 2019-04-04 18:06:41 · 2405 阅读 · 0 评论 -
SQL Server 索引优化——重复索引(部分重复)
SQLServer索引优化——重复索引(部分重复)前文给出了查询完全重复索引方法,但更多的情况下,是多个管理员,根据单个或部分查询,创建其各自需要的索引,而没有考虑整体情形,就会出现大量的部分重复索引,这对OLAP来说没有较大的影响,但对于OLTP系统,频繁的数据变更就会造成大量的性能消耗,同时也会增加存储的压力。所以对于这部分的索引的优化也显得非常有重要。我们可以这样理解部分重复索引,即...原创 2019-03-05 16:00:55 · 3144 阅读 · 0 评论 -
SQL Server索引优化——重复索引
SQL Server索引优化——重复索引在写完《SQLServer索引优化——无用索引和索引缺失》系列后,就想着写点关于发现重复索引的内容,刚好在Kimberly的博文中发现了这篇,就偷懒了,直接将其翻译过来。一直以来,对重复索引都有许多困惑,我想的最多是如何使用sp_helpindex(或者SSMS)展示索引所包含的内容。索引到底包含什么?索引的架构是怎样的?这些通常都不是我们所看到...翻译 2019-02-20 18:06:00 · 4140 阅读 · 0 评论 -
SQL SERVER 索引优化——移除键查找(书签查找)或RID查找(三)
SQL SERVER索引优化 ——移除键查找(书签查找)或RID查找(三)前面两篇文章主要介绍了键查找的产生,及优化方法,虽有提及RID查找的产生,但没有给出产生的样例。本文将对RID查找的产生补充一个样例。--创建有几个列的表 OneIndexCREATE TABLE OneIndex(ID INT, FirstName VARCHAR(100...原创 2018-12-27 10:26:14 · 946 阅读 · 0 评论 -
SQL SERVER 索引优化——移除键查找(书签查找)或RID查找
SQL SERVER索引优化——移除键查找(书签查找)或RID查找今天,我将分享一个快速移除键查找或RID查找的技巧。让我们首先弄明白什么是键查找或者RID查找。请注意,从SQLServer 2005SP1及以前的版本,键查找被称为书签查找。当查询请求少量数据时,SQLServer优化器将试图使用在查询结果列或包含在WHERE语句中列的非聚集索引,检索数据。如果查询请求...原创 2018-12-21 16:45:27 · 4310 阅读 · 0 评论 -
SQL Server 索引优化—— 查询条件中等于、大于或小于条件在索引中的顺序对性能的影响
SQLServer索引优化—— 查询条件中等于、大于或小于条件在索引中的顺序对性能的影响一、准备测试表和数据use testgocreate table tradeDetail( id int identity(1,1) ,productId int ,tradedate datetime ,[description] ...原创 2018-12-18 18:32:46 · 12747 阅读 · 0 评论 -
SQL SERVER 索引优化——移除键查找(书签查找)或RID查找(二)
SQL SERVER索引优化 ——移除键查找(书签查找)或RID查找(二)前面我已经写了一篇关于移除键查找的文章。这篇文章作为基础文章的续,请在继续阅读本文之前,先阅读前面的文章。我们阅读了使用覆盖索引移除键查找的文章。覆盖索引是这样的一种索引,其包含了SELECT、JOINS、WHERE条件的所有列。在我们的例子中,我们先创建了聚集索引。-- 创建聚集索引...原创 2018-12-25 15:47:34 · 675 阅读 · 0 评论 -
SQL Server 索引优化——无用索引和索引缺失
SQLServer索引优化——无用索引和索引缺失我们知道,合理的索引能大幅提升性能,但冗余的索引也会降低数据库性能。随着我们业务的发展,数据库的中的表、表结构、查询的内容都有可能发生变化。这样,有的索引就可能不再使用了,需要删除(因为维护索引即浪费存储,又耗费性能);而有的表则需要修改或者增加索引。本文主要给出快速确定不再使用的索引的查找方式之一,动态视图(DMV)查询。无用索引...原创 2019-01-02 14:47:22 · 2934 阅读 · 0 评论 -
SQL Server 索引优化——无用索引和索引缺失(三)
SQLServer索引优化 ——无用索引和索引缺失(三)SQL Server 索引优化——无用索引和索引缺失中,我们根据动态视图sys.dm_db_index_usage_stats探测无用索引;SQL Server 索引优化——无用索引和索引缺失(二)中使用动态视图sys.dm_db_missing_index_detail...原创 2019-01-07 11:26:50 · 2806 阅读 · 0 评论 -
SQL Server 索引优化——无用索引和索引缺失(二)
SQLServer索引优化——无用索引和索引缺失(二)上文中我们分享了如何确定不再使用的索引,本文我们将重点给出动态视图法发现数据库中缺失的索引。对于索引的调整和新建将不在本文阐述范围,后续将陆续分享相关经验。sys.dm_db_missing_index_details缺失索引明细,包括相等列,不等列以及包含列,执行如下脚本,并查看结果USE WideWorldImpor...原创 2019-01-03 10:56:09 · 937 阅读 · 0 评论 -
SQL Server 索引优化——sp_helpindex 改写脚本
SQLServer索引优化——sp_helpindex改写脚本在索引优化中,我们常常用到sp_helpindex帮我们查看一个表的索引情况,如下所示但这些信息很明显不足够我们整体深入的剖析一个表的所有索引,因为索引中有包含列,还有索引筛选,索引页的存储等,为了方便索引分析,改写Kimberly Tripp创建的过程,具体操作如下:第一步:创建sp_ExposeCol...原创 2019-02-19 14:51:23 · 3192 阅读 · 0 评论 -
SQL Server——查询条件的顺序对查询性能的影响
SQL Server——查询条件的顺序对查询性能的影响经常能看到或听到关于查询条件顺序对查询性能的影响,下面给出了测试,相信看完测试结果,就能获得自己的判断。where productId=1 and tradedate>'2018-05-01'where tradedate>'2018-05-01' and productId=1如果喜欢,可...原创 2018-12-19 15:05:04 · 3226 阅读 · 0 评论