본문 바로가기

DataBase

[펌]MySQL 기본 명령어 1. MySQL 실행 # /usr/local/mysql/bin/mysql 을 입력하면 다음과 같이 프롬프트가 뜬다. mysql〉 일반적으로 APM을 컴파일해서 설치했다면, 위의 디렉토리가 맞을 것이다. 만약 PATH가 걸려있다면, 아무곳에서나 mysql 을 치면 MySQL이 실행된다. PATH는 [ echo $PATH ] 명령으로 볼 수 있다. 설정되어 있지 않다면 .bash_profile 파일에 들어가서 설정해 주면 된다. 로컬BOX(APM이 설치되어 있는 바로 그 컴퓨터)에서 MySQL을 다룰려면 X윈도우에서 해야 할 것이다. 한글을 사용할 일이 있기 때문이다. 콘솔에서도 한글을 띄우려면 무슨 유틸리티가 있었는데.. 잊어버렸다. mysql〉select version(); 현재 버전을 알아보는 쿼리이다.. 더보기
[펌]날짜데이터를 지금시간으로 바꾸기 얼마전 회사에 입사해서 지금까지...그리고 앞으로도 당분간... 디비쿼리만 날리고 있다...하루에 수백수만번씩...ㅜㅜ 멀미날거 같다... 내가 디비를 잘 몰라서 그런가 알면 알수록 새롭다... 기존에는 그냥 게시판만들때나 쓰이던 간단한 쿼리만 알고 있었는데 그게 다가 아니다.. 정말 새롭다... 오늘은 디비에 들어있는 날짜 데이터를 지금시간으로 바꾸는걸 적어보려 한다..잊지 않기 위해서.. 가장 중요한건 now() 더보기
[펌]MySQL 날짜 관련 함수 오랜만에 펌질한번 해본다. 유용하게 써먹었다. - DAYOFWEEK(date) : 해당 날짜의 요일을 숫자로 반환한다. 일요일은 1, 토요일은 7 이다. - 예 : select DAYOFWEEK('1998-02-03'); - WEEKDAY(date) : 해당 날짜에 대한 요일을 반환한다. 월요일은 0, 일요일은 6 이다. - 예 : select WEEKDAY('1997-10-04 22:23:00'); - DAYOFYEAR(date) : 해당 날짜의 1월 1일부터의 날수를 반환한다. 결과값은 1에서 366 까지이다. - 예 : select DAYOFYEAR('1998-02-03'); - YEAR(date) : 해당 날짜의 년을 반환한다. - 예 : select YEAR('98-02-03'); - MONTH.. 더보기
[펌]한글 데이타가 깨질때 mysql이 utf-8로 설정 되어 있고, 분명히 php페이지에 'utf-8'로 지정을 해주고, 저장도 'utf-8'로 했는데도... DB에 들어갈 때부터 깨져서 들어가고 있었다... 정말 이틀에 가까운 시간 검색과 테스트만 한 것 같다... 그렇게 해서 결국 해결했는데, 방법은 열받게 간단하다...ㅜㅜ;; 테이블이 UTF-8이더라도, MySQL에 접속한 후에 SET NAMES utf8을 실행하여 해당 연결의 인코딩을 UTF-8로 바꾸어야 합니다.mysql에 접속해서 다음과 같이 날려보자. mysql> show variables like 'character%'; utf-8이면 다행이겠지만 그렇지 않다면 다음과 같이 SET NAMES utf8을 실행해 줘야 한다. 이런식으로... mysql_connect(.. 더보기
[펌]DB에서 원하는 만큼만 셀렉트 해오기 mysql db에서 원하는 만큼만 데이타를 가져오는 방법이다... 쓸데없이 한꺼번에 많은 양의 데이터를 셀렉트하게 되면 로딩시간도 그만큼 길어지기 때문에...비효율적이다 select * from bbs1 where name="nalpri" order by hit desc limit 0, 20; limit 0, 20 뭔말인고 하니 첫번째 데이타부터 스무번째 데이타까지만 셀렉트해라~ 간단하지만 모르면 고생ㅋㅋ 더보기
테이블스페이스 용량구하기... --데이터파일 사용량 구하기 select C.C_T "GLOBAL_NAME", a.A_T "ALLOC", A.A_T-B.B_T "USED",B.B_T "FREE" from ( select round(sum(bytes/1024/1024),-1) AS A_T from dba_Data_files ) a, ( select round(sum(bytes/1024/1024),-1) AS B_T from dba_free_space ) b, ( select replace(GLOBAL_NAME,'.WORLD','') AS C_T from global_name ) c SELECT b.file_name "FILE_NAME", -- DataFile Name b.tablespace_name "TABLESPACE_NAME", --.. 더보기
ORA-02020 조치 ORA-02020: too many database links in use 에러가 나는 경우 조치 방법 1. 원인 : 설정된 Oracle parameter의 동시 DB Link 연결 갯수 보다 더 많이 DB Link를 사용할 경우 2. 조치 방법 : Oracle parameter중 OPEN_LINKS의 설정은 수정(Default는 4이므로 그보다 더 높여준다.) - 9i인 경우의 조치방법을 살펴본다. 1) 현재 'OPEN_LINKS'라는 parameter값을 살펴본다. --> select name, value from v$parameter where name='open_links' > name value open_links 4 2) Parameter 값을 수정한다. --> pfile(init[SID].o.. 더보기
[펌]인덱스의 컬럼 선정 및 고려사항 1. 인덱스 컬럼의 선정 - 분포도가 좋은 컬럼은 단독적으로 생성하여 활용도를 향상 시킵니다. - 자주 조합되어 사용되는 경우는 결합인덱스를 생성 합니다. - 엑세스 경우의 수를 만족할 수 있도록 각 인덱스간의 역할을 분담 합니다. - 가능한 수정이 빈번하지 않는 컬럼을 선정 합니다. - 가능한 한 컬럼이 여러 인덱스에 포함되지 않도록 합니다. - 기본키 및 외부키 (조인의 연결고리가 되는 컬럼)가 되는 컬럼을 선정합니다. - 결합 인덱스의 컬럼순서 선정에 주의 (사용빈도,유일성,SORT유형,부분범위처리등을 고려)해야 합니다. 첫번째 컬럼은 항상 사용되는 컬럼을 선택 해야 합니다 - 실제 조사된 엑세스 종류를 토대로 선정 및 검증 해야 합니다. 2. 인덱스가 사용되지 않는 경우 - 인덱스 컬럼이 비교되기.. 더보기
[펌]ANALYZE ? ANALYZE ? - ANALYZE는 인덱스, 테이블, 클러스터의 통계정보를 생성 합니다. - ANALYZE가 생성한 통계정보들은 비용기준(Cost-based)의 옵티마이저가 가장 효율적인 실행계획을 수립하기 위해 최소비용을 계산할 때 사용 됩니다. - 각 오브젝트의 구조를 확인하는 것과 체인(Chain) 생성 여부를 확인할 수 있으므로 시스템의 저장공간 관리를 도와줍니다. [문법] object-clause TABLE, INDEX, CLUSTER중에서 해당하는 오브젝트를 기술하고 처리할 오브젝트 명을 기술 합니다. operation operation 옵션에는 다음 3가지중 한가지 기능을 선택할 수 있습니다. COMPUTE - 각각의 값들을 정확하게 계산 합니다. - 가장 정확한 통계를 얻을 수 있지만 처.. 더보기
ANALYZE 명령어 ANALYZE 명령어 ANALYZE 명령어는 옵티마이저에서 비용기반 방식에 사용할 통계 데이터를 모아 주기 위해 사용되는 튜닝 도구로 테이블과 인덱스에 대한 통계정보를 수집한다. analyze 명령어가 수행될 때마다 수집되는 정보는 다음과 같다. 종류 수집 정보 TABLE 테이블의 행 수, 사용된 블록 수, 한번도 사용되지 않은 불럭 수, 사용 가능한 공간의 평균, 변경된 행 수, 컬럼당 distinct value의 수, 컬럼당 두 번째로 가장 작은 값, 컬럼당 두 번째로 가장 큰 값 INDEX 인덱스 레벨, 레벨 불럭 수, distinct key 수, 키당 leaf 블럭 수의 평균, 키당 데이터 블럭 수의 평균, clustering factor, 최소 키 값, 최대 키 값 저장된 통계자료는 데이터 사전.. 더보기