如何检查SQL Server 内存瓶颈
DBCC memorystatus
--查询缓冲区池消耗的内存总量包括AWE
SELECT
SUM(multi_pages_kb+virtual_memory_committed_kb+shared_memory_committed_kb+
awe_allocated_kb) AS [Used by BPool, kb]
from sys.dm_os_memory_clerks WHERE type='MEMORYCLERK_SQLBUFFERPOOL'
--确认那些内部组建窃取了缓冲区池中的大部分的页面
SELECT TOP 10 type, SUM(single_pages_kb) AS stolen_mem_kb
from sys.dm_os_memory_clerks
GROUP BY type ORDER BY SUM(single_pages_kb) DESC
--确认在缓冲区池外分配了内存的内部组建
SELECT type, SUM(multi_pages_kb) AS memory_allocated_kb
from sys.dm_os_memory_clerks
WHERE multi_pages_kb!=0
GROUP BY type
相关文档:
在存储过程中使用事务,以下为模板:
CREATE PROCEDURE testPro
AS
/**//* ------- 事务开始---------- */
BEGIN TRANSACTION tran_test
/**//* -------- 保存事务----------*/
SAVE TRANSACTION tran_test
/**//* -------- 数据操作---------*/
INSERT [table1] ( [content] ) VALUES ( '43332' )
/**//*---- ......
问题的提出:
现有表A,内容如下:
编码 仓库 数量
01 A 6
01 B 7
02 A & ......
exists (sql 返回结果集为真)
not exists (sql 不返回结果集为真)
如下:
表A
ID NAME
1 A1
2 A2
3 A3
表B
ID AID NAME
1 1 B1
2 2 B2
3 2 B3
表A和表B是1对多的关系 A.ID => B.AID
......
一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。
CREATE function Get_StrArrayLength
(
@str varchar(1024), --要分割的字符串
@split varchar(10) --分隔符号
)
......