Common operations of SQL SERVER

Operations related to SQL Server data

I dug out the log recorded a long time ago and uploaded it to the blog memo.

Mandatory statement query index

SELECT COUNT(1) FROM ACCT_FLOW with(index =idx_acct_flow_ct) WHERE CREATE_TIME >='2014-03-01 00:00:00' 

Statement lock operation

SELECT * FROM table WITH (HOLDLOCK) //不可修改
SELECT * FROM table WITH (TABLOCKX) //不可以执行任何操作
执行加锁
SELECT * from USERINFO (XLOCK) WHERE USER_ID='111' --排他锁
select * from USERINFO with(updlock) where USER_ID='111'

Query locked objects

SELECT request_session_id spid,OBJECT_NAME(resource_associated_entity_id)tableName 
FROM sys.dm_tran_locks 
WHERE resource_type='OBJECT '

Querying the process that caused the deadlock

use master
go
declare @spid int,@bl int
DECLARE s_cur CURSOR FOR
select  0 ,blocked
from (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>0
OPEN s_cur
FETCH NEXT FROM s_cur INTO @spid,@bl
WHILE @@FETCH_STATUS = 0
begin
if @spid =0
select '引起数据库死锁的是:
'+ CAST(@bl AS VARCHAR(10)) + '进程号,其执行的SQL语法如下'
else
select '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '
进程号SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下'
DBCC INPUTBUFFER (@bl )
FETCH NEXT FROM s_cur INTO @spid,@bl
end

CLOSE s_cur
DEALLOCATE s_cur

Set transaction level

SET Transaction Isolation Level Read UNCOMMITTED
set transaction isolation level repeatable read

begin tran
SELECT * FROM USERINFO WHERE USER_ID='111'
   --共享锁
commit tran

select * from rs.SAMDBIPFIX.dbo.ONLINE_USER

DBlink operations

exec sp_addlinkedserver 'rs' , '' , 'SQLOLEDB' , '192.168.54.32'

exec sp_addlinkedsrvlogin 'rs' , 'false' , null , 'sa' , 'sa@123'
insert into(对应字段) 表 select 对应字段  from 远程库 (远程库实例:rs.SAMDBIPFIX.dbo.ONLINE_USER)
select * into taget_table from src_table;

performance statement

SELECT TOP 10
[session_id],
[request_id],
[start_time] AS '开始时间',
[status] AS '状态',
[command] AS '命令',
dest.[text] AS 'sql语句', 
DB_NAME([database_id]) AS '数据库名',
[blocking_session_id] AS '正在阻塞其他会话的会话ID',
[wait_type] AS '等待资源类型',
[wait_time] AS '等待时间',
[wait_resource] AS '等待的资源',
[reads] AS '物理读次数',
[writes] AS '写次数',
[logical_reads] AS '逻辑读次数',
[row_count] AS '返回结果行数'
FROM sys.[dm_exec_requests] AS der 
CROSS APPLY 
sys.[dm_exec_sql_text](der.[sql_handle]) AS dest 
WHERE [session_id]>50 AND DB_NAME(der.[database_id])='gposdb'  
ORDER BY [cpu_time] DESC

--在SSMS里选择以文本格式显示结果
SELECT TOP 10 
dest.[text] AS 'sql语句'
FROM sys.[dm_exec_requests] AS der 
CROSS APPLY 
sys.[dm_exec_sql_text](der.[sql_handle]) AS dest 
WHERE [session_id]>50  
ORDER BY [cpu_time] DESC

index collation

ALTER INDEX ALL ON LOG REORGANIZE;
ALTER INDEX ALL ON LOG REBUILD WITH (ONLINE = ON);

DBCC Tools

DBCC sqlperf(logspace);
DBCC SHRINKFILE(N'SAMDB_log',50);
sp_helpdb 'SAMDB'
DBCC DROPCLEANBUFFERS;

Implementation plan

SET STATISTICS PROFILE ON;       ——执行计划
SET STATISTICS TIME ON;
SET STATISTICS IO ON;

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325788478&siteId=291194637