본문 바로가기

MySQL별책부록39

Stored Routine 안에서 파라메터 이용하여 DCL /DDL 문장 실행하기 개인적인 업무 자동화 처리를 위해 Stored Routine안에서 DCL 문장 실행이 가능한지 확인해 보고자 했다. 가장 먼저 알고 싶었던 것은 Stored Routine 안에서 DCL 구문을 실행하는게 제약사항에 속하는지 여부였다. 레퍼런스를 뒤져 읽어서 DCL 구문의 실행에 제약사항이 있는지 살펴보았다. 그런데 특별히 노티되는 것을 보지 못했다. 그럼 테스트 해볼 수 있겠구나 판단하고 간단히 테스트 해보기로 한다. 테스트는 MySQL Ver. 8.0.19에서 진행했다. 다음과 같이 Procedure를 생성하여 테스트해 보고자 했다. delimiter// create procedure test( p1 varchar(20)) begin create database p1; grant select on p1.. 2020. 6. 13.
Collation 에 따른 인덱스 저장 정렬 순서 차이 확인 InnoDB에서 Collation에 따라 Secondary 인덱스의 데이터가 어떤 순서로 저장되는지 확인해 보도록 하자. 사실 Collation은 쿼리 조회시 영향을 주는 것이라 인덱스 데이터 저장 정렬 순서에 어떻게 영향을 주는지 한번도 생각해 보지 못했다. 동료와 같이 이야기 하던 중 분명 영향을 주는 것이 맞다고 생각하고 그 생각이 맞는지 테스트를 진행해 보았다. 다음과 같은 테이블을 작성하여 테스트를 진행한다. 해당 작업은 MySQL Ver. 5.7.25에서 진행하였다. CREATE TABLE `tbs` ( `name` varchar(10) NOT NULL collate utf8mb4_bin, `extr` varchar(10) NOT NULL collate utf8mb4_general_ci, `i.. 2020. 5. 7.
binlog format에 따른 query handling & Isolation Level 선택 면접을 보다가 5년전에 합병할때 쯤 같은 문제를 다른 방식으로 처리함으로 인해 머리속에 기억났던 현상을 다시 한번 기억하게 되었다. 따로 기억하지 않은 듯 하여 기록해 두기로 한다. 1. Binlog Format에 따른 Query Handling STATEMENT 방식으로 REPEATABLE READ Isolation Level을 사용하여 MySQL을 운영하다 보면 다음과 같은 메세지를 Error Log에서 확인할 수 있다. [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT c.. 2019. 6. 6.
MySQL 내의 process 와 OS 레벨의 process 맵핑 방법 MySQL에서 show process를 실행하면 MySQL내에서 동작하는 유저 스레드(대부분 유저 스레드)들을 확인할 수 있다. pstree -ap 를 실행하면 OS 상에서 실행되는 프로세스들을 자세히 확인할 수 있다. 이때 mysqld가 생성한 스레드들도 확인할 수 있는데 OS상의 프로세스와 MySQL상의 유저 스레드는 Performance_Schema의 Thread 테이블을 통해 맵핑하여 확인할 수 있다. PROCESSLIST_ID : show processlist에서 보여지는 id값이다. THREAD_OS_ID : OS상에서 할당된 thread 아이디 값이다. 이 두값에 맵핑하면 찾을 수 있다. 2019. 4. 1.