c:\ 에 백업 하기
restore 를 할 경우도 해당 윈도우 계정이 c:\에 권한이 없으면 명령을 수행하지 못한다.
아빠~ 심심해~
심심하단 말이야....
나를 기쁘게 해줘~
웅?
옹~? 못해?
주스 한잔 빨구 생각해 보자궁~
나 이뻐요?
아빠 목에서 안떨어지기~
뭐~ 없나~?
이렇게 나들이 한번 더 가야 할건데.......
|
SQL Server 의 경우 Cache시스템을 자체적으로 사용 합니다. OS 에서 파일 시스템 메모리 캐시 영역을 많이 가져가는 상황에서 SQL Server 메모리 동작을 동적 메모리 제어로 된다면, 상대적으로 어플리케이션이나 서비스는 메모리 사용을 더 많이 하지 못하게 됩니다.
LargeSystemCache [ http://technet.microsoft.com/en-us/library/cc784562(WS.10).aspx ]설명에도 있듯이 일반적으로 System Cache 가 크면 일반적으로 서버의 성능이 증가합니다. 그러나, 어플리케이션이나 서비스에서 사용할 물리 메모리 사용량은 상대적으로 줄어들게 됩니다. 그 아래 설명은 해당 값이 1 이면, 시스템 데이터를 디스크 서브시스템으로 늦게 반영 시키고 다르게 말해 해당 셋팅을 끄면 어플리케이션에서 물리 메모리를 더 사용 할 수 있다는 이야기입니다. 그래서, Large system cache 옵션을 쓰지 말라는 것입니다. 자 이제 개념을 이해 했으면, SQL Server 전용 서버에서의 메모리 사용계획 옵션을 프로그램으로 설정하는게 바른 설정 이겠지요?
시스템 등록 정보 > 고급 > 성능 옵션 > 메모리 사용 계획
이 옵션은 Windows Kernel에서 System Cache를 Large System Cache로 설정 할지를 선택하는 옵션입니다. 해당 설정은 Registry HKLM\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\LargeSystemCache에서 수동으로 설정이 가능합니다.
해당 옵션은Windows Vista와 Windows 2008에서 없어졌습니다(GUI로 설정할 수 있는 방법은 없습니다), 설정을 원하시면 해당 Registry 값에서 LargeSystemCache 값을 0 or 1로 변경합니다.
http://blogs.technet.com/b/sankim/archive/2008/05/19/largesystemcache.aspx
위와 같은 Large system cache 라는 옵션은 OS 에서 파일 데이터를 자동으로 캐시에 넣어 두겠다. 라는 옵션입니다. SQL Server 의 경우 고정메모리 할당에서(MAX MIN 메모리 고정으로 사용의 경우)는 퍼포먼스의 차이가 거의 없습니다. (그래서 GUI 설정에서 빼버렸는지도 모르겠습니다. -_-개인 사견.....)
현재까지 no_merge, no_push_pred 라는 힌트는 sql 에서 지원되지 않는다.
아직 멀었다. 아직 어린이 티가 팍팍 나지 않는가?
착한 어린이 mssql 2011 denali 이렇게 선전하면 좋을듯..........
개인적으로 mssql query hint 는 정말 꼬질 꼬질하고 다른 DBMS와 비교해 아주 신생아 수준인거 같음......
force seek force scan 나오지만 이런 기본적인게 안된다.......-_- 생각을 바꾸어 봐야 하나....
바꾸어도 용서가 안되는데.........바봉~ 이렇게 멍청하고 한 우물만 파는 바보들이 있으니 내가 밥 먹고 살겠지......
감사합니다. mssql 님....^-----^;
if object_id('ttt') is not null
drop table ttt
go
;with test
as (
select '19800101' birth,'20110101' today union all
select 'asdf' birth ,'20110101' today
)
select *
into ttt
from test
go
select *
from (select birth , today
from ttt
where isdate(birth)=1
and isdate(today)=1 )a
where datediff(yy,cast(birth as datetime),cast(today as datetime)) > 30
go
-- 위 쿼리는 당연히 돌아야 할 것 같은 쿼리이지만 돌아가지 않는다.
-- view predicate merge issue 를 모르면 당연한 이야기 이다.
-- 이것만 책으로 100장이 넘게 설명한 책도 있다.
--단순하게 아래와 같이 수정해 보자
select birth, today
from (select top 100000000000 birth, today
from ttt
where isdate(birth)=1
and isdate(today)=1 )a
where datediff(yy,cast(birth as datetime),cast(today as datetime)) > 30
-- 잘 돌아가지요? 해당 이슈에 대해서는 스터디때 설명해 드리겠습니다.
스터디 모집 광고는 다음을 참고 하세요~
어디 성욱이가 잘 정리해 둔게 있었는데....어디쥐......
http://cafe.naver.com/sqlmvp/1148 일단 이거 참고요~ |
* i/o throttle 제어
- 3MB 로 제한하고 싶다면 -k3 이라고 기술한다.
http://support.microsoft.com/kb/929240/en-us
* Traceflag 3505 를 이용한 수동 검사점 제어
http://support.microsoft.com/kb/815436
이외 Traceflag 가 몇개 더 있지만 별로~
* sp_configure
- max async IO 조정
- recovery interval 조정
단, 저 옵션들은 checkpoint 를 이해하고 쓰셔야 합니다. 아니면 sql server 내렸다 올리면 복구한다고 한세월 보냅니다. 주의 하세요~
use db1
go
if object_id('tblx') is not null
drop table tblx
go
create table tblx
(idx int
,a char(6000)
)
go
insert into tblx values (1,1)
go 10000
checkpoint
위 카운터를 이용해 더 상세히 모니터링 가능.
indirect checkpoint
https://www.mssqltips.com/sqlservertip/2652/indirect-checkpoints-in-sql-server-2012/