[MSSQL]SQL 서버 관리자가 알아야 할 11가지 유용한 팁
http://www.jnetwork.co.kr/bbs/board.php?bo_table=useguide&wr_id=208
[MSSQL]SQL 서버 관리자가 알아야 할 11가지 유용한 팁
http://www.jnetwork.co.kr/bbs/board.php?bo_table=useguide&wr_id=208
MS SQL.Select-Pivot. UnPivot (0) | 2017.02.09 |
---|---|
MS SQL.Select-java vo자동생성, procedure arg 자동생성 (0) | 2017.02.09 |
MS SQL.Select-CRUD 문장 자동 만들어주기 (0) | 2017.02.09 |
MS SQL.SELECT-레코드를 한 컬럼으로 만들기 (0) | 2017.02.09 |
[ tomcat - 각 버전별 download ]
1. URL : http://archive.apache.org/dist/tomcat/
2. 파일 download
- 원하는 버전까지 하위 폴더에 접근
- 32bit 버전 받고 싶을 경우 : apache-tomcat-[version]-windows-x86.zip 과 같은 파일을 찾아서 download
64bit 버전 받고 싶을 경우 : apache-tomcat-[version]-windows-x64.zip 과 같은 파일을 찾아서 download
[Tomcat] 메모리 오류 발생시 (0) | 2017.07.12 |
---|
* SQL Server 교육 *
1. 사용자별 CPU
- Oracle인 경우 Process방식
. 1인 접속자 기준으로 PGA가 설정되면 CPU가 할당 된다.
. run -> wait -> ready
. Context : run중 실행중이 였던 내용을 저장하는 곳.
.
- MS Sql인 경우 Thread방식
. Core당 1개의 Process가 생성됨.
. Thread 1개당 메모리 512kb 자원이 할당 됨
. 4 Core기준으로 최대 512개 Thread 생성
. 1명의 user가(1개의 select문장) cpu를 여러개 사용할 수 있다.
2. hint
- MS Sql은 hint를 사용하지 않아서 Optimizer가 알아서 모든 처리를 자동으로 해줌.
- 대용량 select문장을 기술시 패널널로 Optimzer가 수행 시켜줌.
3. Memory
- 5개 영역으로 구성되어 있음
- Utility, Lock, Query Work Space(dirty page)(rollback, commit등 페이지), Plan Cash(실행계획), Data Buffer Cash
- Data Buffer Cash : 한번 읽었던 자원을 메모리 올리는데 이곳이 Data Buffer Cash영역이다.
: Logical Reading
4. Covering index
- select시 조회 컬럼정보가 모두 index컬럼들이면 index영역에서 자료를 조회 하는 기준
5. Tuning
- set statistics io on;
set statistics time on;
- page reading(logical, physical page)하는 갯수를 보여줌. (자료 읽은 페이지수)
- 최소 메모리사이즈는 db용량의 10%정도가 권장사항
- Logical, Physical 속도 : 약 5배 차이
- Hit 수 : Logical read 수 (ms 권장율은 97%)
6. sql
- select * from a;
. *을 사용 하지 말것
. Covering index를 사용하기 위해서임
- bind query
. 한번 날라온 query를 재 사용하게 해줌
. 대소문자 구분, 중간에 공백등에 의해서 queyr를 해석할지, 그냥 사용할지 구분함
- addon query.
. query문장을 재사용하지 않고 계속 sql문장을 재 해석 함.
7. Procedure
- sp_ : 를 앞쪽에 붙이면 db서버는 Master db를 먼저 뒤짐
즉, sp_는 system에 기본 설정 naming rule임
고로 개발시 앞쪽에 sp_를 붙이면 안됨.
- exec : 로 Procedure를 수행시 모든 sql문장은 재 해석함.
addon query라는 용어를 사용함.
- sp_executesql : 로 sql을 수행해야 sql을 재 해석하지 않음.
- 해석 : sql문장 parsing, 실행계획 수립... 기타 등등.
.
8. function
- f_ : 도 위와 같은 형태로 옮겨짐
-
9. schema
- dbo : default를 사용
- 되도록 schema는 생성하지 말것
-
9. Table
- name : 대문자 권장
- varchar : 1byte
nvarchar : 2byte, unicode, 다국어 지원
offset을 활용함
하지만 값이 null인 경우에는 offset이 없음.
- varchar 와 nvarchar join시 varchar가 nvarchar보다 작기 대문에 varchar가 navarchar로 converting됨
이렇다 보면 index가 수행되지 않음 (내부적으로 함수를 사용했기 때문)
- 8k * 8 = 1 extent (한개의 테이블이 속한 최소 단위)
- nchar : 2byte형 char
: offset 정보를 활용하지 않음. 자료수가 고정 되었기 때문에
-
11. 1page(8k)
- Header :
: time stamp - 최종 수정시각
- Footer : offset - varchar의 시작위치, 길이를 저장 함
- 모든 컬럼의 varchar에 대한 정보가 저장 됨
-
10. Sequence, indentity
- indentity : int 보단 bigint를 사용
: 컬럼의 type임
- Sequence : sequece 는 numeric이 좋음 (27,0) (8byte)
: object임
-
10. Partition
- 단점 : index tree가 partion별로 구성 되어 있음
이 단점을 극복하려면 where조건에 partion을 지정 해야됨
(참고, oracle에서는 global index를 만듬)
-
11. isolation
- Latch, Lock
. Latch : phycial (물리적인 자원)
: memory, cpu, process등. 서버의 모든 자원이 Latch
: page io latch : 조회시 내가 필요한 자원이 memory에 없을 경우 hdd에 가게 되는데
이때 ... page io latch 가 발생
. Lock : logical (논리적인 자원)(자료)
:
12. Lock
- Share-Lock, eXeclusiv-Lock, Update-Lock, Schema-Lock
- Share-Lock :
- eXeclusiv-Lock :
- Update-Lock : update전에 where조건절로 찾을 때는 Share-Lock이 발생하고,
조건을 찾은 후 Update를 할때는 eXeclusiv-Lock 을 발생 시킴.
- Schema-Lock :
13. Lock 에스컬레이션
- Lock 범위 : key -> Row -> Page -> Table -> DB
: 자동으로 momory등을 보고 위 단계가 상승됨
- Lock hint를사용 해야됨
-
14. Undo
- Oracle : 값을 update시 최종 commit전에는 이전 자료는 undo segment에 저장 됨
그래서 다른 사용자가 update자료를 select하게 되면 undo segment에서 조회 한다.
- MS SQL : undo 가능
- Undo 단점 : 대량의 정보를 undate하려면 undo의 용량이 커짐
속도도 무한으로 생성 됨
select * from sys.sysprocess;
---------------------------------------------------------------------------------------------
1. connect by
2. int, bigdecimal, numric
---------------------------------------------------------------------------------------------
Loop join : 결과 자료가 적을 경우
Hash join : 결과 자료가 많을 경우
MySQL.설치 후 기본 설정 (0) | 2017.02.28 |
---|---|
MySQL - 임시 (0) | 2017.01.27 |
5. MySQL - TABLE 생성 (0) | 2017.01.22 |
4. MySQL - DB 접속 (0) | 2017.01.22 |
3. MySQL - DB 생성 (0) | 2017.01.22 |
[ MSSQL - LOCK ]
/* MS SQL의 LOCK 개념 *
1. MS SQL 은 기본적으로 레코드 락임
2. MS SQL Server는 SELECT시 LOCK을 걸지 않음
(내부적으로는 SELECT LOCK이라는게 걸리지만, 이 LOCK은 INSERT, UPDATE LOCK하고는 다름)
*/
/* SELECT 종류 */
/*1. 단순 SELECT */
--Insert, Update중에 아래 SELECT문장을 수행 할 경우
-- > 조회결과에 Insert, Update중인 자료가 존재 하면 대기함.
-- > 조회결과에 Insert, Update중인 자료가 존재 하지 않으면 바로 조회 됨.
--단, 이때 index scan인 경우에 해당 됨
-- 즉, 만약 full scan인 경우에는 조건절 및 결과절과 관계 없이 모조건 대기함.
SELECT * FROM TEMP_KYH;
SELECT * FROM TEMP_KYH WHERE temp1 = '2';
/*2. with(nolock), WITH(READUNCOMMITTED) */
--Insert, Update중 lock이 발생했지만 commit되지 않은 상태라도
--commit되었다 판단하여 자료가 조회 됨
SELECT * FROM TEMP_KYH with(nolock);
SELECT * FROM TEMP_KYH WITH(READUNCOMMITTED);
/*3. with(readpast) */
--Insert, Update중 lock이 발생한 레코드를 제외 하고 나머지 자료만 조회
SELECT * FROM TEMP_KYH with(readpast);
/*4. with(updlock) */
--SELECT시 UPDATE LOCK을 설정
--조회결과에 Insert, Update중인 자료가 존재시 조회 대기 함.
SELECT * FROM TEMP_KYH WITH (UPDLOCK) WHERE temp1 = '1';
/* PROCEDURE 개발시 아래 문장존재 하면 좋음 */
--procedure에서 모든 select문장에 with(nolock), with(readpast)을 기술하지 않아도 됨
--SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; --with(unlock)
--SET TRANSACTION ISOLATION LEVEL READ COMMITTED; --with(readpast)
[ Oracle Insert - 속도 향상하는 방법 ]
1. ALTER TABLE 테이블명_1 NOLOGGING;
- 해당 테이블에서 작업시 훨씬 적은 양의 redo log만을 생성한다.
2. insert /*+append*/ into 테이블명_1
select * from ....;
- APPEND 힌트를 줌으로써 DIRECT PATH INSERT가 가능하도록 한다.
[ Nexacro.html5 모드로 실행하기 ]
1. eclipse 환경
1. 프로젝트 생성 : Dynamic Web Project
2. 프로젝트명 : FarmerStudy
3. Tomcat 연동 : port - 8080
2. nexa환경
1. runtime 환경에서 Qucik View가 아닌 Launch Project에서 수행이 되어야 html5 모드에서 실행가능
2. nexa 프로젝트명 : FarmerStudy
3. nexa -> 메뉴 -> Options > Build : Generate Path : D:\Study\eclipse\workspace\FarmerStudy\WebContent
4. nexa -> Generate Applicaiton icon 클릭
3. eclipse 폴더 변경
1. 농부지기 좀더 기술이 늘면 이 작업은 하지 않아도 되도록 문서 변경 ^^
현재는 이 환경이 초보라 필요
2. nexa에서 [Generate Applicaiton icon]을 클릭 하면 eclipse 폴더구조에
/workspace/FarmerStudy/WebContent/FarmerStudy/.. 여기에 nexa js 소스들에 위치 함.
3. 앞쪽 /workspace/FarmerStudy/ 의 FarmerStudy는 eclipse에서의 Project명이고
뒤쪽 /WebContent/FarmerStudy/의 FarmerStudy는 nexa에서의 Project명이 된다.
4. 실적으로 eclipse환경에 맞추기 위해서는 뒤쪽 nava용 FarmerStudy 폴더가 존재하면 안된다.
5. 결론, /WebContent/FarmerStudy/ 하위에 존재하는 모든 폴더및소스를 /WebContent/밑으로 옮기고
/WebContent/FarmerStudy/에서 FarmerStudy 폴더는 삭제해 버린다.
6. 문제점, 이렇게 했을 경우 nexa에서 Generate Application등을 했을 경우 /WebContent/FarmerStudy/폴더가
다시 생성 된다.
그래서 차후에 이 부분을 어떻게 해결할지 고민해야 될 부분 이다.
* * 추가 필요 설정
1. trace 시 Log 출력
1. FarmerStudy.xadl.js 파일 내부에
this.set_tracemode("none"); -- this.set_tracemode("append");
Nexacro UX Studio - Log, trace 정보 보기 (0) | 2017.01.22 |
---|---|
Nexacro UX Studio - 서버(URL, 서비스) 등록 (0) | 2017.01.22 |
Nexacro UX Studio - xfdl 파일에 Comment 보여주기 (0) | 2017.01.22 |
Nexacro UX Studio-Open시 속도 빠르게 (0) | 2017.01.22 |
[ MS SqlServer. Lock 조회 및 관리방법 ]
1. Lock 상세 조회 : http://srzero.tistory.com/147
2. Lock 확인 및 IP 추적 : http://supercrat.blog.me/220669558749
MS SQL.PLSQL - 메모리관리 (0) | 2017.01.27 |
---|
[ Toad for SQL Server. 버전별 Release ]
Nexacro-Grid 특정 Cell에 Mouseover시 컬러 변경 (0) | 2019.04.15 |
---|---|
Nexacro Grid - Cell에 image보여주기 (0) | 2019.04.12 |
Nexacro.Grid - 특정 셀에 여러줄일 경우 (0) | 2017.02.09 |
Nexacro.Grid - cell size(width)조정 (0) | 2017.02.09 |
Nexacro Grid - 좌.우 라인 제거하기 (0) | 2017.01.22 |