自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 收藏
  • 关注

转载 借助扩展事件查看SQL 2016备份和还原操作的内幕

当遇到备份或者还原操作占用较长时间时,很多人会问:备份/还原是不是僵死了?要不要kill掉,再重来?到底是哪一个部分的操作占用较长时间?到底现在进行到什么阶段了?在SQL 2016 之前,要回答这些问题会比较困难一些,或者借助某些不受支持的方式。SQL 2016开始引入了新扩展事件 backup_restore_progress_trace 来跟踪备份和还原操作。我们可以使用...

2017-08-30 15:05:00 194

转载 升级到SQL Server 2012/2014时一些需要考虑的事项

1. 使用Upgrade Adviser评估升级前需要解决的事情。https://msdn.microsoft.com/zh-cn/library/ms144256(v=sql.110).aspxhttps://msdn.microsoft.com/zh-cn/library/ms144256(v=sql.120).aspx2. 查看新版本的变更的内容和遗弃的功能. 如...

2017-02-11 23:21:00 417

转载 CentOS上安装SQL Server vNext CTP1

今天微软正式发布上SQL Server 2016 SP1,根据以往的SP1定律,可以在生产环境上使用了。打了SP1的标准版将具有企业版几乎所有的的功能。只有RAM 超过128GB或者超过24核心或者超过4路的环境才必须要安装企业版。还有一个重要的发布:SQL Server vNext on Linux。也是本文介绍安装的版本。长话短说,开始安装。这个版本的SQL Server,官方支...

2016-11-17 16:29:00 191

转载 索引重建(重组)的常见问题

1. 索引重建和重组有什么用?当修改表(UPDATE、INSERT、DELETE等)中数据,数据库引擎自动维护索引的数据和结构。但是随着修改次数的累积,可能会现:索引中记录的数据顺序(逻辑顺序)和数据的实际顺序不一致(物理顺序),这也称之为外部碎片。索引页的数据填充度变小(页密度),也称之为内部碎片。有索引碎片是正常的,但是有大量的碎片,会降低查询性能,可以通过重建和重组索引来...

2016-09-30 11:58:00 1442

转载 如何解读SQL Server日志(3/3)

如何查看被截断的日志如果数据库做了日志备份操作,则日志会被截断,然后原来活动的VLF会被重用。使用sys.fn_dblog将会看不到任何被截断的日志。那如何查看日志备份中的日志呢?使用fn_dump_dblog读取日志备份的内容。它的输出和sys.fn_dblog是一样的,所以进行查询过滤时也可以跟其一样。use mastergobackup log logtest to dis...

2016-08-23 15:22:00 224

转载 如何解读SQL Server日志(2/3)

接下来说说返回的RowLogo Content列,例子中返回了三个列。这些列包含了数据操作的“有效工作负载(Playload)”记录。根据不同操作类型有效负载的内容也是不同的,但是它必须包含足够的信息,能让相应的数据操作在恢复时能被REDO和UNDO。对于每一个INSERT而言,它包含了插入行的所有数据。我们来验证一下,先看看RowLogo Contents 0的内容:0x100024...

2016-08-19 18:23:00 186

转载 如何解读SQL Server日志(1/3)

SQL Server 的事务日志包含所有数据修改的操作记录。分析日志一般作为解决某些问题的最后手段,如查看某些意外的修改。理解和分析日志内容是件非常困难的事情,fn_dblog通常会输出非常多的数据,查看也比较困难。我尝试用一些实例帮助大家更好地分析和理解日志。SQL Server 使用Write-ahead logging (WAL)方式保证任何数据变更的日志要比数据变更先发生。同时...

2016-08-18 11:10:00 386

转载 理解SQL Server是如何执行查询的 (3/3)

页并发访问的保护:闩锁在多线程并发情况下,需要防止读线程读到写线程正在写的资源,在编程中,通过使用互斥器(Mutexes), 信号量(Semaphore), 临界区(Critical Section)和事件(Event Object)来保护资源,而这些机制在SQL Server中被统一表示为闩锁。闩锁本身是一种数据结构,用于保护并发访问中的资源。闩锁有多种模式,不同模式的兼容性不一...

2016-08-15 17:15:00 117

转载 理解SQL Server是如何执行查询的 (2/3)

查询执行的内存授予(Query Execution Memory Grant)有些操作符需要较多的内存才能完成操作。例如,SORT、HASH、HAS聚合等。执行计划通过操作符需要处理数据量的预估值(通过统计信息获得的预估行数)、操作符类型和列大小来获得所需要的内存总量。这个执行计划的内存总量,也叫做内存授予(Memory Grant)。当多并发查询的环境中,如果 查询中有很多这种需...

2016-08-11 18:15:00 95

转载 理解SQL Server是如何执行查询的 (1/3)

查询执行的总图:根据总图的流程,详细说明每个部分:1. 请求(Request) SQL Server是C/S架构的平台。与它交互的唯一方式就是发送包含数据库命令的请求。应用程序和数据库之前的通信协议叫做TDS(Tabular Data Stream)协议。应用程序可以使用以下几种实现了TDS协议的客户端:The CLR managed SqlClient,...

2016-08-11 18:07:00 135

转载 数据压缩:自动评估

在前一篇博文数据压缩简要的基础上,我希望把数据压缩评估自动化。于是有了这篇博文。白皮书推荐对符合如下条件的大型表和索引使用页压缩:表或索引的扫描操作占到所有操作的75%及以上时表或索引的更新操作占到所有操作的20%及以下时注意,这是白皮书中的结论和建议,只做参考,最为最佳实践的考虑点之一。此脚本的原始作者是Louis Li。但是它的脚本有一些限制,我在这...

2016-07-14 15:22:00 89

转载 数据压缩 : 简要

1. 决定压缩哪些对象通过sp_estimate_data_compression_savings 评估在ROW和PAGE压缩时分别节省的空间量。表包含如下数据模式时,会有较好的压缩效果:数字类型的列和固定长度的字符类型数据,但两者的大多数值都不会用到此类型的所有字节。如INT列的值大多数少于1000.允许为NULL的列有很多NULL值列值中有很多一样的值或者相同...

2016-07-13 14:26:00 138

转载 非聚集索引中的临界点(Tipping Point)

什么是临界点? 注意,我要说的问题是非聚集索引的执行计划从Seek+Lookup变成Table/Clustered Index Scan的临界点。SQL Server的访问数据的IO最小单元是页。 我们知道聚集索引的叶级是数据页,非聚集索引的叶级是指向数据行的指针。所以通过聚集索引获取数据时,就是直接访问聚集索引本身,而通过非聚集索引获取数据时,除了访问自身,...

2016-06-30 15:57:00 143

转载 分析SIX锁和锁分区导致的死锁

什么是SIX锁?官方文档锁模式中说到:意向排他共享 (SIX):保护针对层次结构中某些(而并非所有)低层资源请求或获取的共享锁以及针对某些(而并非所有)低层资源请求或获取的意向排他锁。 顶级资源允许使用并发 IS 锁。 例如,获取表上的 SIX 锁也将获取正在修改的页上的意向排他锁以及修改的行上的排他锁。 虽然每个资源在一段时间内只能有一个 SIX 锁,以防止其他事务对资源进行更...

2016-06-12 16:06:00 457

转载 SQL Server 诊断查询-(5)

Query #57 Buffer Usage--Breaksdownbuffersusedbycurrentdatabasebyobject(table,index)inthebuffercache--Note:ThisquerycouldtakesometimeonabusyinstanceSELECTOBJECT_...

2016-02-04 09:39:00 127

转载 SQL Server 诊断查询-(4)

Query #41 Memory Clerk Usage-- Memory Clerk Usage for instance-- Look for high value for CACHESTORE_SQLCP (Ad-hoc query plans)SELECT TOP(10) mc.[type] AS [Memory Clerk Type], CAST((SUM(mc...

2016-02-04 09:37:00 131

转载 SQL Server 诊断查询-(3)

Query #27 Database Properties --Recoverymodel,logreusewaitdescription,logfilesize,logusagesize --andcompatibilitylevelforalldatabasesoninstance SELECTdb.[nam...

2016-02-03 16:43:00 180

转载 SQL Server 诊断查询-(2)

Query #13 SQL Server Error Log(FC)-- Shows you where the SQL Server failover cluster diagnostic log is located and how it is configured SELECT is_enabled, [path], max_size, max_files FROM s...

2016-02-03 16:33:00 135

转载 SQL Server 诊断查询-(1)

Query #1 is Version Info. SQL and OS Version information for current instanceSELECT @@SERVERNAME AS [Server Name], @@VERSIONAS [SQL Server and OS Version Info];Query #2 is Core Counts....

2016-02-03 15:46:00 184

转载 导数中的最小化日志记录:测试和分析

测试和分析依据上文件最小化日志的判断逻辑,对常见的BULK INSERT和INSERT INTO...SELECT做测试和分析 创建测试环境和基准--创建表tb_source并插入10000条数据use mastergocreate database test;alter database test set recovery bulk...

2015-11-17 17:14:00 89

转载 导数中的最小化日志记录:背景和理论

什么是最小化日志(Minimal Logging)? 当数据库的恢复模式为SIMPLE或者BULK_LOGGED时,对于最小化日志类型的操作,事务日志不记录单独每个数据行的日志,而是记录对应页和区结构的修改日志。这样显著减少了操作产生的事务日志数量。例如,向某个数据页上插入200行数据,在最小化日志记录的情况下,只会记录一条此数据页变化的日志,而不是200条Insert日志。...

2015-10-31 10:33:00 83

转载 索引修改内幕

索引修改的大致规则:对表的任何修改操作(UDI),总会对表上的非聚集索引执行等价的操作。某些更新操作除外。对表的任何修改操作,都会先修改堆或者聚集索引,然后再修改非聚集索引。如果修改的数据行,正是过滤索引过滤掉的行(过滤索引的叶级页不包含的行),则不会对过滤索引产生任何操作。插入数据行 对于聚集和非聚集索引的插入,新行(不管是数据行还是索引行...

2015-10-16 11:34:00 125

转载 关于Latch争用

Latch是什么 Latch是SQL Server引擎保证内存中的结构的一致性的轻量同步机制。比如索引,数据页和内部结构(比如非叶级索引页)。SQL Server使用Buffer Latch保护缓冲池中的页,用I/O Latch保护还未加载到缓冲池的页,用Non-Buffer Latch保护内存中的内部结构。Buffer Latch:当工作线程访问缓冲池中的某个页之前,...

2015-09-21 17:08:00 196

转载 堆表修改内幕

堆的修改需要使用到PFS页(PageFreeSpace)。PFS记录着数据页的空间使用情况。PFS页上使用1个字节(Byte)表示一个页的使用情况。一个PFS页可以表示8088个数据页,于是每8088个数据页就会有一个PFS页。一个数据文件的第二个页就是PFS页。PFS页上1个字节的结构:Bit 1:是否被分配并使用。比如,分配给对象的统一区,并不是区内所有的页都...

2015-08-28 10:27:00 74

转载 HBase集群安装

环境:CentOS 6.4,Hadoop 2.6.0,ZooKeeper 3.4.6,HBase 1.0.1.1集群角色规划:HostNameHBase RoleZooKeeperHadoop RoleHDP1MasterYESSlaveHDP2Backup Master...

2015-07-27 09:43:00 54

转载 ZooKeeper群集安装

4节点Hadoop安装ZooKeeper。环境:CentOS 6.4,Hadoop 2.6.0,ZooKeeper 3.4.6HostNameHadoop RolemyidHDP1Slave1HDP2Master2HDP3Slave3...

2015-07-24 09:32:00 86

转载 CentOS 6+Hadoop 2.6.0分布式集群安装

1.角色分配IPRoleHostname192.168.18.37Master/NameNode/JobTrackerHDP1192.168.18.35Slave/DataNode/TaskTrackerHDP2192.168.18.36Slav...

2015-07-23 16:39:00 82

转载 Hive中使用Python实现Transform时遇到Broken pipe错误排查

Hive中有一表,列分隔符为冒号(:),有一列utime是Timestamp格式,需要转成Weekday存到新表。利用Python写一个Pipeline的Transform,weekday.py的代码也很简单:import sysimport datetimefor line in sys.stdin:line=line.strip()uid,mid,rati...

2015-07-13 17:30:00 789

转载 SQL Server审计功能入门:SQL Server审核 (SQL Server Audit)

介绍 Audit是SQL Server 2008之后才有的功能,它能告诉你“谁什么时候做了什么事情”。具体是指审核SQL Server 数据库引擎实例或单独的数据库涉及到跟踪和记录数据库引擎中发生的事件。它的底层是基于扩展事件(Extented Event),所以其性能和灵活性相对较好。审核数据可以输出到审核文件、Windows安全日志和应用程序日志。 Audit都需要创...

2015-03-04 11:40:00 1354

转载 SQL Server审计功能入门:CDC(Change Data Capture)

介绍 SQL Server 2008引入了CDC(Change Data Capture),它能记录: 1. 哪些数据行发生了改变 2. 数据行变更的历史记录,而不仅仅是最终值。 跟CT(Change Tracking)相比,它通过作业实现异步变更跟踪(像事务复制),而CT是同步实现的。因此它对性能的影响较轻并且不会影响事务。 典型应用是在提取、传输和加载数据到其它数据源,就像图...

2015-03-04 11:22:00 209

转载 SQL Server审计功能入门:更改跟踪(Change Tracking)

介绍 更改跟踪是一种轻量型解决方案,它为应用程序提供了一种有效的更改跟踪机制。常规的,自定义变更跟踪和读取跟踪数据,会使用触发器,存储过程和记录变更的用户表等, 还需要保证访问一致和相关清理工作。 使用CT会减少额外工作量和保证访问一致性。 启用CT的表上必须得有主键,所有版本适用。为了保证更改信息的有效性,官方建议结合快照隔离使用。 CT只能提供: ...

2015-03-04 11:02:00 266

转载 MongoDB:MapReduce基础及实例

背景 MapReduce是个非常灵活和强大的数据聚合工具。它的好处是可以把一个聚合任务分解为多个小的任务,分配到多服务器上并行处理。 MongoDB也提供了MapReduce,当然查询语肯定是JavaScript。MongoDB中的MapReduce主要有以下几阶段: 1. Map:把一个操作Map到集合中的每一个文档 2. Shuffle: 根据Key分组对文档,...

2015-01-31 23:19:00 103

转载 理解SQL Server的查询内存授予(译)

此文描述查询内存授予(query memory grant)在SQL Server上是如何工作的,适用于SQL 2005 到2008。 查询内存授予(下文缩写为QMG)是用于存储当数据进行排序和连接时的临时中间数据行。查询在实际执行前需要先请求保留内存,所以会存在一个授予的动作。这样的好处是提高查询的可靠性和避免单个查询占用所有的内存。 SQL Se...

2014-11-17 21:49:00 107

转载 利用DAC(Data-tier Application)实现数据库结构迁移

从一个存在的库,抽取其表结构,对象,权限等,再部署成一个不包含数据的”空库“的方法有很多种。如自带的Generate Scripts功能,自定义脚本提取创建脚本等。 在实际使用中,我更喜欢使用DAC的方式。特别是它能跟PowerShell结合使用。 什么是DAC,它能干什么? 数据层应用程序 (DAC) 可以简化支持客户端-服务器或多层应用程序的数据层元素的开发、部署和管理。...

2014-09-25 16:28:00 144

转载 记录几个基础的SQL开发题

1. 表A有5行数据,表B有7行数据,问Inner Join最多返回几行数据,Left Join最多返回几行数据,分别在什么情况下? Inner Join 是返回关联表的Cartesian product,然后根据On条件剔除掉不符合的行。这样的话,返回最多行的情况就是保留整个Cartesian product,On对每一行都为True. 即最多返回5*7=35行。...

2014-07-23 16:50:00 77

转载 事务复制中的分区表

背景 事务复制中发布表有分区表,如何配置发布项,使分区结构传播到订阅库?有何限制? 测试环境 CodeUSE [master]GOCREATE DATABASE [OMS_Test] ON PRIMARY ( NAME = N'OMS_Test_data1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQ...

2014-07-16 16:07:00 64

转载 一次SQL Server 10054 Troubleshooting

问题 对某个库新增了一个订阅节点,然后需要把一些应用切到新订阅库,以分散负载。当应用切换后,有一个应用每次启动不到30秒,总是报超时的错误,而error log中又没有任何记录: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not res...

2014-06-25 22:34:00 767

转载 唯一索引和非唯一索引的区别简析

SQL Server创建索引时,可以指定Unique使之成为唯一索引。“唯一”顾名思义,但是两都到底有什么区别呢?因为索引也是一种物理结构,所以还是要从存储和结构上分析。 索引结构分叶级和非叶级,分析时我们要分开来看,这个很重要。 文中涉及的索引行大小计算,参考MSDN估计数据库大小索引部分。 1. 非唯一聚集索引和唯一聚集索引 创建两个测试表,各10000条整数,tb1唯一,tb2...

2014-02-28 15:11:00 476

转载 《Troubleshooting SQL Server》读书笔记-内存管理

自调整的数据库引擎(Self-tuning Database Engine) 长期以来,微软都致力于自调整(Self-Tuning)的SQL Server数据库引擎,用以降低产品的总拥有成本。从SQL Server 2005开始,SQL Server就是动态管理内存使用,并且调整内存使用时,不需要重启数据库引擎。 所以它也不提供内存分配的微调项。各个组件的内存分配,完全由数据库引擎自动管...

2014-02-20 17:28:00 100

转载 SQL Server: Top 10 Secrets of a SQL Server Expert

转载自:http://technet.microsoft.com/en-us/magazine/gg299551.aspx Many companies have downsized their IT departments over the last few years. Many database administrators (DBAs) have ended up with re...

2014-01-10 10:28:00 114

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除