호환성 변경
EXEC sp_dbcmptlevel [DB명], 100;
'DEV > DB' 카테고리의 다른 글
테이블 description (0) | 2011.03.25 |
---|---|
[MSSQL][tip] identity 증가값 설정 (0) | 2011.01.17 |
MSSQL 기본 정리 (0) | 2011.01.13 |
테이블 description (0) | 2011.03.25 |
---|---|
[MSSQL][tip] identity 증가값 설정 (0) | 2011.01.17 |
MSSQL 기본 정리 (0) | 2011.01.13 |
2.
SET
IDENTITY_INSERT 테이블
OFF
3.
DBCC CHECKIDENT(테이블 , reseed, 번호)
4.
SET
IDENTITY_INSERT 테이블
ON
mssql 호환성 변경 (0) | 2011.03.25 |
---|---|
MSSQL 기본 정리 (0) | 2011.01.13 |
조인 방법 (0) | 2010.11.17 |
/*
1. 데이터 타입
1) 문자열
char, varchar
text(clob과 같음)
varchar2 타입은 없음!!!
*/
-- 특정 테이블에서 값을 가져올 필요가 없는 경우
select 1
GO
-- SQL 서버에 선언된 변수값 호출
select @@LANGUAGE
GO
-- 특정 테이블(company) 호출
select *
from company
Go
-- 변수 @
DECLARE @vc varchar(100)
SET @vc = 'ABCDEF'
IF @vc LIKE 'ABC%'
PRINT 'TRUE'
ELSE
PRINT 'FALSE'
GO
-- 테이블 만들기 전에 ANSI_PADDING을 OFF 로 변경 ( 'a2 ' 값인 경우 공백은 저장되지 않게 하기 위해)
-- 기본 세팅은 SET ANSI_PADDING ON 이다.
set ANSI_PADDING OFF
GO
-- c 칼럼이 null 이면 0으로 체인지!! NVL(null ,0)
select ISNULL(null,0)
GO
-- alis 주기
select compno a
from COMPANY
GO
select ABS(12.3)
[MSSQL][tip] identity 증가값 설정 (0) | 2011.01.17 |
---|---|
조인 방법 (0) | 2010.11.17 |
MSSQL의 속도가 너무 느릴때 NVARCHAR로 형변환할 때 jeus설정 (0) | 2010.11.10 |
[참고] http://dbrang.tistory.com/tag/JOIN
http://scidb.tistory.com/118
- 선행테이블 == Driving 테이블 == 바깥테이블 (outer)
- 후행테이블 == Driven 테이블 == 안쪽테이블 (inner)
예)
select *
from tcafe a, tcafe_member b
where a.cafeno = b.cafeno;
실행계획)
select statement optimizer=ALL_ROWS
-hash join
-- table access (full) 'tcafe' (table)
-- table access (full) 'tcafe_member' (table)
풀이)
tcafe, tcafe_member 의 위치 / cafeno 조인조건의 순서와 상관없이
tcafe 먼저 driving 하고 tcafe_member 를 driven 하고 있음.
하나의 커뮤니티(tcafe)에 여러 멤버(tcafe_member)가 존재함.
위 상황은 옵티마이저가 결정한다.
( 힌트를 통해 개발자가 제어도 가능하다 )
Hash Join의 특징 )
ㅇ선행 테이블이 해쉬 테이블로 사용된다.
ㅇ선행 테이블은 후행 테이블이 처리 되기 전에 완전히 모두 읽혀진다.(hash join의 특징)
ㅇ작은 테이블이 바깥 테이블로 사용된다.(작은 테이블 우선)
ㅇNo order is preserved(hash join 특징으로 필요시 Order by를 해줘야 한다.)
ㅇ선행 테이블이 커지면 해시 버켓으로 인해 메모리 사용량은 늘어난다.
ㅇ인덱스는 사용되지 않는다. 따라서 임의성 쿼리에 탁월한 성능 발휘.(hash index생성)
ㅇ자주 나타나면 인덱스가 없거나 상당히 큰 테이블에 유효하다.
예)
select *
from tcafe_member b, tcafe a
where b.cafeno = a.cafeno
and a.cafeno = 2471;
실행계획)
- NESTED LOOPS
-- TABLE ACCESS(BY INDEX ROWID) OF TCAFE
---INDEX(UNIQUE SCAN) OF 'PK_CAFE
-- TABLE ACCESS(BY INDEX ROWID) OF TCAFE_MEMBER
---INDEX(UNIQUE SCAN) OF 'FK_CAFE_MEMBER01'
풀이)
Nested Loop Join
ㅇ선행 테이블의 일치하는 모든 행을 후행 테이블에서 반복하여 찾는다.
ㅇ후행 테이블에 인덱스가 있으면 최상(인덱스 없는 놈을 나중에 쓴다.)
ㅇ선행 테이블의 처리 결과를 후행 테이블에서 받아 필터링하기에 선행 테이블이 전체 일의 양이다.
ㅇ후행 테이블의 필터링 조건은 선행 테이블에서 나온 결과에 대한 추가 필터링 역할만 한다.
ㅇ메모리 사용량 적다.
ㅇ어느 테이블이 먼저 사용? 크기와 상관 없다.(필터링된 양이 적은 테이블이 선행되는게 좋겠지..)
ㅇ필요하다면 선행 테이블을 정렬하고 조인된다.
ㅇ양이 적은 경우에 유효하다.
ㅇRanddom I/O가 많이 발생할 수 있다.
ㅇCPU(Random I/O에 의한 ↑), I/O (↓), Memory (?)
MSSQL 기본 정리 (0) | 2011.01.13 |
---|---|
MSSQL의 속도가 너무 느릴때 NVARCHAR로 형변환할 때 jeus설정 (0) | 2010.11.10 |
[ibatis] resultType 참거짓 (0) | 2010.11.04 |
MSSQL의 속도가 너무 느릴때 NVARCHAR로 형변환할 때
mssql 로 프로젝트를 하다보면 클라이언트 툴에서는 빠른데
서버에서만 느린경우가 있습니다. 한진프로젝트할때 발생했던문제인데
여기 롯데쇼핑쪽에서 문제가 똑같은 문제가 생겼습니다.
아시는분은 패스하시고 공유하고자 메일보냅니다.
하위버전의 mssql jdbc 드라이버에서는 오류가 납니다.
그래서 jdbc드라이버도 첨부합니다.
WAS 서버에 적용 jdbc 풀 부분: sendStringParametersAsUnicode:java.lang.Boolean=false
정보의바다 인터넷에서 찾은글
JDBC 의 PreparedStatement 를 사용한 경우 MS-SQL 성능과 관련된 문제입니다.
MS-SQL JDBC 의 대부분은 PreparedStatement 를 처리할 때, 스토어드 프로시
져 형태로 처리를 합니다. 이 경우, 입력받는 파라메터 중 String 때문에 문
제가 발생하는데...
Java 의 String 은 16-bit 캐릭터이며, 이는 MS-SQL 의 nvarchar 유형과 일치
하므로,
내부적으로 String 파라메터를 nvarchar 유형으로 처리하고자 합니다.
다행히 DB Table 이 nvarchar 유형이라면, 문제가 발생하지 않지만 varchar 라면
해당 테이블의 해당컬럼이 인덱스가 생성되어 있더라도 테이블의 해당컬럼이
nvarchar 로 변환됨으로 인해서 인덱스를 사용하지 못하게 되어(컬럼의 형변
환 되면 인덱스를 사용할 수 없음)
성능문제가 발생하게 됩니다.
JEUS 매니저 리소스 > JDBC
Property sendStringParametersAsUnicode:java.lang.Boolean=false;
조인 방법 (0) | 2010.11.17 |
---|---|
[ibatis] resultType 참거짓 (0) | 2010.11.04 |
프로시저에서 다른프로시저 호출 (0) | 2010.10.25 |
MSSQL의 속도가 너무 느릴때 NVARCHAR로 형변환할 때 jeus설정 (0) | 2010.11.10 |
---|---|
프로시저에서 다른프로시저 호출 (0) | 2010.10.25 |
EXPLAIN PLAN FOR (0) | 2010.10.12 |
[ibatis] resultType 참거짓 (0) | 2010.11.04 |
---|---|
EXPLAIN PLAN FOR (0) | 2010.10.12 |
clob 검색 (0) | 2010.10.05 |
EXPLAIN PLAN FOR
SELECT /*+ rule */LECTNO,
USERID,
nvl(round(SUM(DECODE(HIGH_OBJ_SEQ, 0, CNT, 1))/ decode(1, 0, 1, 1)*100), 0) LECT_PROGRESS_AVG
FROM (SELECT /*+ ordered */A.LECTNO,
A.USERID,
D.HIGH_OBJ_SEQ,
COUNT(*) CNT
FROM MR_LECTURE_MEMBER A,
MR_LECTURE_COURSE B,
LCMS_ORGANIZATION C,
LCMS_COURSE_ITEM D,
SM4_OBJECTINFO E
WHERE A.LECTNO = 53122
and A.LMSTATECD = '9'
AND B.LECTNO = A.LECTNO
AND C.COURSE_SEQ = B.COURSENO
AND C.ORG_CD = B.ORG_CD
AND D.COURSE_SEQ = C.COURSE_SEQ
AND D.ORG_CD = C.ORG_CD
AND D.ORG_SEQ = C.ORG_SEQ
AND E.OBJ_SEQ = D.OBJ_SEQ
AND E.LEARNER_ID = A.USERID
AND E.completion_status = 'completed'
AND D.ITEM_OPEN = 'true'
AND D.HIGH_OBJ_SEQ >= 0
GROUP BY A.LECTNO, A.USERID, HIGH_OBJ_SEQ) AA
GROUP BY LECTNO, USERID;;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);;
프로시저에서 다른프로시저 호출 (0) | 2010.10.25 |
---|---|
clob 검색 (0) | 2010.10.05 |
시퀀스 다른 계정에도 접근권한 주기 (0) | 2010.09.11 |
WHERE DBMS_LOB.INSTR( content, 'aa' )>0;
EXPLAIN PLAN FOR (0) | 2010.10.12 |
---|---|
시퀀스 다른 계정에도 접근권한 주기 (0) | 2010.09.11 |
sql 작업시 주의점. (0) | 2010.08.27 |
clob 검색 (0) | 2010.10.05 |
---|---|
sql 작업시 주의점. (0) | 2010.08.27 |
Invalid byte 1 of 1-byte UTF-8 sequence. (0) | 2010.08.27 |