■ 세션 임시 테이블 MySQL도 특정 사용자가 접속한 해당 세션에서만 생성하고 조회할 수 있는 임시 테이블을 만들 수 있습니다. 일반 테이블처럼 영구적으로 저장되는 테이블이 아닌 임시 테이블을 만들고 그 테이블을 이용하여 데이터를 잠깐 처리할때 사용하면 유용합니다. 이 임시 테이블은 생성을 했던 해당 세션이 끊기면 자동으로 삭제됩니다. 그리고 이 임시테이블은 DMl(Select, insert, update, delete)을 사용할 수 있습니다. ■ 사용방법 1. 일반 생성 create database tempdb; 2. 다른 테이블 참조하여 생성 CREATE TEMPORARY TABLE ttb1 SELECT * FROM ntb1 LIMIT 0; ■ 테스트 세션을 2개 만들고 테스트를 진행합니다. 임시 ..
■ InnoDB 디스크 I/O InnoDB는 I/O가 진행되는 동안 다른 데이터베이스 작업이 진행되도록 허용하면서 많은 스레드를 만들어 I/O 작업을 처리함으로써 비동기 디스크 I/O를 사용합니다. Linux 및 Windows 플랫폼에서 InnoDB는 사용 가능한 OS 및 라이브러리 기능을 사용하여 "기본"비동기 I/O를 수행합니다. 다른 플랫폼에서 InnoDB는 여전히 I/O 스레드를 사용하지만 스레드는 실제로 I/O 요청이 완료 될 때까지 기다릴 수 있습니다. 이 기술을 "시뮬레이션 된"비동기 I/O라고합니다. ▶ Read-Ahead(미리읽기) InnoDB가 데이터가 곧 필요할 가능성이 높다고 판단하면 미리 읽기 작업을 수행하여 해당 데이터를 버퍼 풀로 가져와 메모리에서 사용할 수 있게합니다. 연속된..
■ MySQL Shell 설치 ▶︎ 설치 방법 • 다운로드 URL https://dev.mysql.com/downloads/shell/ OS와 플랫폼에 맞는 버전을 다운로드합니다. 여기서는 CentOS 7에 설치하는 방법을 알아봅니다.. 위의 경로에 접속 후 Select Operating System에 Redhat Enterprise Linux / Oracle Linux를 선택 후 Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit), RPM Package 8.0.23 31.6M (mysql-shell-8.0.23-1.el7.x86_64.rpm) 을 다운로드 합니다. 그리고 아래와 같은 명령어로 설치합니다. shell> yum install mysql-s..
■ sys schema 소개 sys schema는 Performance Schema를 편하게 볼 수 있도록 별도로 만든 view들의 모음입니다. 기본적으로 performance schema에서 수집된 성능을 이용해서 보여줍니다. ▶︎ 주의 사항. 1. 업그레이드시 유의사항이 있습니다. mysql_upgrade로 기존 sys schema는 업그레이드가 안됩니다. 해당 버전으로 다른곳에서 덤프받아 설치해야 합니다. 혹은 mysql github에서 다운로드 받아 설치합니다. 2. 위에서 설명했듯이 performance schema가 활성화되어 있어야 합니다. performance schema에서 다음과 같은 이벤트들을 이용합니다. - All wait instruments - All stage instrumen..
다음 예외를 제외하고 AUTO_INCREMENT, LAST_INSERT_ID () 및 TIMESTAMP 값의 문 기반 복제가 올바르게 수행됩니다. MySQL 5.7.1 이전의 문 기반 복제를 사용하는 경우 복제본의 테이블에있는 AUTO_INCREMENT 열은 소스의 동일한 열과 일치해야합니다. 즉, AUTO_INCREMENT 열은 AUTO_INCREMENT 열에 복제되어야합니다. • AUTO_INCREMENT 열을 업데이트하는 트리거 또는 함수를 호출하는 문은 문 기반 복제를 사용하여 올바르게 복제되지 않습니다. 이러한 진술은 안전하지 않은 것으로 표시됩니다. • 이 복합 키의 첫 번째 열이 아닌 AUTO_INCREMENT 열을 포함하는 복합 기본 키가있는 테이블에 대한 INSERT는 문 기반 로깅 또는..
max_allowed_packet은 복제본을 포함하여 MySQL 서버와 클라이언트 간의 단일 메시지 크기에 대한 상한을 설정합니다. 큰 열 값 (예 : TEXT 또는 BLOB 열에서 찾을 수 있음)을 복제하고 max_allowed_packet이 소스에서 너무 작 으면 소스가 오류와 함께 실패하고 복제본이 복제 I / O 스레드를 종료합니다. 복제본에서 max_allowed_packet이 너무 작 으면 복제본이 복제 I / O 스레드를 중지하게됩니다. 행 기반 복제는 현재 업데이트에 의해 실제로 변경되지 않은 열 값을 포함하여 원본에서 복제본으로 업데이트 된 행의 모든 열과 열 값을 보냅니다. 즉, 행 기반 복제를 사용하여 큰 열 값을 복제 할 때 업데이트 만 복제하거나 삽입하는 경우에도 복제 할 테이블에..
MySQL Client로 select INTO OUTFILE으로 덤프파일을 내릴때 다음과 같은 에러가 발생할 수 있습니다. mysql> select * INTO OUTFILE '/data/outfile.sql' FIELDS TERMINATED BY '|' from schema.table; ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement 위의 에러는 보안관련 에러로 특정 디렉토리 이외에는 파일 쓰기가 금지되어 있을때 위의 에러가 발생합니다. 해결방법은 2가지 입니다. 해당 특정 디렉토리만 이용하거나 모든 디렉토리를 이용할 수 있도록 위의 보안 ..
명령문 기반 복제를 사용하면 마스터에서 실행되는 트리거가 슬레이브에서도 실행됩니다. 행(ROW) 기반 복제를 사용하면 마스터에서 실행된 트리거가 슬레이브에서 실행되지 않습니다. 대신 트리거 실행으로 인한 마스터의 행 변경 사항이 복제되고 슬레이브에 적용됩니다. 행 기반 복제에서 슬레이브에 트리거가 있을 때 마스터 변경사항이 슬레이브에 적용되고 이 넘어온 데이터가 슬레이브 트리거로 인해 다시 수행되게 됩니다. 즉 슬레이브에 두번 적용되어 마스터와 슬레이브에 다른 데이터가 생성됩니다. 그래서 행 기반에서는 트리거가 작동하지 않게끔 설계되어 있습니다. 트리거를 마스터와 슬레이브 모두에서 실행하려면 명령문 기반 복제를 사용합니다. 그러나 슬레이브 트리거를 사용하기 위해 명령문 기반 복제를 독점적으로 사용할 필요..
성능 스키마를 사용하여 InnoDB 테이블에 대한 ALTER TABLE 진행 상황을 모니터링 할 수 있습니다. ALTER TABLE의 여러 단계를 나타내는 7개의 스테이지 이벤트가 있습니다. 각 단계 이벤트는 다른 단계를 통해 진행될 때 전체 ALTER TABLE 작업에 대해 WORK_COMPLETED 및 WORK_ESTIMATED의 누계를보고합니다. WORK_ESTIMATED는 ALTER TABLE이 수행하는 모든 작업을 고려하는 공식을 사용하여 계산되며 ALTER TABLE 처리중에 수정될 수 있습니다. WORK_COMPLETED 및 WORK_ESTIMATED 값은 ALTER TABLE에서 수행한 모든 작업의 추상적인 표현입니다. 발생 순서에 따라 ALTER TABLE 단계 이벤트에는 다음이 포함됩니..
■ Replication 테이블 성능 스키마는 복제 정보 상태를 보여주는 테이블을 제공합니다. 이는 SHOW SLAVE STATUS 문에서 사용할 수있는 정보와 비슷하지만 테이블 형식으로 표현하는 것이 더 접근하기 쉽고 사용성 이점이 있습니다. 1. SHOW SLAVE STATUS 출력은 직접 보면서 확인하는 검사에 유용하지만 프로그래밍 사용에는 그다지 유용하지 않습니다. 반대로 성능 스키마 테이블을 사용하면 복잡한 WHERE 조건, 조인 등을 포함한 일반 SELECT 쿼리를 사용하여 복제본 상태에 대한 정보를 검색할 수 있습니다. 2. 쿼리 결과는 추가 분석을 위해 테이블에 저장하거나 변수에 할당하여 저장 프로 시저에서 사용할 수 있습니다. 3. 복제 테이블은 더 나은 진단 정보를 제공합니다. 다중 스..
■ Summary(요약) 테이블 ▶︎ objects_summary_global_by_type 테이블 성능 스키마는 개체 대기 이벤트를 집계하기 위해 objects_summary_global_by_type 테이블을 유지합니다. 예제 개체 대기 이벤트 요약 정보 : mysql> SELECT * FROM performance_schema.objects_summary_global_by_type\G ... *************************** 3. row *************************** OBJECT_TYPE: TABLE OBJECT_SCHEMA: test OBJECT_NAME: t COUNT_STAR: 3 SUM_TIMER_WAIT: 263126976 MIN_TIMER_WAIT: 1..
■ User-Defined Variable 테이블 Performance Schema는 사용자 정의 변수를 노출하는 user_variables_by_thread 테이블을 제공합니다. 이들은 특정 세션 내에서 정의된 변수이며 이름 앞에 @문자를 포함합니다. user_variables_by_thread 테이블에는 다음 컬럼이 있습니다. - THREAD_ID 변수가 정의된 세션의 스레드 식별자입니다. - VARIABLE_NAME 선행 @문자가 없는 변수 이름입니다. - VARIABLE_VALUE 변수 값입니다. user_variables_by_thread 테이블에는 TRUNCATE TABLE이 허용되지 않습니다. ■ System Variable 테이블 MySQL 서버는 구성 방법을 나타내는 많은 시스템 변수를 ..