这几天突发想到在ETL中Merge性能的问题.思路的出发点是Merge到目标表需要扫描的数据太多,而现实情况下,假设应该是只有一小部分会被更新,而且这部分数据也应该是比较新的数据,比方说对于想FactOrders这样一张表,一些越日期越久远的订单可能不可能被更新.那么整个思路就是减小每次需要从磁盘加载目标表到内存中跟stage表进行merge操作的数据量.只是我存在着两个疑问,这也是我问题要进行下面实验的原因. 前提条件是:目标表通过日期进行分区. 第一个疑问:在索引的作用下,SQL Serve…
最近项目做到几千个学生分别去人脸识别记录(目前约630000行)中查询最后一次记录,可想而知性能这块是个麻烦.于是乎,GET到了SQL Server Profiler和数据库引擎优化顾问这俩工SHEN具QI. 开始装逼... 首先来一条执行效率不怎么样的SQL语句 将SQL Server Profiler中的跟踪文件保存至本地 打开数据库优化引擎,选择工作负荷文件以及需要优化的数据库/表,点击开始分析 分析结束后会给你索引建议,执行操作→应用建议,将会自动生成SQL语句并执行,完成后再执行试试那…
本文出处:http://www.cnblogs.com/wy123/p/6704619.html 问题背景 在写SQL Server存储过程中,如果存储过程中定义了临时表,有些人习惯在存储过程结束的时候一个一个显式地删除过程中定义的临时表(drop table #tName),有些人又没有这个习惯,对于不明真相的群众或者喜欢思考的人会问,存储过程中定义的临时表,最后要不要主动删除,为什么?或者说存储过程结束的时候删除临时表更加规范?不止一个人问过这个问题了,说实在话,本人之前确实不清楚,只是认为…
sql server 内置ETL工具学习 常用的导入方式:bcp, BULK INSERT,OPENROWSET和 SSIS. BCP BCP全称BULK COPY PROGRAM 有以下特点: 命令行工具 导出为文本文件 在异构数据库之间迁移 数据时,这个一个比较通用的方法,因为基本上所有的数据库都支持文本文件. 命令参考文档@MSDN 导出一张表 导出数据文件 bcp AdventureWorks2012.HumanResources.Employee OUT d:\dump\Employe…
操作步骤: 1. 在 Microsoft Windows 2003 或 Windows XP 桌面上,依次单击"开始"."运行",然后在"打开"中键入 regedit.exe,再单击"确定".在 Windows 2000 中,使用 regedt32.exe 启动注册表编辑器 2. 定位到以下注册表项: [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersio…
原文:SQL点滴12-SQL Server备份还原数据库中的小把戏 备份数据库时出现一个不太了解的错误 ,错误信息“is formatted to support  1 media families, but 2 media families are expected according to the backup device specification”.如下图: 解决办法是首先选中击上一次备份的文件,点击Remove,去掉当前的备份文件,然后再点击OK备份.这样才能正确的备份.也在微软帮助…
最近发现Sql Server与.Net(C#)中星期值居然不匹配,倒不知道依哪一个了. 1.Sql Server declare @date datetime; set @date = '2017-04-11';--实际为星期二 select DatePart(weekday,@date); 执行结果: 2.C# #region 程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \msc…
如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?(2006-12-14 09:25:36) 与这个问题具有相同性质的其他描述还包括:如何在SQL Server存储过程中获取另一存储过程的执行结果记录集?如何在存储过程中检索动态SQL语句的执行结果?如何实现类似SELECT * FROM (EXEC procedure_name @parameters_var) AS datasource ... 的功能?procedure_…
最近想试着学习ASP.NET MVC,在点击 添加--新建项--Visual C#下的数据中的ADO.NET 实体数据模型,到"选择您的数据连接"时,出现错误,"在 .NET Framework Data Provider for Microsoft SQL Server Compact 3.5 中发生错误.请与提供程序供应商联系以解决此问题.",这里写下,以防自己忘记. 网上查了一下,说是重新安装一下 .NET Compact Framework 3.5,http…
原文:SQL Server 可更新订阅中有行筛选的同步复制移除项目而不重新初始化所有订阅! 在可更新订阅的同步复制中,有行筛选的项目表,移除的时候会提示重新初始化所有的快照并且应用此快照,这将导致所有的订阅数据库被重新初始化. 如下图,移除项目的时候提示: 此时如果取消则则取消操作 如果点击[标志为要重新初始化(M)],勾选[立即生成新快照],则立即生成新快照并初始化所有!--千万别操作! 如果点击[标志为要重新初始化(M)],不勾选[立即生成新快照],则下次启动快照时立即生成新快照并初始化所有…
SQL Optimizer for SQL Server 帮助提升数据库应用程序性能,最大程度地自动优化你的SQL语句 SQL Optimizer for SQL Server 让 SQL Server DBA或者T-SQL开发人员能够主动地识别潜在的SQL性能问题,通过扫描和分析SQL语句进行人工智能自动SQL优化.Dell SQL Optimizer通过尝试每一种可能来激发数据库内部SQL优化器的潜能,从而达到性能优化的目的,这是数据库内部SQL优化器不能做到的.下面介绍一下这个工具的一些主…
    SQL Server集成服务(SQL Server Integration Services,SSIS)在其前辈DTS(Data Transformation Services,数据转换服务)的根基上进步了不少,从可用性.性能和并行等方面来说,它已经成长为一个企业级ETL(Extraction, Transformation and Loading,抽取.转换和加载)产品,除了是一个ETL产品外,它也供给了各种内置任务来管理SQL Server实例.虽然SSIS的内部架构已经被设计为供给…
最近做的项目快上线了,在做了一次压力测试后发现了不少问题,基本都是因为数据量达到一定级别时(预测系统上线10年后的数据量)SQL查询超时,其中有些是因为索引缺失.有些是因为写法不好,这些在有经验的人眼里一眼就能看出问题,于是我解决起来都很快. 但其中有一个无比诡异,SQL很简单,但执行起来都超过1分钟,而我们的理想目标是1秒,差距很大. 先简单写下这个SQL的样子: T1.C1, T1.C2, T1.C3 FROM TABLE_1 T1 JOIN TABLE_2 T2 ON T1.C1 = T2…
  随着公司业务的发展,数据量增长迅速,在解决Scale Out的同时,还要考虑到主从的复制延迟问题,尽量降到1s以内满足线上业务,如果不调整,SQL Server默认的配置可能平均要3s左右.生产的复制架构采用的是推送方式进行事务复制,发布服务器下面有4个从节点,两两指向同一虚拟IP,构成负载均衡,服务于不同的线上业务.对于4个节点,发布库和分法库的压力都很大,订阅库每秒I/O能达到5M,高峰时能达到数十兆.研究并试验了一些时间,给出一些优化建议: 1.硬件.数据库设计: 使用SSD磁盘,有钱…
简介 说到Sql的[性能工具]真是强大,SQL Server Profiler的中文意思是SQL Server事件探查,这个到底是做什么用的呢?我们都知道探查的意思大多是和监视有关,其实这个SQL Server Profiler就是一个Sql的监视工具,可以具体到每一行Sql语句,每一次操作,和每一次的连接.感觉这个工具的作用还是很大的,给大家分享一下,对于新手了解Sql语句的写法和提高语句的性能方法有很大的帮助.    SQL Server Profiler使用方法 我们单击开始--程序--M…
数据页和区 页 SQL Server 中的数据以“页”(Page)的形式保存数据,页是SQL Server 的IO单位,读/写一次至少是一页.一页为8K(8192byte). 页由三部分组成,页头,数据和偏移量.页头大小是96byte,记录页号,所属对象和页类型(IAM,DataPage,IndexPage),数据部分是8060byte,用来存放实际数据.偏移量36byte,也叫“slot”,用来标记每一行数据的位置 区 一个区=8个连续的页. B树和索引键 B树(Balanced-Tree)…
SQL Server profile使用技巧 介绍 经常会有人问profile工具该怎么使用?有没有方法获取性能差的sql的问题.自从转mysql我自己也差不多2年没有使用profile,忽然profile变得有点生疏不得不重新熟悉一下.这篇文章主要对profile工具做一个详细的介绍:包括工具的用途和使用方法等.profile是SQLServer自带的一个性能分析监控工具,它也可以生成数据库引擎优化顾问分析需要的负载数据,比如开发对功能进行调试需要收集执行sql使用profile就是一个非常好…
原文:SQL Server Profiler和数据库引擎优化顾问  简介 说到Sql的[性能工具]真是强大,SQL Server Profiler的中文意思是SQL Server事件探查,这个到底是做什么用的呢?我们都知道探查的意思大多是和监视有关,其实这个SQL Server Profiler就是一个Sql的监视工具,可以具体到每一行Sql语句,每一次操作,和每一次的连接.感觉这个工具的作用还是很大的,给大家分享一下,对于新手了解Sql语句的写法和提高语句的性能方法有很大的帮助.    …
一.场景 在SQL Server 2005中,有一个表TestDatetime,其中Dates这个字段的数据类型是datetime,如果你看到表的记录如下图所示,你最先想到的是什么呢? (图1:数据列表) 你看到这些数据,是不是觉得这样的设计既浪费了存储空间,又使得这个列的索引增大,查询起来更慢,你也想使用一些其它的数据类型来代替这个datetime吧? 其实大家都是这么想的,这个方向是100%正确的,但是在写这篇文章以前,我进入了两个误区:(如果你中了下面的两个误区,那么请你看看这篇文章吧.)…
日常运行的批量更新作业,平日是5分钟之内结束,今天出现超过30分钟没结束的情况,实际运行3个小时以上,应用程序超时报错. 数据库版本:SQL Server 2016企业版 问题SQL: declare @batch integer,        @min    integer,        @max   integer,        @count integer select  @min = 1,    @count = count(*),    @batch = 5000,    @ma…
  SQL Server的嵌套存储过程,外层存储过程和内层存储过程(被嵌套调用的存储过程)中可以存在相同名称的本地临时表吗?如果可以的话,那么有没有什么问题或限制呢? 在嵌套存储过程中,调用的是外层存储过程的临时表还是自己定义的临时表呢? 是否类似高级语言的变量一样,本地临时表有没有"作用域"范围呢? 注意:也可以称呼为父存储过程和子存储过程,外层存储过程和内层存储过程.这些只是不同的称呼或叫法而已.我们这里统一使用外层存储过程和内层存储过程.后续文章部分不再述说. 我们先来看一个例子…
简介 merge join 对两个表在连接列上按照相同的规则排序,然后再做merge,匹配的输出. 下面这个动态图展示了merge join的详细过程. merge join示例 创建两个表 IF OBJECT_ID('dbo.Tbl10') IS NOT NULL DROP TABLE dbo.Tbl10; CREATE TABLE dbo.Tbl10( Id INT IDENTITY(1,1), Val INT, Fill CHAR(7000) NOT NULL DEFAULT REPLIC…
开博客已经好久了,但一直没有用起来,也有很多"老人"劝诫我,好记性不如烂笔头,于是一年后的我重拾博客,打算记录一些我在计算机方面遇到的一些问题和心得. 前几天重装了Win10系统,发现现在重装系统方便多了,直接从官网上下载镜像文件然后做成系统启动盘,直接一步步安装提示来,坐等重装好.Win10占用空间也就12G左右,系统简洁又大方,可在安装软件和兼容性方面着实挺头疼的. 尤其是在装SQL Server 2008的时候遇到的一些问题,记得自己以前安装过一次,也挺麻烦的,查了很多的资料,现…
  在数据库里面建了一个表,可是由于对SQL SERVER的建表功能不熟悉,不知道把主键设成什么是好,就先设置了个TEXT类型,可是后来朋友们告诉我说,TEXT类型容易让数据文件变得很大,还 是改成一个int型比较好.就打算修改字段类型.可是总是提示不让我修改,那个意思就是说你只能重建这个表.ACCESS都可以让随便修改类型,为啥 SQL SERVER就不行,不信这个邪,还是问问专业测试SQL SERVER的人员吧,问了半天没有反应,看来还是得自己去BAIDU一下,这次搜索很顺利,直接找到了心满…
来源:http://www.cnblogs.com/wsdj-ITtech/archive/2011/04/28/2031601.html 通常在SQL Server 2005中,我们可以通过SQL Management Studio,选中一个数据表,然后右键弹出菜单,在此菜单中可以Open并编辑此数据表,但在SQL Server 2008中此特性被取消了,代之以 "Edit Top 200 Rows",这样作的原因是为了避免经常有用户因为误操作而打开一个内容巨大的数据表.我们可以通过…
备份数据库时出现一个不太了解的错误 ,错误信息“is formatted to support  1 media families, but 2 media families are expected according to the backup device specification”.如下图: 解决办法是首先选中击上一次备份的文件,点击Remove,去掉当前的备份文件,然后再点击OK备份.这样才能正确的备份.也在微软帮助文档里面看过原由,实在内容太多没有时间细看. 还原数据库,又遇到了数…
最近使用mssql的时候对于未null的字段查询不到 http://blogs.msdn.com/b/jchiou/archive/2008/05/01/sql-server-null.aspx 先建立測試資料表,如下: -- 1. 查詢資料表中所有的資料 SELECT * FROM tblCustomer -- 2. 使用『= NULL』查詢欄位為 NULL 的資料, -- 會找不到資料,但確實有 LastName 為 NULL 的資料 SELECT * FROM tblCustomer WH…
最近有人问到这个问题,之前也一直没有深究联合索引具体使用逻辑,查阅多篇文章,并经过测试,得出一些结论 测试环境:SQL Server 2008 R2 测试结果与MySql联合索引查询机制类似,可以认为MySql是一样的原理 ==================================================== 联合索引概念:当系统中某几个字段经常要做查询,并且数据量较大,达到百万级别,可多个字段建成索引 使用规则: 1.最 左 原则,根据索引字段,由左往右依次and(where…
有时我们可能需要为一个已存在的数据库表添加字段,并且想让这个字段默认排的靠前一些,这时就需要为表字段重新进行排序,默认情况下在Management Studio中调整顺序并保存时会提示"不允许保存更改.您所做的更改要求删除并重新创建以下表.您对无法重新创建的标进行了更改或者启用了"阻止保存要求重新创建表的更改"选项",这是因为有些对表的修改要求重新创建表,而 SQL Server 默认阻止这样的修改,所以保存不下来.如下图: 我们可以通过取消选项"阻止保存…
有时我们可能需要为一个已存在的数据库表添加字段,并且想让这个字段默认排的靠前一些,这时就需要为表字段重新进行排序,默认情况下在Management Studio中调整顺序并保存时会提示“不允许保存更改.您所做的更改要求删除并重新创建以下表.您对无法重新创建的标进行了更改或者启用了“阻止保存要求重新创建表的更改”选项”,这是因为有些对表的修改要求重新创建表,而 SQL Server 默认阻止这样的修改,所以保存不下来.如下图: 我们可以通过取消选项“阻止保存要求重新创建表的更改”即可: 在 Mic…