일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- solaris
- SQL
- Linux
- memory
- cygwin
- 오라클
- MySQL
- perl one-liner
- patch
- Unix
- PERL
- oracle install
- sqlplus
- Network
- fdisk
- RHEL4
- dba
- solaris network
- grid
- php5
- command & perl
- rac
- oracle
- mariaDB
- Oracle RAC
- 연산자
- prompt
- bash
- perl + 정규표현식
- perl string
- Today
- Total
목록MySQL (11)
DATA 전문가로 가는 길
대용량 테이블에서 페이징 처리 시 맨 뒤쪽으로 갈수록 느려지는 현상을 보실 수 있습니다. 그러한 이유는 어느 순간까지는 인덱스를 활용해서 결과를 출력 가능 하지만, MySQL/MariaDB에서는 filesort가 발생하면서 성능 저하가 발생합니다. 옵티마이저는 정렬을 위해 인덱스 사용이 가능한지 확인하고, 가능하다면 'Filesort' 과정 없이 인덱스 순으로 결과를 반환하게 됩니다. 인덱스를 사용할 수 없다면 WHERE 조건에 일치하는 레코드를 검색해 정렬 버퍼에 저장하면서 정렬 처리(Filesort)를 합니다. Order by, Group By를 처리할 때 인덱스를 처리하지 못할 경우에는 filesort 알고리즘을 통해 정렬하게 됩니다. Data -> Sort Buffer -> Temp File ->..
MySQL/MariaDB에서 대용량 데이터를 이관하기 위해서 다양한 방법이 존재합니다. 저는 그중에서 전통적인 방식 CTAS와 mysqldump 유틸리티 그리고 INTO OUTFILE LOAD DATA LOCAL INFILE입니다. 대용량 데이터를 빠르게 이관할 때 유용하게 사용 가능합니다. 다만, 서비스를 운영하는 시점에 적용하는 게 아니라 점검 시간이나 다운타임이 발생할 때 가능합니다. 1. 테스트 환경 OS : CentOS 7.5(CPU : Intel(R) Xeon(R) CPU E3-1220 v3 @ 3.10GHz(4 core), Memory : 32GB) DB : MariaDB 10.3.8 Parameter : innodb_buffer_pool_size =15G innodb_flush_log_at..
1. Auto increment 란? 테이블 컬럼에 auto_increment를 설정하게 되면, 데이터가 삽입 되는 순간 자동으로 증가 됩니다. 데이터 타입은 INT, BIGINT를 주로 많이 사용 합니다. InnoDB 엔진의 경우 Primary Key 생성과 동시에 인덱스 사이즈에 영향을 주기 때문에 테이블 설계시 많이 권고 하는 방법 입니다. MySQL 5.7 이전 버전에서는 MyISAM 엔진의 경우 auto_increment 값이 파일에 저장 해서 관리 되는 반면, InnoDB 인젠의 경우 메모리 기반으로 관리 됩니다. MySQL 8.0 에서는 InnoDB 엔진의 테이블 정보 저장 공간에 auto_increment 카운터 정보를 보관 합니다. 주로 많이 활용되는 방법은 PK + auto_increm..
1. Primary Key 란 Primary Key는 데이터베이스 행을 고유하게 식별할 수 있는 습니다. 테이블 단일 컬럼으로 식별할 수 있고, 복합 컬럼으로 식별할 수 있는데 성능적으로는 단일 컬럼으로 생성해야 Clustered Index를 견고하게 사용 가능합니다. 또한 NULL을 허용하지 않으며, 데이터에 대한 일관성을 보장합니다. 데이터 중복이 발생하지 않아 빠르게 쿼리를 수행 가능합니다. InnoDB engine기준으로 Primary Key는 항상 Clustered Index이며, Primary Key가 존재하지 않을 경우 Unique Key(Unique Index)를 선택하게 됩니다. 후보가 없을 경우 Auto_Increment 속성의 컬럼을 활용하게 되는데 이는 테이블에 Primary Key..
1. 인덱스란? 인덱스는 테이블 또는 View에서 행을 가져오는 속도를 높이기 위해서 데이터베이스의 하나 이상의 열에서 작성된 키입니다. 이는 Oracle, SQL Server, MySQL, MariaDB 등과 같은 데이터베이스가 키 값과 관련된 행을 신속하게 찾을 수 있도록 합니다. Clustered Index, Non-Clustered Index 두 가지 형태로 나눠지게 됩니다. MySQL/MariaDB에서 Clustered Index를 사용할 수 있는 엔진은 InnoDB 뿐입니다. MyISAM, Memory, Archive NDB 엔진은 사용할 수 없습니다. InnoDB Buffer Pool 메모리에 존재하지 않을 경우 디스크에서 페이지를 가져오게 됩니다. 한번 가져온 페이지는 대부분은 InnoDB..
1. unmap RPM 목록 gdbm-devel-1.10-8.el7.x86_64.rpm libdb-5.3.21-20.el7.x86_64.rpm libdb-devel-5.3.21-20.el7.x86_64.rpm libdb-utils-5.3.21-20.el7.x86_64.rpm perl-Digest-1.17-245.el7.noarch.rpm perl-Digest-MD5-2.52-3.el7.x86_64.rpm perl-ExtUtils-Install-1.58-292.el7.noarch.rpm perl-ExtUtils-MakeMaker-6.68-3.el7.noarch.rpm perl-ExtUtils-Manifest-1.61-244.el7.noarch.rpm perl-ExtUtils-ParseXS-3.18-3.el..
1. 테이블 압축 개요 증가하는 데이터로 인해서 서버의 저장공간이 부족 혹은 추가적인 HDD의 증설을 줄이려는 방법으로 데이터 수정(UPDATE)이 발생하지 않는 로그 테이블에 적용하여 조회 속도 향상 및 저장 공간을 줄일 수 있는 기법. 테이블 압축은 테이블 데이터를 압축해서 보관함으로 파일 I/O를 감소시키는 것이 가장 큰 목적입니다. (반대로 압축을 하게 되면 수정 시에는 속도가 느림) 테이블 압축의 옵션인 블록 사이즈는 2, 4, 8, 16KB로 나눠지게 됩니다. (기본값 : 16KB) 2. 테이블 압축 방법 MariaDB [HIWDB]> ALTER TABLE EST_CONN_LOGIN_2 ENGINE=INNODB DEFAULT CHARSET=UTF8MB4 ROW_FORMAT=COMPRESSED ..
테이블에 존재하는 순서 번호 값 중에서 빈 값을 찾는 쿼리를 작성하겠습니다. 순차적으로 번호가 1번부터 20번까지 존재한다고 했을 때 5번, 11번 ~ 14번, 17번 ~ 18번 이렇게 빈 값이 존재할 경우 찾아내는 방법과 빈 값에 대한 범위를 찾는 방법 그리고 마지막으로 어느 정도 비어있는지 확인 가능합니다. 1. 샘플 데이터 - 샘플 데이터를 생성하고, 임시 데이터를 삽입합니다. DROP TABLE EST_SEQUENCE; CREATE TABLE EST_SEQUENCE (ID INT NOT NULL PRIMARY KEY) ENGINE=INNODB; INSERT INTO EST_SEQUENCE(ID) SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL ..