随笔分类 -  sql

上一页 1 2 3 4 5 6 下一页
找出性能差的语句
摘要:1 找出效率低的语句 SELECTTOP10qs.total_worker_time,qs.total_logical_reads,qs.last_logical_writes,qs.plan_handle,qs.execution_count,(SELECTSUBSTRING(text,qs.statement_start_offset/2+1,(CASEWHENqs.statement_end_offset=-1THENLEN(CONVERT(nvarchar(max),text))*2ELSEqs.statement_end_offsetEND-qs.statement_start_o. 阅读全文
posted @ 2011-07-27 15:15 stswordman 阅读(679) 评论(1) 推荐(0) 编辑
DDL Trigger
摘要:create TRIGGER indexTrigger ON ALL SERVER --FOR DROP_INDEX ,ALTER_INDEX,create_indexFOR DROP_INDEXAS declare @original_login sysname ,@login_name sysname,@user_name sysname,@eventtype nvarchar(100),@commandText nvarchar(max),@dbname sysnameselect @original_login=ORIGINAL_LOGIN(),@login_name=SUSER_NA 阅读全文
posted @ 2011-07-14 16:20 stswordman 阅读(313) 评论(0) 推荐(0) 编辑
DistributionDB过大的原因
摘要:1 同一个发布库的对象被多个发布包(n)所包含,导致产生了n倍的数据 在发布库执行下面的语句,会返回被多次发布的对象 select objid,count(*) from sysarticles group by objid having(count(*)>1) order by COUNT(*) desc 2 distribution cleanup job停止工作,导致MSrepl_commands和MSrepl_transactions数据无法被清除 3 发布库中的任意一个发布的匿名订阅属性/立即初始化属性为true,这会导致全部的数据在max retention到达之前无法被删除 阅读全文
posted @ 2011-07-07 17:05 stswordman 阅读(741) 评论(0) 推荐(1) 编辑
事物复制的troubleshooting 1
摘要:本文大量照抄了Transactional Replication Conversations 上图是一个事物复制的拓扑. 大致可以把这个流程分为3步 logReader Agent从publicationDB的日志文件中读取需要复制的日志信息 logReader Agent将读取的信息写入到distributor的distribution库中 distribution Agent将distribution库中的数据写入到subscriber 三个阶段都可能出现性能问题. 先使用tracertoken进行定位,找到是哪一部出现问题 如果是发布到分发的问题 在logreader agent的作业里 阅读全文
posted @ 2011-06-21 16:06 stswordman 阅读(855) 评论(0) 推荐(1) 编辑
distribution cleanup job2
摘要:第25行开始清除事务和命令 sp_MSdistribution_delete以发布库(@publisher_database_id)为单位清除: 第15行,得到改发布库的需要清除的最大序列号(@max_cleanup_xact_seqno) 地20行,调用sp_MSdelete_publisherdb_trans来删除这些数据,所以早于@max_cleanup_xact_seqno的数据都会被删除 sp_MSdelete_publisherdb_trans是真正执行删除操作的存储过程。该存储过程删除msrepl_commands,并通过调用sp_MSdelete_dodelete来删除msre 阅读全文
posted @ 2011-06-16 14:56 stswordman 阅读(422) 评论(1) 推荐(1) 编辑
在分发服务器上查看信息
摘要:1 发布信息 use [distribution] select publication,publication_id,publisher_db, case publication_type when 0 then 'transactional' when 1 then 'snapshot' when 2 then 'merge' end as publication_type , allow_anonymous, case sync_method when 0 then 'native' when 1 then 'cha 阅读全文
posted @ 2011-06-15 10:46 stswordman 阅读(767) 评论(0) 推荐(0) 编辑
Top子句对查询计划的影响
摘要:1子查询的影响 Nest loop适用于被连接的数据 如果两个表做join操作,会有三种join方式: Nested join, Merge Join, Hash Join Nested Join适用于结果集较小表 Hash Join适用于结果集很大的表 示例如下 createtablemoderatetable1(idintidentity(1,1)primarykey,c1int,c2int,c3int,c4int)createtablemoderatetable2(idintidentity(1,1)primarykey,c1int,c2int,c3int,c4int)declare@n 阅读全文
posted @ 2011-06-14 11:02 stswordman 阅读(2092) 评论(10) 推荐(2) 编辑
tracer token 追踪标记
摘要:tracer token是SQL SERVER 2005引入的一个追踪机制, 应用在replication的场景中.用于查看replication的延迟情况. tracer token的原理如下: 在publication database的日志里生成一条记录,该记录被标记成需要被复制. LogReader agent读取这条记录,插入到distribution database Distribution agent将distribution database该条记录插入到订阅服务器. SQLSERVER会去追踪整个过程,统计三个时间段所花费的时间,这样就可以推断出哪个步骤出现了问题:到底是发 阅读全文
posted @ 2011-06-01 14:09 stswordman 阅读(1691) 评论(0) 推荐(1) 编辑
找到堆表
摘要:select t.name from sys.tables t left join sys.indexes i on t.object_id=i.object_idand i.index_id=1where i.index_id is nulland is_ms_shipped=0 阅读全文
posted @ 2011-05-24 11:55 stswordman 阅读(206) 评论(0) 推荐(0) 编辑
创建数据库
摘要:createdatabasescmon(name=scm,filename='d:\sqldata\scm.mdf',size=3mb,FILEGROWTH=1mb)logon(name=scm_log,filename='f:\sqldata\scm_log.ldf',size=10000mb,FILEGROWTH=100mb)goalterdatabasescmaddfilegroupDFGgoalterdatabasescmaddfile(name=scm1,filename='d:\sqldata\scm1.ndf',size=10000 阅读全文
posted @ 2011-05-21 22:09 stswordman 阅读(292) 评论(0) 推荐(0) 编辑
查看发布服务器信息
摘要:1 查看数据库中有几个发布,以及相应的信息,需要在发布库中执行execsp_helppublicationorselectpubid,name,description,caserepl_freqwhen0then'Transactional'when1then'Snapshot'else'Error'endasrepl_freq,case[status]when0then'Inactive'when1then'Active'else'Error'endasstatus,independent_age 阅读全文
posted @ 2011-05-17 14:47 stswordman 阅读(419) 评论(0) 推荐(0) 编辑
SQLIO.exe
摘要:SAN Performance Tuning with SQLIO SQL Server Best Practices Article param.txt d:\testfile.dat 2 0x0 102400 sqlio -kW -t256 -s300 -dd -o10 -frandom -BH -LS -b8 -Fparam.txtsqlio -kW -t256 -s300 -dd -o10 -fsequential -BH -LS -b8 -Fparam.txtsqlio -kW -t256 -s300 -dd -o10 -frandom -BH -LS -b64 -Fparam.tx 阅读全文
posted @ 2011-05-16 09:27 stswordman 阅读(383) 评论(0) 推荐(0) 编辑
一个分发复制+mirror的bug
摘要:创建事务性复制,pull模式.具体设置见http://www.cnblogs.com/stswordman/archive/2011/04/07/2008753.html. 现在为发布库P建立镜像M并在分发服务器配置Publisherfailoverparnter选项. 一切正常…分发复制可以正常运行. 现在进行failover操作,操作完成后M为主体,P为镜像.一切正常…分发复制可以正常运行 在M上的现存发布里添加一个表A—>’查看快照代理状态’—>启动. 这时快照将会同步到订阅端….一切正常. 这一步的操作使用SSMS的界面完成 在重复一次刚才的操作: 在M上的现存发布里添加一 阅读全文
posted @ 2011-05-10 11:49 stswordman 阅读(482) 评论(0) 推荐(1) 编辑
distribution cleanup job & Agent History Clean Up
摘要:‘distribution cleanup job’作业用于清除distribution库中事务(已经/没有同步到订阅的事务,这取决于具体参数),如果禁止该作业,那么由log reader agent传递到分发库的数据就会越积越多. 而distribution agent会扫描相应的表,将数据传递到订阅库.因此过多的数据会造成distribution agent效率低下,一起复制的延迟等…, 并且也会引起distribution库文件扩张.‘distribution cleanup job’默认每10分钟执行一次,调用下面这个存储过程来完成清除工作.EXEC dbo.sp_MSdistribu 阅读全文
posted @ 2011-05-10 11:13 stswordman 阅读(1143) 评论(0) 推荐(1) 编辑
Log扩张对性能的影响
摘要:新建一个数据库,将数据文件变为1000mb(以保证在实验中数据文件不会变化),日志文件大小设置为1mb,每次增长200k. 不断的向数据库中插入数据,观察分配页和日志增长的关系。Log Growths代表日志文件的增长,可以看出,每次日志增长,Page Allocated都会停滞(正在进行的新页分配的事物会暂停),所以应当尽量避免日志的自动增长造成事物暂停(或者产生过的的虚拟日志文件),而是预估出需要的空间. 如果无法预估,应但是用手动增长代替自动增长:使用性能监视器监控日志的剩余空间,当剩余空间小于某个值的时候(例如小于10%)进行扩张操作,在这种情况下进行扩展,正在进行的事物不会受到(直接 阅读全文
posted @ 2011-04-29 22:17 stswordman 阅读(695) 评论(0) 推荐(0) 编辑
查看/修改分发复制代理的各个属性
摘要:最近给服务器分发复制系统做了一次检查,发现许多设置并没有遵循<Replication Agent Security Model>. 1 发布的检查的项目为: 发布类型:事物型 状态:active 立即初始化:false 允许匿名:false 独立的分发代理: 如果是表的发布,则为true,否则为false (表的订阅为pull类型; 其他类型<例如存储过程>的订阅为push类型,这类的订阅对时时行要求不高,可以使用share agent,并且对应的job运行频率也可以调低) ftp地址 ftp端口 ftp登录 相关脚本,在发布服务器的发布库执行: use[publica 阅读全文
posted @ 2011-04-15 20:28 stswordman 阅读(1639) 评论(0) 推荐(0) 编辑
事物复制的一些错误
摘要:1 Replication-replication distribution subsystem agent null failed. the publication XXX does not exist 从字面上可以看到,当前订阅的发布已经不存在了,而相应的分发代理却因为某些原因没有被删除,继续运行,就会出现这种错误。 这个错误可以在distributor的错误日志中,或者MSrepl_errors表中看到. A1 如何解决:在distributor服务器中的分发数据库中执行如下语句 select publisher,subscriber From MSsubscriber_info 上面的 阅读全文
posted @ 2011-04-10 18:16 stswordman 阅读(3729) 评论(2) 推荐(3) 编辑
引起快照重新初始化的原因
摘要:1添加一个article到发布pub1,点击“查看快照代理状态”,发现pub1中所有的aritlce都生成了快照…在发布库执行selectimmediate_syncFromsyspublicationsorsp_helppublication发现immediate_sync为1. 将immediate_sync改成0即可:sp_changepublication@publication='publicationName',@property='immediate_sync',@value=false原因,可能是在添加发布时选中了immediate_sync选项 阅读全文
posted @ 2011-04-08 09:44 stswordman 阅读(512) 评论(0) 推荐(1) 编辑
配置事物分发复制
摘要:环境如下 testdb2为发布服务器, pub2为发布的数据库,发布其中的表tatestdb3为分发服务器,分发数据库为distributiontestdb4为订阅服务器,订阅数据库为sub2现在要建立从testdb4到testdb2的拉模式的订阅三个数据库实例的启动账户和代理启动账户都是域账户(domain1\xxx),该域账户在OS没有显示授权,在SQLSERVER中也无法登陆,没有任何权限.还有三个域账户,用于配置snapshot agent,log reader agent和 distribution agent domain1\snapshotAgentAdmindomain1\lo 阅读全文
posted @ 2011-04-07 22:42 stswordman 阅读(2006) 评论(4) 推荐(3) 编辑
Trace flag
摘要:1222将死锁(deadlock)信息输出到errorlogdbcctraceon(1222,-1)--全局有效dbcctraceon(1222,1)--当前session有效或者在启动参数中添加3004,3605如果SQLSERVER开启了快速初始化功能,会将相关信息输入到errorlogdbcctraceon(3004,3605,-1)http://www.cnblogs.com/stswordman/archive/2011/01/03/1925072.html3505关闭checkpointdbcctraceon(3505,-1) 阅读全文
posted @ 2011-04-05 22:28 stswordman 阅读(547) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 下一页