테스트를 할 때 필수적인 사항은 대량의 데이터가 준비되어 있어야 한다는 것이다. 대량의 데이터를 DB에 넣는 방법 중에 파일로 만들어서 넣는 방법이 빠르다고 해서 해보았다. 우선 CSV 파일을 만든다. 이때, 데이터는 CSV 파일에 적힌 그대로 들어가는데 VARCHAR라고 ''를 붙이게 되면 ''까지 같이 들어가게 된다. 그러니 그냥 문자열을 적는다. CSV 파일을 만들어서 서버에 옮기고 아래와 같이 실행하면 된다. load data local infile '[파일경로]' into table [insert할 테이블명] fields terminated by '[데이터 구분자. CSV의 경우 ,]' lines terminated by '\n' IGNORE 1 LINES // 첫번째 줄에는 각 컬럼명이 표시되..
오늘부터 금요일까지 오라클의 SQL 성능 튜닝 관련 교육을 듣게 되었는데, 오늘 들은 첫 강 내용을 여기에 정리해둔다. OLTP: 많은 유저가 트랜잭션을 멀티로 발생시키는 것 DLAP: 소수의 파워유저들이 많은 데이터를 이용하는 것(예를 들자면, 통계) 튜닝을 알기 전에 먼저 SQL이 어떻게 처리되는지 그 구조를 알아야 한다. 기본적으로 사용자가 SQL로 요구를 하면 Optimizer가 SQL을 해석하고 실행계획을 작성하고 실행한다. SQL을 해석하고 실행계획을 작성하는 데 있어서 DATA Dictionary를 참조한다. 이때 DATA Dictionary는 인덱스정보, 데이터 건수 정보 등을 담고 있다. 오라클은 인스턴스 여러 개가 하나의 storage를 바라보는 식이다. 하나의 인스턴스 안에는 Buff..
쿼리를 작성하면서 이 쿼리는 테이블 풀 스캔이 일어나는 쿼리다, 일어나지 않는 쿼리다, 인덱스는 어떻게 사용하는 게 더 좋을 것 같다 등의 말을 들었는데, 도대체 그걸(테이블 풀 스캔이 일어나는지, 아닌지) 어떻게 아는지 궁금했다. 그러다가 EXPLAIN을 알게 되어 정리해본다. 아래의 링크들을 참고하여 작성했다. 8.8.1 Optimizing Queries with EXPLAIN MySQL :: MySQL 8.0 Reference Manual :: 8.8.1 Optimizing Queries with EXPLAIN 8.8.1 Optimizing Queries with EXPLAIN The EXPLAIN statement provides information about how MySQL executes ..
지난 면접에 게시판만들 때 페이징 처리를 어떻게 했는지 물어보셔서 rownum을 사용했다고 했더니 그건 60점짜리 답안이라고, rownum+index가 제일 좋은 답이라고 하셔서 index에 대해 정리해둔다. 인덱스란 데이터베이스에서 데이터 검색 성능의 향상을 위해 테이블 열에 사용하는 객체를 말한다. 특정 행 데이터의 주소를 목록으로 만들어 놓은 것. 인덱스 사용 여부에 따라 데이터를 검색하기 위해 테이블 전체를 스캔하는 Table Full Scan과 인덱스를 사용하는 Index Scan으로 나눈다. 인덱스는 열이 Primary key 또는 Unique key일 경우 자동 생성되지만 직접 특정 열을 지정할 수도 있다. // 인덱스 생성 CREATE INDEX 인덱스명 ON 테이블명(열1 ASC or D..