如何找出消耗cup的进程信息和执行的语句

 更新时间:2016年11月25日 16:45  点击:1860
要找出最耗资源的sql,我们可以首先使用top等工具,找到最好资源的进程(记住进程号),例如,操作系统进程号为1217,然后根据这个进程号(v$process.spid)在v$process中找到进程地址(v$process.addr),然后根据这个地址在v$session中找到相应的sid(v$session.sid),然后根据这个sid找到相应的hash alue(v$session. sql_hash_value),然后根据这个hash alue在v$sqltext,$sql,v$sqlarea等视图中找到对应的sql语句(sql_text)。

例如:
oracle@cs_db02:/arch1/lunar/tools > whoistopsql.sh 6799
Connected.
SID SERIAL# USERNAME OSUSER MACHINE PROGRAM PROCESS TO_CHAR(LOGON_TIME,
---------- ---------- ------------------------------ ------------------------------ ------------------------------ ---------------------------------------- ------------ -------------------
483 1224 PORTAL www16 bj_wap03 JDBC Thin Client 2004/09/22 02:21:03
SQL_TEXT
----------------------------------------------------------------
SELECT * FROM SPINFO where spID = :1
oracle@cs_db02:/arch1/lunar/tools >


--创建链接服务器
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
exec sp_serveroption 'srv_lnk','rpc out','true' --这个允许调用链接服务器上的存储过程
go
declare @id int
exec srv_lnk.qsoft2.dbo.ins 'people','mobile','13598136858',@id=@id output


SQL Server端口,我们可以通过"服务器端网络试用工具"和"客户端实用工具"
来设定,设定方法是:
分别使用"服务器端网络试用工具"和"客户端实用工具"
设置"常规选项"->"启用的协议"->"Tcp/Ip"->"属性"中的默认端口,假设为1455
然后测试你的端口是否起效,可以使用
telnet sql服务器地址 1455
看看能不能telnet通,如果可以,那就可以进行下面的测试
以往的书写中都没有带端口号,所以比较好写,但是现在更改了端口号了,很多朋友就不是很清楚该如何写连接语句了.下面的数据库连接语句就是更改端口后的形式:
------------------------------
Set oConn = Server.CreateObject("ADODB.Connection")
sConn = "Driver={SQL Server};Server=服务器地址,1455;Database=数据库;UID=用户名;PWD=密码;"
oConn.Open sConn
Response.Write oConn
-------------------------------
输出结果为:
-------------------------------
Provider=MSDASQL.1;Extended Properties="DRIVER=SQL Server;SERVER=服务器地址,1455;UID=用户名;PWD=密码;APP=Internet Information Services;WSID=**;DATABASE=数据库"
-------------------------------
这表明我们已经成功连接数据!


开发过程中的数据库结构结构,不可避免的会需要反复的修改。最麻烦的情况莫过于开发者数据库结构已经修改,而实际应用中数据库又有大量数据,如何在不影响数据库中数据情况下,更新数据结构呢?当然,我们可以手工对应用数据库表结构各个添加、更正、删除的字段一一调整,这对一两个字段来说,是比较简单的,如果改动比较大的时候,这个过程将是非常繁琐的。本文意在介绍使用SQLServer2000 T-SQL语句进行数据库结构调整,希望能够给各位带来些方便。下面以现有数据库表HR_User为例,讲解如何进行这类操作。
HR_User现有结构:
[UserId] [int] NOT NULL ,用户Id,主键
[UserName] [varchar] (50) NOT NULL ,用户姓名
一、数据库添加新字段
现在,需要在HR_User中添加字段用户昵称[NickName] [varchar] (50) 不为空,出生日期[Birthday] [datetime] 不为空。
在开发数据库中我们已经添加了这两个字段,在查询分析器或者企业管理器中生成新表的构造语句如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[HR_User]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[HR_User]
GO
CREATE TABLE [dbo].[HR_User] (
[UserId] [int] NOT NULL ,
[UserName] [varchar] (50) COLLATE Chinese_PRC_CS_AS NOT NULL ,
[NickName] [varchar] (50) COLLATE Chinese_PRC_CS_AS NOT NULL ,
[Birthday] [datetime] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[HR_User] ADD
CONSTRAINT [DF_HR_User_UserId] DEFAULT (0) FOR [UserId],
CONSTRAINT [DF_HR_User_UserName] DEFAULT ('') FOR [UserName],
CONSTRAINT [DF_HR_User_NickName] DEFAULT ('') FOR [NickName],
CONSTRAINT [DF_HR_User_Birthday] DEFAULT (getdate()) FOR [Birthday],
CONSTRAINT [PK_HR_User] PRIMARY KEY CLUSTERED
(
[UserId]
) ON [PRIMARY]
GO
exec sp_addextendedproperty N'MS_Description', N'出生日期', N'user', N'dbo', N'table', N'HR_User', N'column', N'Birthday'
GO
exec sp_addextendedproperty N'MS_Description', N'用户昵称', N'user', N'dbo', N'table', N'HR_User', N'column', N'NickName'
GO
exec sp_addextendedproperty N'MS_Description', N'用户Id', N'user', N'dbo', N'table', N'HR_User', N'column', N'UserId'
在Access中进行时间的比较sql语句很简单,如Select * From table Where thetime>#”& Now() &”#这样即可
在MSSQL就不能这样,要用DateDiff语句和GetDate()函数进行比较。
如Select Count(*) From table Where DateDiff(s,GetDate(),thetime)>0,我自己特别做了个50万条数据的的表,执行这条语句差不多需要1200毫秒。
后来研究了一下,发现其实不需要用DateDiff函数,可以直接使用>来比较,语句如下:Select Count(*) From table Where thetime>GetDate(),这样差不多只要750毫秒,快了将近500毫秒。


[!--infotagslink--]

相关文章

  • Vue基于localStorage存储信息代码实例

    这篇文章主要介绍了Vue基于localStorage存储信息代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-16
  • For循环中分号隔开的3部分的执行顺序探讨

    引发这个问题思考的是一段js程序的运行结果: 复制代码 代码如下: var i = 0; function a(){ for(i=0;i<20;i++){ } } function b(){ for(i=0;i<3;i++){ a(); } return i; } var Result = b(); 这段程序的运行结果是Re...2014-05-31
  • mysql中获取一天、一周、一月时间数据的各种sql语句写法

    创建表:复制代码 代码如下:create table if not exists t( id int, addTime datetime default '0000-00-00 00:00:00′)添加两条初始数据:insert t values(1, '2012-07-12 21:00:00′);insert t values(2, '2012-07...2014-05-31
  • Vue.js中轻松解决v-for执行出错的三个方案

    v-for标签可以用来遍历数组,将数组的每一个值绑定到相应的视图元素中去,下面这篇文章主要给大家介绍了关于在Vue.js中轻松解决v-for执行出错的三个方案,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。...2017-06-15
  • Java使用ScriptEngine动态执行代码(附Java几种动态执行代码比较)

    这篇文章主要介绍了Java使用ScriptEngine动态执行代码,并且分享Java几种动态执行代码比较,需要的朋友可以参考下...2021-04-15
  • C#条件语句、循环语句(if、while)

    这篇文章主要介绍了C#条件语句、循环语句(if、while)的用法,学习c#的朋友可以参考下...2020-06-25
  • C#利用System.Threading.Thread.Sleep即时输出信息的详解

    本篇文章是对C#利用System.Threading.Thread.Sleep即时输出信息进行了详细的分析介绍,需要的朋友参考下...2020-06-25
  • C# 获取硬盘号,CPU信息,加密解密技术的步骤

    这篇文章主要介绍了C# 获取硬盘号,CPU信息,加密解密技术的步骤,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下...2021-01-16
  • c#源码的执行过程详解

    在本篇文章中给大家详细讲述了c#源码的执行过程,对此有需要的朋友们可以学习下。...2020-06-25
  • 查看Redis内存信息的命令

    Redis 是一个开源、高性能的Key-Value数据库,被广泛应用在服务器各种场景中。本文介绍几个查看Redis内存信息的命令,包括常用的info memory、info keyspace、bigkeys等。...2021-01-15
  • c# 循环语句的使用方法

    这篇文章主要介绍了c# 循环语句的使用方法,文中代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下...2020-06-25
  • Mysql 原生语句中save or update 的写法汇总

    背景&#8195;&#8195;在平常的开发中,经常碰到这种更新数据的场景:先判断某一数据在库表中是否存在,存在则update,不存在则insert。 如果使用Hibernate,它自带saverOrUpdate方法,用起来很方便,但如使用原生sql语句呢? &#8195;...2015-03-15
  • 如何利用JavaScript编写更好的条件语句详解

    这篇文章主要给大家介绍了关于如何利用JavaScript编写更好的条件语句的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用JavaScript具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-08-10
  • jquery if条件语句的写法

    下面小编就为大家带来一篇jquery if条件语句的写法。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-05-20
  • 解决Feign获取异常信息的处理方案

    这篇文章主要介绍了解决Feign获取异常信息的处理方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-08-27
  • C#利用ScriptControl动态执行JS和VBS脚本

    C#中利用ScriptControl动态执行JS和VBS脚本的实现方法,需要的朋友可以参考下...2020-06-25
  • 使用BindingResult 自定义错误信息

    这篇文章主要介绍了使用BindingResult 自定义错误信息,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-23
  • Unity延时执行的多种方法小结

    本文主要介绍了4种延时执行的方法,主要包括Update计时器,Invoke,协程,DoTween,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-07-07
  • PowerShell 定时执行.Net(C#)程序的方法

    利用PowerShell可以调用动态页面,然后再用 .bat 执行 PowerShell 脚本,最后把 .bat 添加到服务器的任务计划里面。OK,所有操作都做好了,.Net 定时执行了,是不是呢,有木有呢。...2020-06-25
  • C#实现String字符串转化为SQL语句中的In后接的参数详解

    在本篇文章中小编给大家分享的是一篇关于C#实现String字符串转化为SQL语句中的In后接的实例内容和代码,需要的朋友们参考下。...2020-06-25