当前位置: 首页 > news >正文

京东优惠券网站怎么做/什么是互联网销售

京东优惠券网站怎么做,什么是互联网销售,怎么看一家网站是谁做的,广东省 政府网站 建设方案原文:点击打开链接 虽然不能完全避免死锁,但可以使死锁的数量减至最少。将死锁减至最少可以增加事务的吞吐量并减少系统开销,因为只有很少的事务: 回滚,而回滚会取消事务执行的所有工作。由于死锁时回滚而由应用程序重…

原文:点击打开链接


虽然不能完全避免死锁,但可以使死锁的数量减至最少。将死锁减至最少可以增加事务的吞吐量并减少系统开销,因为只有很少的事务:

回滚,而回滚会取消事务执行的所有工作。
由于死锁时回滚而由应用程序重新提交。


下列方法有助于最大限度地降低死锁:
1.按同一顺序访问对象。
2.避免事务中的用户交互。
3.保持事务简短并在一个批处理中。
4.使用低隔离级别。
5.使用绑定连接。


按同一顺序访问对象
如果所有并发事务按同一顺序访问对象,则发生死锁的可能性会降低。例如,如果两个并发事务获得 Supplier 表上的锁,然后获得 Part 表上的锁,则在其中一个事务完成之前,另一个事务被阻塞在 Supplier 表上。第一个事务提交或回滚后,第二个事务继续进行。不发生死锁。将存储过程用于所有的数据修改可以标准化访问对象的顺序。


避免事务中的用户交互
避免编写包含用户交互的事务,因为运行没有用户交互的批处理的速度要远远快于用户手动响应查询的速度,例如答复应用程序请求参数的提示。例如,如果事务正在等待用户输入,而用户去吃午餐了或者甚至回家过周末了,则用户将此事务挂起使之不能完成。这样将降低系统的吞吐量,因为事务持有的任何锁只有在事务提交或回滚时才会释放。即使不出现死锁的情况,访问同一资源的其它事务也会被阻塞,等待该事务完成。


保持事务简短并在一个批处理中
在同一数据库中并发执行多个需要长时间运行的事务时通常发生死锁。事务运行时间越长,其持有排它锁或更新锁的时间也就越长,从而堵塞了其它活动并可能导致死锁。
保持事务在一个批处理中,可以最小化事务的网络通信往返量,减少完成事务可能的延迟并释放锁。


使用低隔离级别
确定事务是否能在更低的隔离级别上运行。执行提交读允许事务读取另一个事务已读取(未修改)的数据,而不必等待第一个事务完成。使用较低的隔离级别(例如提交读)而不使用较高的隔离级别(例如可串行读)可以缩短持有共享锁的时间,从而降低了锁定争夺。


使用绑定连接
使用绑定连接使同一应用程序所打开的两个或多个连接可以相互合作。次级连接所获得的任何锁可以象由主连接获得的锁那样持有,反之亦然,因此不会相互阻塞


检测死锁
如果发生死锁了,我们怎么去检测具体发生死锁的是哪条SQL语句或存储过程?


这时我们可以使用以下存储过程来检测,就可以查出引起死锁的进程和SQL语句。SQL Server自带的系统存储过程sp_who和sp_lock也可以用来查找阻塞和死锁, 但没有这里介绍的方法好用。

use master
Go
create procedure sp_who_lock
as
begin
declare @spid int,@bl int,@intTransactionCountOnEntry  int,@intRowcount    int,@intCountProperties   int,@intCounter    intcreate table #tmp_lock_who (id int identity(1,1),spid smallint,bl smallint)IF @@ERROR<>0 RETURN @@ERRORinsert into #tmp_lock_who(spid,bl) select  0 ,blockedfrom (select * from sysprocesses where  blocked>0 ) a where not exists(select * from (select * from sysprocesses where  blocked>0 ) b where a.blocked=spid)union select spid,blocked from sysprocesses where  blocked>0IF @@ERROR<>0 RETURN @@ERROR -- 找到临时表的记录数select  @intCountProperties = Count(*),@intCounter = 1from #tmp_lock_whoIF @@ERROR<>0 RETURN @@ERROR if @intCountProperties=0select '现在没有阻塞和死锁信息' as message-- 循环开始
while @intCounter <= @intCountProperties
begin
-- 取第一条记录select  @spid = spid,@bl = blfrom #tmp_lock_who where Id = @intCounter beginif @spid =0 select '引起数据库死锁的是: '+ CAST(@bl AS VARCHAR(10)) + '进程号,其执行的SQL语法如下'elseselect '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '进程号SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下'DBCC INPUTBUFFER (@bl )end-- 循环指针下移set @intCounter = @intCounter + 1
enddrop table #tmp_lock_whoreturn 0
end

杀死锁和进程
如何去手动的杀死进程和锁?最简单的办法,重新启动服务。但是这里要介绍一个存储过程,通过显式的调用,可以杀死进程和锁。

use master
goif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_killspid]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_killspid]
GOcreate proc p_killspid
@dbname varchar(200)    --要关闭进程的数据库名
as  declare @sql  nvarchar(500)  declare @spid nvarchar(20)declare #tb cursor forselect spid=cast(spid as varchar(20)) from master..sysprocesses where dbid=db_id(@dbname)open #tbfetch next from #tb into @spidwhile @@fetch_status=0begin  exec('kill '+@spid)fetch next from #tb into @spidend  close #tbdeallocate #tb
go--用法  
exec p_killspid  'dbName'

查看锁信息
如何查看系统中所有锁的详细信息?在企业管理管理器中,我们可以看到一些进程和锁的信息,这里介绍另外一种方法。

--查看锁信息
create table #t(req_spid int,obj_name sysname)declare @s nvarchar(4000),@rid int,@dbname sysname,@id int,@objname sysnamedeclare tb cursor for select distinct req_spid,dbname=db_name(rsc_dbid),rsc_objidfrom master..syslockinfo where rsc_type in(4,5)
open tb
fetch next from tb into @rid,@dbname,@id
while @@fetch_status=0
beginset @s='select @objname=name from ['+@dbname+']..sysobjects where id=@id'exec sp_executesql @s,N'@objname sysname out,@id int',@objname out,@idinsert into #t values(@rid,@objname)fetch next from tb into @rid,@dbname,@id
end
close tb
deallocate tbselect 进程id=a.req_spid,数据库=db_name(rsc_dbid),类型=case rsc_type when 1 then 'NULL 资源(未使用)'when 2 then '数据库'when 3 then '文件'when 4 then '索引'when 5 then '表'when 6 then '页'when 7 then '键'when 8 then '扩展盘区'when 9 then 'RID(行 ID)'when 10 then '应用程序'end,对象id=rsc_objid,对象名=b.obj_name,rsc_indidfrom master..syslockinfo a left join #t b on a.req_spid=b.req_spidgo
drop table #t


http://www.lbrq.cn/news/1292527.html

相关文章:

  • 动态网页设计网站建设/sem是什么方法
  • 龙泉市做网站企业/排名优化哪家好
  • 乌鲁木齐城乡建设委员会的网站/外贸网站制作公司
  • 一个新网站要怎么做seo/百度手机助手苹果版
  • 白银市城乡建设局网站/详情页设计
  • 网站制作公司报价/5118站长工具箱
  • 大理石在哪些网站做宣传/淘宝代运营靠谱吗
  • 动态网站开发平台/网络广告策划案
  • 兰州网站建设/百度投广告怎么收费
  • 游戏网站设计风格有哪些/seo博客网站
  • 广州 网站建设 行价/seo数据是什么
  • jtbc网站开发教程/优帮云首页推荐
  • 织梦体育网站模板/百度网址安全中心
  • wordpress导入表单/广州网站优化步骤
  • 中国三农建设工作委员会官方网站/站长之家点击进入
  • 网站注册页面怎么做数据验证/2021年近期舆情热点话题
  • 江苏专业做网站的公司哪家好/网站seo优化发布高质量外链
  • 免费微网站建站系统/最近疫情最新消息
  • 佛山宽屏网站建设/线上推广的优势和好处
  • 现在有什么网站做设计或编程兼职/星链seo管理
  • 网站制作教程网站/优化疫情二十条措施
  • 长春专业做网站公司/北京网站优化排名
  • 做线上兼职哪个网站比较靠谱/怎么建自己的网站?
  • dw做门户网站/上海专业做网站
  • 公司做网站推广的价格/项目优化seo
  • 新野做网站/百度风云榜小说榜排名
  • 公司网站做的很烂/搜索推广代运营
  • 做单页网站价格/深圳外贸网站推广
  • 湖北省建设主管部门网站/今日热点新闻
  • 苏州前几天网站建设/营销推广的平台
  • 大模型——上下文工程 (Context Engineering) – 现代 AI 系统的架构基础
  • 计算机网络:概述层---计算机网络的性能指标
  • 【STM32】485接口原理
  • Pytorch01:深度学习中的专业名词及基本介绍
  • Nginx IP授权页面实现步骤
  • 基于FPGA的多级流水线加法器verilog实现,包含testbench测试文件