StoryCode

'Database 관리/MySQL'에 해당되는 글 6건

  1. 실시간 SQL LOG 남기는 방법
  2. 2023-226.MySQL,Architecture,아키텍처.우기
  3. 콘솔.Tag자동완성
  4. Plan.용어.설명
  5. save as CSV
  6. 표준 ANSI SQL MODE (Strict Mode) 사용 On/OFF

실시간 SQL LOG 남기는 방법

Database 관리/MySQL
반응형

영구히 SQL LOG 가 남는다. 더이상 필요없으면 끄자.

 

1) SET GLOBAL general_log = 'ON'; # OFF

2) SET GLOBAL general_log_file = '/var/log/mysql/sql.log';

 

반응형

'Database 관리 > MySQL' 카테고리의 다른 글

2023-226.MySQL,Architecture,아키텍처.우기  (0) 2023.08.06
콘솔.Tag자동완성  (0) 2023.07.31
Plan.용어.설명  (0) 2023.03.22
save as CSV  (0) 2022.01.07
표준 ANSI SQL MODE (Strict Mode) 사용 On/OFF  (0) 2019.05.03

2023-226.MySQL,Architecture,아키텍처.우기

Database 관리/MySQL
반응형
About InnoDB      
Query Cache 동일한 Query 에 대해 Cache 하나 데이타 변경시 부하가 커서(캐시 데이타 삭제때마다 Lock 발생때문) MySQL  8 부터는 기능 폐지.
PK - PK 는 클러스터링 된다. 그러므로 회원별 조회가 많다면 반드시 PK 가 되는 것이 좋다. 다만 쓰기 기능은 느려진다. (클러스터링 처리를 위한 데이타 재 배열 발생때문)
- PK 가 없으면 암묵적 PK 생성되며 직접 접근 불가능
StorageEngine.MVCC.InnoDBBufferPool - Insert 후 Commit 하면 데이타를 BufferPool 에 보관.
- Update 하면 Commit 전이라도 데이타를 BufferPool 에 보관
StorageEngine.MVCC.UndoLog - Commit 전 데이타를 임시 보관
StorageEngine.MVCC.RedoLog - Commit 후 데이타를 저장.
Isolation Level 1) READ_UNCOMMITTED 일 경우 : BufferPool 값이 SELECT. 커밋 안된 데이타를 볼 수 있음 = Dirty Read
2) READ_COMMITED, REPEATABLE_READ, SERIALAZABLE : UndoLog 값이 SELECT. 커밋된 데이타만 볼 수 있음.
3) RPREATABLE READ : 내가 특정 트랜잭션에서 읽는 동안에는 동일한 결과만 나옴. 다른 트랜잭션에서 새로운 데이타를 추가할 수는 있음. Ex> 책가격을 보는 중인데, 판매자가 가격을 바꿔도, 적어도 내가 보던 트랜잭션에서는 책가격이 유지됨.
4) SERIALIZABLE : 완벽하지만 오류없음.
Adaptive Hash Index - Index Key 와 Page Address 쌍. Page Address 가 있으므로 Page 에 빨리 액세스 가능
- DB 가 자동으로 접근빈도 높은 데이타에 인덱스 생성함.
LockingLevel - Index Lock. 김씨를 조회씨 성씨 Index 를 탈 경우, 김씨 Index가 모두 Lock 이 걸림.
- Full Scan 시, 암묵적 PK Index 전체가 Lock 걸림.
- 즉 복합 인덱스 매우 중요해짐

 

반응형

'Database 관리 > MySQL' 카테고리의 다른 글

실시간 SQL LOG 남기는 방법  (0) 2023.09.18
콘솔.Tag자동완성  (0) 2023.07.31
Plan.용어.설명  (0) 2023.03.22
save as CSV  (0) 2022.01.07
표준 ANSI SQL MODE (Strict Mode) 사용 On/OFF  (0) 2019.05.03

콘솔.Tag자동완성

Database 관리/MySQL
반응형

mysql --auto-rehash -u -p

반응형

'Database 관리 > MySQL' 카테고리의 다른 글

실시간 SQL LOG 남기는 방법  (0) 2023.09.18
2023-226.MySQL,Architecture,아키텍처.우기  (0) 2023.08.06
Plan.용어.설명  (0) 2023.03.22
save as CSV  (0) 2022.01.07
표준 ANSI SQL MODE (Strict Mode) 사용 On/OFF  (0) 2019.05.03

Plan.용어.설명

Database 관리/MySQL
반응형

# 참조 : https://jaejade.tistory.com/128

 

ALL: 테이블을 처음부터 끝까지 탐색하여 데이터를 찾는 방식. (Table Full scan)
index: 인덱스를 처음부터 끝까지 탐색하여 데이터를 찾는 방식 (Index Full scan)
ragne: 특정 범위 내에서 인덱스를 사용하여 원하는 데이터를 추출. 데이터가 방대하지 않다면 단순 SELECT 에서는 나쁘지 않음.
ref: 조인을 할 때 Primary Key 혹은 Unique Key가 아닌 Key로 매칭 하는 경우
eq_ref: 조인을 할 때 Primary Key로 매칭
const: SELECT에서 Primary Key 혹은 Unique Key를 살수로 조회하는 경우로 많아야 한 건의 데이터만 있음
system: 테이블에 1개의 데이터만 있는 경우

반응형

'Database 관리 > MySQL' 카테고리의 다른 글

실시간 SQL LOG 남기는 방법  (0) 2023.09.18
2023-226.MySQL,Architecture,아키텍처.우기  (0) 2023.08.06
콘솔.Tag자동완성  (0) 2023.07.31
save as CSV  (0) 2022.01.07
표준 ANSI SQL MODE (Strict Mode) 사용 On/OFF  (0) 2019.05.03

save as CSV

Database 관리/MySQL
반응형

참조 : https://gist.github.com/gaerae/6219678

SELECT * FROM my_table
INTO OUTFILE 'my_table.csv'
CHARACTER SET euckr
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
SELECT * FROM (
    (
        SELECT
            '필드1' AS 'filed_1',
            '필드2' AS 'filed_2'
    ) UNION (
        SELECT
            filed_1,
            filed_2
        FROM my_table
    )
) AS mysql_query
INTO OUTFILE 'my_table.csv'
CHARACTER SET euckr
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
mysql -p my_db -e "SELECT * FROM my_table" | sed 's/\t/","/g;s/^/"/;s/$/"/;' > my_table.csv
#!/bin/bash
 
db=YOUR_DB
user=YOUR_USER
pass=YOUR_PASS
 
for table in $(mysql -u$user -p$pass $db -Be "SHOW tables" | sed 1d); do
  echo "exporting $table.."
  mysql -u$user -p$pass $db -e "SELECT * FROM $table" | sed 's/\t/","/g;s/^/"/;s/$/"/;' > $table.csv
done

저는 mysql 8를 사용 중입니다.
1번 쿼리를 사용해보니 'my_table.csv' 파일명에 my.ini의 secure-file-priv 경로를 같이 적어야 정상적으로 파일이 export 되네요.

 

데이터 건 수(몇 십만건)가 많을 경우에는 3번 방법을 사용하면 안될 것 같아요. 데이터 건마다 치환 작업을 해주어야 하니 오랜 시간이 걸립니다.

반응형

'Database 관리 > MySQL' 카테고리의 다른 글

실시간 SQL LOG 남기는 방법  (0) 2023.09.18
2023-226.MySQL,Architecture,아키텍처.우기  (0) 2023.08.06
콘솔.Tag자동완성  (0) 2023.07.31
Plan.용어.설명  (0) 2023.03.22
표준 ANSI SQL MODE (Strict Mode) 사용 On/OFF  (0) 2019.05.03

표준 ANSI SQL MODE (Strict Mode) 사용 On/OFF

Database 관리/MySQL
반응형

1) 확인

mysql -u root -p -e "SHOW VARIABLES LIKE 'sql_mode';"

 

2) OFF

mysql -u root -p -e "SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';" 

mysql -u root -p -e "SELECT @@GLOBAL.sql_mode;"

 

3) OFF vi my.cnf

[mysqld]

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

반응형

'Database 관리 > MySQL' 카테고리의 다른 글

실시간 SQL LOG 남기는 방법  (0) 2023.09.18
2023-226.MySQL,Architecture,아키텍처.우기  (0) 2023.08.06
콘솔.Tag자동완성  (0) 2023.07.31
Plan.용어.설명  (0) 2023.03.22
save as CSV  (0) 2022.01.07