블로그 이미지
보미아빠

카테고리

보미아빠, 석이 (530)
밥벌이 (16)
싸이클 (1)
일상 (1)
Total
Today
Yesterday

달력

« » 2025.10
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

최근에 올라온 글

sitelist

카테고리 없음 / 2013. 3. 22. 01:07

하나하나 추가 해야쥐~

 

http://sql-blogs.com/

http://technet.microsoft.com/en-us/library/cc298801%28v=office.14%29.aspx

 

   

http://blogs.msdn.com/b/sql_pfe_blog/archive/2013/04/15/sql-2012-system-health-reporting-dashboard-visualizing-sp-server-diagnostics-results.aspx

 

http://blogs.msdn.com/b/ntdebugging/archive/2008/04/03/windows-performance-toolkit-xperf.aspx

Posted by 보미아빠
, |

세상엔 똑똑한 사람이 많네........DMV 도 좋고~

결국은 메모리 leak 이 나고 있었고, 그로인해 컴파일이 계속되는 현상이 일어났음...

리부팅 후 현상이 사라졌다고 함.

패치를 하세용~ 패치~

 

http://support.microsoft.com/kb/2778088

 

SELECT cast(sum(pages_in_bytes)/1024./1024 as int) sizeMB, MO.TYPE, MC.TYPE
  FROM SYS.DM_OS_MEMORY_OBJECTS MO
  JOIN SYS.DM_OS_MEMORY_CLERKS MC
    ON MO.PAGE_ALLOCATOR_ADDRESS=MC.PAGE_ALLOCATOR_ADDRESS
 GROUP BY MO.TYPE, MC.TYPE
HAVING MC.TYPE = 'MEMORYCLERK_SQLGENERAL'
 ORDER BY 1 DESC;

 

sizeMB TYPE TYPE
3 MEMOBJ_RESOURCE MEMORYCLERK_SQLGENERAL
3 MEMOBJ_SQLTRACE MEMORYCLERK_SQLGENERAL
0 MEMOBJ_EXCHANGEPORTS MEMORYCLERK_SQLGENERAL
0 MEMOBJ_EXCHANGEXID MEMORYCLERK_SQLGENERAL
0 MEMOBJ_METADATADB MEMORYCLERK_SQLGENERAL
0 MEMOBJ_SECURITY MEMORYCLERK_SQLGENERAL
0 MEMOBJ_SCTCLEANUP MEMORYCLERK_SQLGENERAL
0 MEMOBJ_RULETABLEGLOBAL MEMORYCLERK_SQLGENERAL
0 MEMOBJ_REPLICATION MEMORYCLERK_SQLGENERAL
0 MEMOBJ_EVENTSUBSYSTEM MEMORYCLERK_SQLGENERAL
0 MEMOBJ_GLOBALPMO MEMORYCLERK_SQLGENERAL
0 MEMOBJ_AUDIT_MGR MEMORYCLERK_SQLGENERAL
0 MEMOBJ_FULLTEXTGLOBAL MEMORYCLERK_SQLGENERAL
0 MEMOBJ_REMOTESESSIONCACHE MEMORYCLERK_SQLGENERAL
0 MEMOBJ_RESOURCESUBPROCESSDESCRIPTOR MEMORYCLERK_SQLGENERAL
0 MEMOBJ_ASYNCHSTATS MEMORYCLERK_SQLGENERAL
0 MEMOBJ_DIAGNOSTIC MEMORYCLERK_SQLGENERAL
0 MEMOBJ_SYNCPOINT MEMORYCLERK_SQLGENERAL

 

 

http://social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/ccfe7ed4-b805-4e48-8068-ea5ef7156f1b/



SELECT TOP(20) [TYPE], SUM(PAGES_KB) AS [SPA MEM, KB]

  FROM SYS.DM_OS_MEMORY_CLERKS

 GROUP BY [TYPE] 

  WITH ROLLUP

 ORDER BY SUM(PAGES_KB) DESC;



SELECT cast(sum(pages_in_bytes)/1024./1024 as int) sizeMB, MO.TYPE, MC.TYPE

  FROM SYS.DM_OS_MEMORY_OBJECTS MO

  JOIN SYS.DM_OS_MEMORY_CLERKS MC 

    ON MO.PAGE_ALLOCATOR_ADDRESS=MC.PAGE_ALLOCATOR_ADDRESS

 GROUP BY MO.TYPE, MC.TYPE

 ORDER BY 1 DESC;

 

 dbcc traceon (3604)

 dbcc tracestatus (-1)



Posted by 보미아빠
, |

http://www.sqlskills.com/blogs/paul/how-are-auto-created-column-statistics-names-generated/

 

누가 이 룰을 따라 복합키 통계를 수동으로 만들었다..........난..이게 버전이 좋아지면서 자동으로 만들었나..생각했다.

-_- 이름 잘 지어라....

Posted by 보미아빠
, |

공급자에 따라 동작이 틀리다.

 

1. 공급자에 따라 with (nolock) 힌트가 먹는 경우도 있고 아닌 경우도 있다.

    예를들어 Microsoft OLE DB Provider for SQL Server 의 경우,

    with (nolock) 이 전달되어 정상적으로 동작 합니다.

    또한 Transaction isolation level read uncommitted 도 동작 합니다.

 

-- server,ip 로 적던지 sqlservermanager10 에서 별칭으로 등록한 이름을 적도록 한다.

    32, 64비트 모든 클라이언트가 정상 동작하기 위해서는 별칭을 모두 등록 하도록 한다.

 

ex1)

EXEC master.dbo.sp_addlinkedserver @server = N'yourip,port', @srvproduct=N'SQL Server'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'yourip,port',@useself=N'False',@locallogin=NULL,@rmtuser=N'id',@rmtpassword='pass'

 

2. 그러나 Microsoft OLEDB Provider for ODBC Driver 의 경우,

    with (nolock) 이 전달되지 않습니다.

    역시 Tran........uncommitted 도 동작하지 않습니다.

    이 경우 work-around 로 linked server 대상 서버에 view 를 만들고 view 에 nolock 힌트를 명시하면 가능 합니다.

 

ex2)

EXEC master.dbo.sp_addlinkedserver @server = N'test2', @srvproduct=N' ', @provider=N'MSDASQL', @provstr=N'Driver={SQL Server};Database=master;Server=yourip,port;UID=id;PWD=pass;'
 EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'test2',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL

 

 

아래는 일반 링크드 서버 생성 쿼리

 

EXEC master.dbo.sp_addlinkedserver @server = N'a', @srvproduct=N'',@provider = 'sqlncli',@datasrc = '127.0.0.1,14333'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'a',@useself=N'False',@locallogin=NULL,@rmtuser=N'아이디',@rmtpassword='암호'

Posted by 보미아빠
, |

http://support.microsoft.com/kb/970406

 

모 MVP 님께서 2008 에도 synAttackProtect 를 설정해야 한다고 강의를 했다고 한다.

이는 잘못된 정보인듯 하다.

참고로 강모 MVP 는 아니란다....^^;;

 

Note The SynAttackProtect registry key is not applicable on Windows Server 2008, Windows Vista, and later Windows versions. For a list of the registry keys on these operating systems, visit the following link:

TCP/IP Registry Values for Microsoft Windows Vista and Windows Server 2008

 

TCPIP_Reg.doc

Posted by 보미아빠
, |
http://blogs.msdn.com/b/psssql/archive/2013/02/13/breaking-down-18065.aspx

 

음 대부분의 회사에서 connection pool 을 쓰면서 저 에러를 많이 보았을것 같다.

정상적인 시나리오에서 언제 이런 에러가 발생할 수 있는지 설명했으며,

이 에러를 보이지 않게 감추는 hotfix 를 발표 했다.

그래도 여전히 dm_os_ring_buffer 에서는 확인 할 수 있다.

 

시원하다......아쒸 돌팔이들 약 열라 팔던데....이제 시원하게 설명 되는구나...

Posted by 보미아빠
, |

2012 부터 TVP 부터는 템프테이블을 캐싱해서 성능이 많이 좋아 집니다.

2008, 2008 R2 에서는 프로시저로 TVP 파라미터로 받으면, 캐시해서 쓰지 못했습니다.

그런데 2012에서는 잘 됩니다.

 

http://blogs.msdn.com/b/psssql/archive/2013/02/26/temp-table-caching-improvement-for-table-valued-parameters-in-sql-server-2012.aspx

 

게임과 인터넷 게시판에서는 이제 SQL Server 가 없어지는 추세 입니다.

이 비싼 SQL Server 를 게임을 위해.......인터넷 게시판을 위해서는 쓸 수 없다는 것이죠.

동감 합니다.

 

라이선스를 싸게하고 캐시팜 기능을 빨리넣어주면 살아남을수도 있을건데......아쉽습니다.

Posted by 보미아빠
, |

lock 의 이해

카테고리 없음 / 2013. 3. 4. 23:38

http://support.microsoft.com/kb/224453

 

 

begin tran a1111

이라고 적고 시작하면 나중에 로그 깔때 편함~

 


--tran의 최초 시작자 짐작
select transaction_id, *  from sys.dm_tran_active_transactions where transaction_type <> 2
--1593679

--정보확인
--select * from sys.dm_tran_locks where request_owner_id = 1593679

--로그레코드 확인
select database_transaction_begin_lsn, * from sys.dm_tran_database_transactions where transaction_id = 1593679
729000000293200001

729 0000002932 00001 =10진수
8char 8char 4char 로 변환 binary
'000002D9:00000B74:0001'

729 0000002944 00007
000002D9:00000b80:0007

729 0000002944 00011
000002D9:00000b80:000b
rowlog contents 0 = 이전값
rowlog contents 1 = 이후값

0x0101000C0000782E501500000102000402030004
0x3000140001000000E10CF400EA9D00002A000000050000020028003700446F6E2774205061

select top 10 * from fn_dblog(null, null) where [Current LSN] >= '000002D9:00000B74:0001'
description 에 transaction 이름 나옴 a1111;0x010500000000000515000000c64261d7fedf1e8e80857abae8030000

 

select * from sys.dm_tran_database_transactions where transaction_id =
1580558

database_transaction_begin_lsn

729000000293200001

2d9:00000B74:0001

729
0000002932
00001

select * from dbo.dm_tran_session_transactions_20130305_064712

 

So 0000009d:0000021e:0001 becomes '157' + '0000000542' + '00001' = '157000000054200001'.

select top 10 * from fn_dblog(null, null) where [Current LSN] >= '000002D9:00000B74:0001'
0x0101000C0000782E501500000102000402030004

 

Posted by 보미아빠
, |


소고기다! 정말맛있어요~~~♥
Posted by 보미아빠
, |


IF OBJECT_ID ('TBLA') IS NOT NULL
DROP TABLE DBO.TBLA;
GO

CREATE TABLE DBO.TBLA (COL1 INT, COL2 INT, COL3 INT);
GO

INSERT DBO.TBLA
SELECT TOP 100000 A.ID, B.ID, C.ID
  FROM SYS.SYSOBJECTS A, SYS.SYSOBJECTS B , SYS.SYSOBJECTS C
GO


SELECT COUNT(DISTINCT COL1), COUNT(DISTINCT COL2)
  FROM DBO.TBLA
GO

 

 

SELECT COUNT(C1), COUNT(C2)
FROM (
       SELECT DISTINCT
              CASE WHEN CP=1 THEN COL1 ELSE NULL END C1
      , CASE WHEN CP=2 THEN COL2 ELSE NULL END C2
      FROM DBO.TBLA
   INNER LOOP JOIN (SELECT 1 'CP' UNION ALL SELECT 2) B
        ON 1=1
   ) A    
OPTION (QUERYTRACEON 8649)

 

 

우린 cpu 가 남아 돌구요 i/o 는 영 비리 비리 해서........꼭 한번만 읽어서 처리하고 싶어요...

그러나 sql server 는 멀티컬럼 count(distinct) 는 spool 없이 처리하지 못합니다. spool 이 생기면 serial 처리가 되고....

 

이런게 가능은 하지만 worktable 을 만들어 씀 (ssd 에 있다고 하고,,,, ㅋㅋㅋ) 혹은 ram disk?

실제 데이터가 엄청 크고, count(distinct a), count(distinct a) 의 종류가 많지 않을때는 아래 쿼리가 훨씬 유리해 보인다.

 

select COUNT(col1), COUNT(col2)
from (
select col1, col2
  from dbo.tbla
 group by grouping sets ((col1), (col2))
 ) a
go

 

 

 

그러나, 각각의 컬럼에 인덱스가 있다면, 쌈빡하게 품.....그건

SELECT COUNT(DISTINCT COL1), COUNT(DISTINCT COL2)
FROM DBO.TBLA

 

이거나 마찬가지

Posted by 보미아빠
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함