반응형

DB 17

데이터베이스 정규형 완벽 정리: 1정규형부터 BCNF까지 예제와 이상현상 총정리

데이터 베이스의 정규화?중복 데이터를 제거 하고 이상현상(Anomaly)을 방지하기 위해 테이블을 구조적으로 정리, 설계하는 과정입니다.데이터의 일관성과 무결성을 유지하는것을 목표로 합니다.여기서 말하는 이상현상이란?삽입이상 특정 데이터를 삽입하려 해도 다른 데이터가 없어서 입력할수 없는 현상갱신이상 중복된 데이터 중 하나만 수정하면 불일치가 발생하는 현상삭제이상 데이터를 삭제할 때 의도하지않게 다른 정보까지 손실되는 현상1.제1 정규형(1NF)모든 필드는 원자값을 가져야한다한 셀에 여러개의 값이 있으면 안된다 즉 배열이나 리스트 같은 중복 데이터가 있으면 이것을 다른 행으로 분리 해야합니다.CREATE TABLE StudentGrades_1NF ( StudentID INT, StudentNa..

DB 2025.11.05

MySQL EXPLAIN TYPE 완벽 정리: ALL, index, range, ref 차이 쉽게 이해하기

MY SQL의 쿼리 성능을 최적화 하려면 매우 많은 부분을 생각해야합니다. 단순히 인덱싱만 한다고 해서 해결되는게 아닐경우도 있는데요. 그런 최적화를 위해서 기본적으로 SELECT 문의 성능을 확인하는 EXPLAIN을 사용해야합니다.우선은 EXPAIN의 기초는 나중에하고 일단 EXPLAIN을 하게되면 나오는 스키마 중에 성능, 속도를 가장 밀접하게 알려주는 TYPE의 종류에 대해 알아보겠습니다.물론 TPYE 뿐만아니라 다른 컬럼과 무조건 종합적으로 분석해야 합니다.다른 컬럼들에 대한 설명은 추후에하고 우선은 TYPE 먼저 분석하겠습니다.우선 TYPE은 MYSQL데이터 베이스가 해당 테이블의 레코드에 어떤 방식으로 접근 하였는가? 이것을 나타내는 컬럼입니다. 즉 해당 데이터를 어떠한 방식으로 검색했는지 조..

DB/mysql 2025.10.28

MY SQL RECORD LOCK PROCESS KILL 레코드 행락 킬하기

최근 작업하다가 MYSQL에서 INNODB RECORD LOCK이 생기는 현상이 있어서 이를 해결 했던 방법을 적으려 합니다한행의 INDEX를 기준으로 LOCK을 걸어서 해당 행에 SELECT , UPDATE, DELETE 를 하지 못하도록 막아놓은 처리가 RECORD LOCK입니다.이때 LOCK 이 걸리게되면 해당 트랜잭션이 처리가 될때까지 다른 세션에서는 해당 레코드에 어떠한 쿼리를 실행해도 대기 상태에 걸리게 되는데요 이를 강제적으로 처리하는게 해당 LOCK을 건 트랜잭션을 찾아서 KILL 해버리는 방법입니다MY SQL 8.0버젼 부터는 performance_schema.data_locks 에 lock에 관한 정보가 조회되어 나옵니다.  SELECT * FROM performance_schem..

DB/mysql 2024.07.17

MY SQL 데이터베이스에서 특정 컬럼명 포함된 테이블 찾는 방법

MY SQL에서 특정 컬럼명을 포함한 모든 테이블을 조회 하고 싶을 때가 있는데 그럴땐 아래와 같은 쿼리를 작성하면 됩니다. SELECT TABLE_SCHEMA , TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'username' AND TABLE_SCHEMA = 'your_database_name'; 위처럼 INFORMATION_SCHEMA.COLUMNS 뷰는 데이터 베이스의 테이블의 컬럼정보를 제공하며 test라는 컬럼을 column_name에 조건으로 걸어주게된다면 아래와 같이 test라는 컬럼명을 포함한 테이블 명칭이 조회되어 나오게 됩니다. 뿐만아니라 INFORMATION_SCHEMA.COLUMNS 뷰의 컬럼의 내용은 아래와 같습..

DB/mysql 2024.04.14

MySQL 기본 인코딩 UTF-8설정하기

mysql을 사용할때 인코딩이 utf-8로 설정이 안되어 있어서 한글이 깨지는 현상이 있을 때 매번 alter 구문이나 create 구문으로 인코딩을 직접 지정하려니 힘들어서 기본 인코딩 설정법을 알아보겠습니다. 환경은 window 로컬환경이며 my Sql versison 은 8.0.35 입니다. 버젼 확인법은 아래쿼리를 실행시켜서 나오는 vestion 값 입니다. my sql 버젼 확인 쿼리 : SHOW VARIABLES LIKE '%verstion' 1. show variables LIKE '%dir%' 쿼리를 통해서 폴더 경로 파악 위 쿼리를 통해서 폴더의 경로를 파악하고 my.ini파일을 찾는다 2.cmd를 관리자 권한으로 실행한 뒤 아래 명령어 실행 notepad C:\Program Files\..

DB/mysql 2023.12.25

MySql Unable to connect to foreign data source: Can't connect to MySQL server on 간단 해결

My Sql Federated 작업을 하다가 위와 같은 오류가 났습니다. 위 오류는 A서버에서 B서버로 연결을 시도할 때 발생한 오류로 여러가지 시도와 검색을 하였으나 발견하기 힘든 오류였습니다. 그러나 B서버에서 A서버로의 Federated가 성공하는 것을 보고 단순한 권한 설정과 혹은 방화벽 허용 문제라는 것을 금방 알았습니다. 저의 경우에는 위 문제는 단순한 ip 허용 문제였지만 이외에도 max connection 설정, 권한문제 등등 많은 케이스가 있는 것 같습니다.

DB/mysql 2023.12.11

My Sql 1429 : Unable to connect to foreign data source connection error

my sql에서 federated를 사용하여 db를 서로 연결시키는 작업을 진행하다가 위 오류를 마주 했습니다. 해당 내용을 찾아보니 원본서버에 connection 수가 너무 많아서 생기는 문제라고 합니다. 해결 하는 방법은 크게 2가지 정도가 있는 것 같은데.. 제가 해본건 1번 뿐 1.쿼리 or 설정파일 변경 SHOW VARIABLES LIKE '%error%'; SET GLOBAL max_connect_errors = '지정값' 위 쿼리를 사용하여 max_connection의 수를 늘리는 방법과 my.ini 또는 my.cnf 의 설정에 들어가서 아래 설정을 넣는 방법이 있습니다. max_connections = '지정값' wait_timeout = '지정값' 2.해당 db를 사용하는 서비스 프로그램..

DB/mysql 2023.12.06

MySql LOAD DATA LOCAL 사용법 not found error 처리

LOAD DATA LOACAL INFILE 은 my sql에서 txt나 csv형식의 데이터 파일을 읽어와서 db에 insert 시키는 방법입니다. MY SQL이 위치되어 있는 LOCAL 에서 해당 파일의 절대 경로를 입력하여 사용가능하며 CHARACTER 로 인코딩을 지정 하고 FIELDS TERMINATED 로 컬럼 구분자 LINES TERMINTED 로 행 구분자를 지정해 줍니다. 쿼리문은 아래와 같습니다. LOAD DATA LOCAL INFILE '파일명' INTO TABLE 테이블명 CHARACTER SET UTF8MB4 FIELDS TERMINATED BY '\t' -- 컬럼 구분자 LINES TERMINATED BY '\n' -- 행 구분자 + 파일명과 테이블명을 제대로 입력했는데 not fo..

DB/mysql 2023.12.05

MSSQL create database 사용 권한이 거부되었습니다 해결 법

MSSQL을 사용할때 'create database 사용 권한이 거부되었습니다' 라는 문구가 나올 때가 있습니다. 이는 해당 로그인 계정에 create 권한이 없기 때문에 발생하는 문제로 mssql을 사용하여 응용 어플리케이션에 연결 할때 등 mssql의 로그인 계정에 세팅에 관한 문제입니다. 이를 해결하기 위해서는 1.SSMS(SQL Server Management Studio) 에 접속 2. 보안 폴더- 로그인 폴더에서 권한을 넣어줄 계정 선택 3.해당 계정 더블 클릭 후 좌측의 서버 역할 클릭 4. dbcreator ,public , sysadmin 체크 선택 후 확인 아래는 서버역할을 msdn에서 가져온 것 입니다. sysadmin sysadmin 고정 서버 역할의 멤버는 서버에서 모든 작업을 수..

DB/mssql 2023.04.11

ORA-00911 문자가 부적합 합니다. 오류 원인 해결

C#어플리케이션에서 쿼리를 날렸을때 ORA-00911 문자가 부적합 합니다. 라는 오류가 발생했습니다. 해당 오류의 쿼리문을 찾아서 DB에서 실행 해봤지만 문제가 없이 정상적으로 실행이 되었습니다. 소스에서는 실행이 안되나 DBMS에서 쿼리를 사용하면 실행이 안되는 오류라면 아래방법을 확인 하면 됩니다. 해결법 소스상에 ; , .등 기호가 잘못 들어가 있는지 확인하면 해결이 됩니다. (저의 케이스에는 ;(세미콜론)이 로직에 작성되어 있어 생긴 에러였습니다.)

DB/oracle 2023.04.04
반응형