$(document).ready(function(){
 // sticky menu 설정
 var stickymenu = function(isInit){
  var marginLeft = 500;
  var layerLeft = document.body.clientWidth / 2 + marginLeft;
  var marginTop = 150;
  var currentTop = parseInt($("#stickymenu").css("top"));
  var animateTime = 500;

  if(isInit == true){
   currentTop = marginTop;
  }

  //alert(currentTop);
 
  $("#stickymenu").attr("style", "position:absolute; top:" + marginTop + "px; left:" + layerLeft + "px;");

  $(window).scroll(function(){
   var position = $(window).scrollTop();

   $("#stickymenu").stop().animate({"top":position + currentTop + "px"}, animateTime);
  });


 }

 stickymenu(true);
});



<div id="stickymenu">

    내용

</div>

checkbox Check Or UnCheck

WEB TIP/jQuery | 2010/01/07 13:55 | 제퐁
$('#checkBoxName').is(":checked");

간단하게 위와 같이 하면 체크박스 선택 유무를 체크할 수 있음.

Transaction

WEB TIP/MS-SQL | 2010/01/07 13:26 | 제퐁
출처: DBGuide


Question

CREATE  PROC [dbo].[usp111]  @U  int,@C tinyint,@D tinyint
 BEGIN TRAN
 DECLARE @ReturnStatus INT
 INSERT INTO [dbo].[test] ([U], [C], [d])
 SELECT  @U, @C, @d

 IF @@ERROR <> 0 OR @@ROWCOUNT <> 1 GOTO QuitWithRollback
     
 COMMIT TRAN
 GOTO EndSave

QuitWithRollback:
    IF (@@TRANCOUNT > 0)
 BEGIN
 ROLLBACK TRANSACTION
 SELECT 0
 RETURN
 END
EndSave:
 SELECT 1

 

 

 

 

CREATE  PROC [dbo].[usp333]  @U  int,@C tinyint,@D tinyint
AS
 SET NOCOUNT ON
 
 DECLARE @Flag TINYINT
 INSERT INTO [dbo].[test] ([U], [C], [d])
 VALUES(@U, @C, @d)

 IF @@ERROR <> 0 OR @@ROWCOUNT <> 1
 BEGIN
  SELECT @Flag
 END

 ELSE
 BEGIN
  SELECT @Flag
 END
GO

 

굳이 트랜잭션을 걸 필요는 없는 상태이긴 한데 트랜잭션을 해 놓은 거랑 안 해놓은것..

그리고 select 로 하는 건 안 좋고 return 으로 해야 성능이 좋다고 하는게 이게 맞는 이야기 인가요?



Answer

MSSQL 에서는 기본적으로 암시적 트랜잭션을 사용합니다.

 

명시적 트랜잭션은 하나이상의 문장에 대한 일관성을 위해서 사용합니다.

그렇기 때문에, 위의 예제처럼 하나의 INSERT 문인 경우에는 굳이 BEGIN TRAN을 사용하지 않아도 크게 문제되지 않습니다.

 

대신 아래와 같이 여러개의 문장에 대해 트랜잭션 일관성을 유지해야 한다면 반드시 명시적 트랜잭션을 사용해야 합니다.

 

BEGIN TRAN

 

INSERT ... SELECT 1

IF @@ERROR <> 0

BEGIN

    ROLLBACK TRAN
    RETURN

END

 

INSERT ... SEECLT 2

IF @@ERROR <> 0

BEGIN

    ROLLBACK TRAN
    RETURN

END

 

COMMIT TRAN

 

 

결과를 반환하는 것이 아니라 단순한 플래그 값만을 가져오는 것이라면 RETURN을 쓸 수 있지만,

필요한 결과를 여러 개의 값으로 반환해야 한다면 SELECT를 사용해야 합니다.

(SELECT를 사용한다고 해서 크게 성능 문제가 발생하지는 않습니다. 물론, 불필요하다면 SELECT를 사용하지 않아야 하겠지요)

 

감사합니다.

 

SQL Server MVP

성대중

태그 : Transaction

Plan Caching

WEB TIP/MS-SQL | 2010/01/06 14:55 | 제퐁
출처: SQLER 김민석님

좋은 글이 있어서 슬그머니 스크랩합니다;;

[2000 에서 확인 32bit without AWE]

dbcc memorystatus

 Dynamic Memory Manager         Buffers    
------------------------------ -----------
QueryPlan                      205678
205678 * 8KB = 1645424 KB (한강으로 GoGo~))

[2005 에서 확인 32bit with AWE]

AWE Allocated                                                   5349376

CACHESTORE_OBJCP (Total)                                          KB

SinglePage Allocator                                            31280

CACHESTORE_SQLCP (Total)                                          KB

SinglePage Allocator                                            740208 (한강으로 GoGo~)

 

 

[2008 에서 확인 쿼리 64bit 24GB MaxMemory]

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

  FROM SYS.DM_OS_MEMORY_CLERKS

 GROUP BY [TYPE] 

  WITH ROLLUP

 ORDER BY SUM(SINGLE_PAGES_KB) DESC;

제일 상단의 총 합계가 얼마인가요?

 4GB 좀 넘어요?  역쉬 (한강으로 GoGo~)

SQL Server 2000 32bit 를 쓰고 있는데 플랜 메모리가 1.6GB 이다.

SQL Server 2000, 2005, 2008 32bit AWE를 쓰고 있는데 플랜 메모리가 700MB 이다.

SQL Server 2005 ~ 2008 64bit 쓰고 있는데, 플랜 메모리가 4GB 정도 되더라.

이럼 개발자랑 DBA 랑 두손 부여잡고 한강으로 가시길 바랍니다. (농담 입니다. ^^;;)

위 양은 쓸수 있는 최대양을 다 쓰고 있는 모습 입니다.

 

이런 서버들은 대부분 Plan Cache 를 재활용 하지 못하는 구조 입니다.

원인은 다양한데요,

 

1.  top 절이 파라메터 바인딩 되지 못한다.

2. where 절 다음에 오는 predicate 가 파라메터 바인딩 되지 못한다.

3. dynamic sql 을 파라메터 바인딩 시키지 않고 그냥 exec (@sql) 로 돌린다.

4. 이외 영역의 이슈는 각 메모리 영역별로 리서치 해보시길 바랍니다.

 

등등의 이슈가 있습니다. (잘 튜닝된 서버의 플랜 캐시 메모리 사이즈는 100 MB를 넘지 않습니다. )

자기가 운영하는 서버가 이런 사황에  있다면,  빨리 고쳐 Memory / CPU / DISK Subsystem 을 보다 효율적으로 사용 할 수 있도록 고쳐 주세요 ~

 

더 상세한 내용은 다음을 참고 하세요

http://msdn.microsoft.com/en-us/library/ee343986.aspx

태그 : pang caching,sql

파일 복사, 이동, 삭제

WEB TIP/C# | 2009/11/30 17:25 | 제퐁
string sDir = @"C:\TEST\test.txt";
FileInfo fileinfo = new FileInfo(sDir);

if (fileinfo.Exitsts)
{
// 복사
// true 미설정시 파일이 존재하면 에러 발생
filinfo.CopyTo(@"C:\TEST\test2.txt", true);

// 이동
fileinfo.MoveTo(@"C:\TEST\test2_move.txt");

// 삭제
fileinfo.Delete();
}
이전 1 2 3 4 5 ... 47 다음