文章分类 -  【sqlserver】

摘要:通过上2篇博文,我们了解了分区表的理论,这一节就开始实战。本篇博文的内容如下:1,建立分区表2,查询分区3,归档数据4,添加分区5,删除分区6,查看元数据PS下:最近收到很多朋友的消息和邮件,大多是关于数据库的问题,没有一一答复,由于平时工作比较忙,博客更新的比较慢,在这里说声抱歉。OK,我们以一个销售数据库场景开始分区表实战。第一步:建立我们要使用的数据库,最重要的是建立多个文件组。CREATEDATABASESalesONPRIMARY(NAME= N'Sales',FILENAME= N'C:\Sales.mdf',SIZE= 3MB,MAXSIZE = 阅读全文
posted @ 2013-10-22 09:53 不弃的追求 阅读(284) 评论(0) 推荐(0)
摘要:接分区表理论解析(上)分区方案对表和索引进行分区的第二步是创建分区方案。分区方案定义了一个特定的分区函数将使用的物理存储结构(其实就是文件组),或者说是分区方案将分区函数生成的分区映射到我们定义的一组文件组。所以分区方案解决的是Where的问题,即表的各个分区在哪里存储的问题。分区方案的创建语法如下:CREATEPARTITIONSCHEMEpartition_scheme_nameASPARTITIONpartition_function_name[ ALL ]TO({file_group_name|[ PRIMARY ]}[ ,...n ])[ ; ]分区方案语法的相关解释:1,创建分区方 阅读全文
posted @ 2013-10-22 09:52 不弃的追求 阅读(274) 评论(0) 推荐(0)
摘要:在谈论分区表这个话题之前,先和大家分享一个案例:2008年秋天的某天,我的团队接到成都市XX局一个SQL调优的ESS单子。客户反映查询统计一次各地市局上报的数据汇总,需要6到15秒才能获得真正想要的数据,当我和销售人员赶到客户数据中心现场后,发现里面布置了很多柜式服务器,每台服务器都是8核16G内存。和相关技术负责人沟通以及演示业务系统之后,可以肯定不是服务器性能的问题,我详细分析了他们的数据库,统计慢的几张表往往一周的上报数据便会增加1百多万行,导致他们这个系统刚上线没多久,某些表产生的数据已经在2000万行以上,最终我提出了优化方案,业务逻辑层采用存储过程代替普通的SQL语句,并启用相关开 阅读全文
posted @ 2013-10-22 09:49 不弃的追求 阅读(242) 评论(0) 推荐(0)
摘要:--监控索引是否使用alter index &index_name monitoring usage;alter index &index_name nomonitoring usage;select * from v$object_usage where index_name = &index_name;--求数据文件的I/O分布select df.name,phyrds,phywrts,phyblkrd,phyblkwrt,singleblkrds,readtim,writetimfrom v$filestat fs,v$dbfile dfwhere fs.file 阅读全文
posted @ 2013-09-18 11:17 不弃的追求 阅读(201) 评论(0) 推荐(0)
摘要:大凡在应用系统和数据库系统中行走江湖多年的朋友,都会面临数据统计、分析以及归档的问题,企业信息化进程加速了各种数据的极具增长,商务智能(BI)的出现和实施着实给信息工作者和决策者带来了绝妙的体验,但从 OLTP 向 OLAP 系统加载数据是很头疼的事,常常需要数分钟或数小时,解决这一问题的技术之一... 阅读全文
posted @ 2013-07-01 10:24 不弃的追求 阅读(739) 评论(0) 推荐(0)
摘要:死锁和堵塞一直是性能测试执行中关注的重点。 下面是我整理的监控sql server数据库,在性能测试过程中是否出现死锁、堵塞的SQL语句,还算比较准备,留下来备用。 --每秒死锁数量SELECT *FROM sys.dm_os_performance_countersWHERE... 阅读全文
posted @ 2012-12-27 13:36 不弃的追求 阅读(379) 评论(0) 推荐(0)
摘要:查询速度慢的原因很多,常见如下几种 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应 3、没有创建计算列导致查询不优化 4、内存不足 5、网络速度慢 6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。 9、返回了不必要的行和列 10、查询语句不好,没有优化可以通过如下方法来优化查询 1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放... 阅读全文
posted @ 2012-08-17 10:51 不弃的追求 阅读(218) 评论(0) 推荐(0)
摘要:SQL2008 的收缩日志由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消:(SQL2005)BackupLogDNNamewithno_loggodumptransactionDNNamewithno_loggoUSEDNNameDBCCSHRINKFILE (2)Go--------------------------------------------------------------(SQL2008):在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。USE[master]GOALTER 阅读全文
posted @ 2012-08-03 10:25 不弃的追求 阅读(444) 评论(0) 推荐(0)
摘要:SQL Server 2008 R2很多相关的文章都是以Adventure Works数据库为基础的,但是该数据库在SQL Server 2008 R2安装时不会默认安装,需要另外从CodePlex网站下载然后手动安装。微软提供了两种Adventure Works数据库的安装方式,第一种是数据文件方式,只要在SQL Server Management Stuido附加上该数据文件就可以了;第二种是脚本方式,需要用SQLCMD手动执行脚本文件才能安装。打开网站http://msftdbprodsamples.codeplex.com/releases/view/59211,选择相应的安装方式文件 阅读全文
posted @ 2012-07-21 12:44 不弃的追求 阅读(715) 评论(0) 推荐(0)
摘要:Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示如果还为了这个纠结,就直接看看后面的解说,做决定吧。一般如果用到中文或者其它特殊字符,我就会使用n开头的类型,否则的话直接使用var开头的。sql server中的varchar和Nvarchar有什么区别?答:varchar(n)长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。nvarchar(n)包含 n 个字符的可变长度 Unicode 字符数据。 阅读全文
posted @ 2012-06-11 15:28 不弃的追求 阅读(486) 评论(0) 推荐(0)
摘要:例如: id name value 1 a pp 2 a pp 3 b iii 4 b pp 5 b pp 6 c pp 7 c pp 8 c iii id是主键 要求得到这样的结果 id name value 1 a pp 3 b iii 4 b pp 6 c pp 8 c iii 方法1delete YourTable where [id] not in ( select max([id]) from YourTable group by (name + value)) 方法2delete a from 表 a left join( select id=min(id) from 表 gro 阅读全文
posted @ 2012-06-06 12:40 不弃的追求 阅读(134) 评论(0) 推荐(0)
摘要:sql 读取全部记录,重复记录只读取其中一条环境:SQL Server如下:表是:article,有以下字段:id year month username title1 2006 8 admin xxx2 2006 8 admin yyy3 2006 8 admin zzz4 2006 9 admin ppp重复的month数据只调一条SQL 语句select id,title from article where id in(SELECT max(id) FROM article GROUP BY month) -------------------------------------sel 阅读全文
posted @ 2012-06-05 21:40 不弃的追求 阅读(1342) 评论(1) 推荐(0)
摘要:建立一个web 应用,分页浏览功能必不可少。这个问题是数据库处理中十分常见的问题。经典的数据分页方法是:ADO纪录集分页法,也就是利用ADO自带的分页功能(利用游标)来实现分页。但这种分页方法仅适用于较小数据量的情形,因为游标本身有缺点:游标是存放在内存中,很费内存。游标一建立,就将相关的记录锁住,直到取消游标。游标提供了对特定集合中逐行扫描的手段,一般使用游标来逐行遍历数据,根据取出数据条件的不同进行不同的操作。而对于多表和大表中定义的游标(大的数据集合)循环很容易使程序进入一个漫长的等待甚至死机。 更重要的是,对于非常大的数据模型而言,分页检索时,如果按照传统的每次都加载整个数据源的方法. 阅读全文
posted @ 2012-06-05 21:30 不弃的追求 阅读(146) 评论(0) 推荐(0)
摘要:北京联高软件开发有限公司 徐斌 王春晨摘要:数据库优化不仅是数据库管理员的任务,程序员也必须知道一些优化技巧,有利于开发高效的数据库系统。关键字:数据库 优化 技巧如果是团队开发,作为程序员必须知道本文描述的数据库优化技巧,如果你的sa水平比较差,那即使你再努力也些不出高效的数据库应用系统。如果是单独开发,那就更不必说了。多数公司的数据库管理员(sa)是不够格的,即使拿了各种认证证件,也差不多还是垃圾管理员,无非是可以混个好职位,多拿一些工资。如果你所在的公司没有合格的sa,作为程序员的你必须执行做许多数据库优化的工作了。市面上的数据库类图书也不过是骗钱的把戏,无非为了出书而出书,为了出名而出 阅读全文
posted @ 2012-02-03 12:04 不弃的追求 阅读(336) 评论(0) 推荐(1)
摘要:/*日期函数*/DATEADD ( datepart , number, date )--在向指定日期加上一段时间的基础上,返回新的 datetime 值。DATEDIFF ( datepart , startdate , enddate )--返回跨两个指定日期的日期和时间边界数。DATENAME ( datepart , date )--返回代表指定日期的指定日期部分的字符串。DATEPART ( datepart , date )--返回代表指定日期的指定日期部分的整数。DAY ( date )--返回代表指定日期的天的日期部分的整数。GETDATE ( )--按 datetime 值的 阅读全文
posted @ 2011-11-23 12:08 不弃的追求 阅读(330) 评论(0) 推荐(0)
摘要:摘要:很多时候我们在做系统升级时需要将大量的.sql文件挨个执行,十分不方便。而且考虑到执行顺序和客服的操作方便性,能不能找到一种简单的方法来批量执行这些sql文件呢?主要内容:准备工作利用osql/ocmd命令批量执行sql文件使用master..xp_cmdshell存储过程调用osql/ocmd命令总结一、准备工作既然是要批量执行sql文件,首先我们建立两个sql文件:1.sql和2.sql。1.sql的内容:INSERT INTO dbo.Products ( ProductName ) VALUES ( '1.sql_'+CAST(GETDATE() AS NVARC 阅读全文
posted @ 2011-10-10 10:09 不弃的追求 阅读(1775) 评论(0) 推荐(0)
摘要:第一种方法:/* 创建链接服务器 */ exec sp_addlinkedserver 'srv_lnk','','sqloledb','条码数据库IP地址' exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码' go /* 查询示例 */ SELECT A.ListCode FROM srv_lnk.条码数据库名.dbo.ME_ListCode A, IM_BarLend B WHERE A.List 阅读全文
posted @ 2011-09-30 11:23 不弃的追求 阅读(1506) 评论(0) 推荐(0)
摘要:/*exec master.dbo.p_lockinfo 0,0 ---显示死锁的进程,不显示正常的进程exec master.dbo.p_lockinfo 1,0 ---杀死死锁的进程,不显示正常的进程*/Create proc p_lockinfo@kill_lock_spid bit=1, --是否杀掉死锁的进程,1 杀掉, 0 仅显示@show_spid_if_nolock bit=1 --如果没有死锁的进程,是否显示正常进程信息,1 显示,0 不显示asdeclare @count int,@s nvarchar(1000),@i intselect id=identity(int, 阅读全文
posted @ 2011-09-23 15:45 不弃的追求 阅读(1284) 评论(0) 推荐(0)
摘要:1.死锁原理根据操作系统中的定义:死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态。死锁的四个必要条件:互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。非剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。循环等待条件(Circular wait):系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。对应到SQL Server中,当在两个或多个任务中,如 阅读全文
posted @ 2011-09-23 15:43 不弃的追求 阅读(184) 评论(0) 推荐(0)
摘要:对于Sql Server 的优化来说,可能优化查询是很常见的事情。关于数据库的优化,本身也是一个涉及面比较的广的话题, 本文只谈优化查询时如何看懂Sql Server 查询计划。由于本人对Sql Server 的认识有限,如有错误,也恳请您在发现后及时批评指正。首先,打开【SQL Server Management Studio】,输入一个查询语句看看SqlServer是如何显示查询计划的吧。说明:本文所演示的数据库,是本人写的一个演示程序专用的数据库,可以在此网页中下载select v.OrderID, v.CustomerID, v.CustomerName, v.OrderDate, v 阅读全文
posted @ 2011-07-12 16:46 不弃的追求 阅读(206) 评论(0) 推荐(0)